Skip to content

Commit

Permalink
Merge pull request #7 from Team-MailedIt/feature-login
Browse files Browse the repository at this point in the history
feat: fix app name account->member
  • Loading branch information
kynzun authored Dec 25, 2021
2 parents 4902fef + 22a8849 commit 5213050
Show file tree
Hide file tree
Showing 16 changed files with 136 additions and 53 deletions.
5 changes: 0 additions & 5 deletions account/apps.py

This file was deleted.

31 changes: 0 additions & 31 deletions account/migrations/0002_candidate_vote.py

This file was deleted.

File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions member/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class MemberConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'member'
45 changes: 45 additions & 0 deletions member/managers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from django.contrib.auth.models import BaseUserManager


class UserManager(BaseUserManager):
def _create_user(self, email, username, password, **extra_fields):

"""
Create and save a user with the given username, email, and password.
"""

email = self.normalize_email(email)

username = self.model.normalize_username(username)

user = self.model(email=email, username=username, **extra_fields)

user.set_password(password)

user.save(using=self._db)

return user

def create_user(self, email, username, password=None, **extra_fields):

extra_fields.setdefault("is_staff", False)

extra_fields.setdefault("is_superuser", False)

return self._create_user(email, username, password, **extra_fields)

def create_superuser(self, email, username, password, **extra_fields):

extra_fields.setdefault("is_staff", True)

extra_fields.setdefault("is_superuser", True)

if extra_fields.get("is_staff") is not True:
raise ValueError("Superuser must have is_staff=True.")

if extra_fields.get("is_superuser") is not True:
raise ValueError("Superuser must have is_superuser=True.")

return self._create_user(email, username, password, **extra_fields)
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Generated by Django 3.0.8 on 2021-11-25 14:25
# Generated by Django 3.0.8 on 2021-12-22 19:40

import django.contrib.auth.models
from django.conf import settings
import django.contrib.auth.validators
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone


Expand All @@ -29,7 +30,7 @@ class Migration(migrations.Migration):
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('part', models.CharField(choices=[('FE', '프론트엔드'), ('BE', '백엔드')], max_length=2)),
('part', models.CharField(choices=[('frontend', 'frontend'), ('backend', 'backend')], max_length=10)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')),
],
Expand All @@ -38,8 +39,21 @@ class Migration(migrations.Migration):
'verbose_name_plural': 'users',
'abstract': False,
},
managers=[
('objects', django.contrib.auth.models.UserManager()),
),
migrations.CreateModel(
name='Candidate',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=10)),
('part', models.CharField(choices=[('frontend', 'frontend'), ('backend', 'backend')], max_length=10)),
],
),
migrations.CreateModel(
name='Vote',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vote_candidate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cand_votes', to='member.Candidate')),
('vote_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_votes', to=settings.AUTH_USER_MODEL)),
],
),
]
File renamed without changes.
18 changes: 12 additions & 6 deletions account/models.py → member/models.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
from django.db import models
from django.contrib.auth.models import AbstractUser, BaseUserManager
from django.contrib.auth.models import AbstractUser
from .managers import UserManager

# Create your models here.

PART_CHOICES = [
("FE", "프론트엔드"),
("BE", "백엔드"),
("frontend", "frontend"),
("backend", "backend"),
]


class User(AbstractUser):
part = models.CharField(max_length=2, choices=PART_CHOICES)
part = models.CharField(max_length=10, choices=PART_CHOICES)

objects = UserManager()
REQUIRED_FIELDS = ["email"]


class Candidate(models.Model):
name = models.CharField(max_length=30)
part = models.CharField(max_length=2, choices=PART_CHOICES)
name = models.CharField(max_length=10)
part = models.CharField(max_length=10, choices=PART_CHOICES)

def __str__(self):
return self.name
Expand Down
4 changes: 2 additions & 2 deletions account/serializers.py → member/serializers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from django.db.models.base import Model
from rest_framework import serializers
from django.contrib.auth import get_user_model
from .models import Candidate, Vote
Expand All @@ -9,11 +8,12 @@
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("username", "password", "part")
fields = ("username", "email", "password", "part")

def create(self, validated_data):
user = User(
username=validated_data.get("username"),
email=validated_data.get("email"),
part=validated_data.get("part"),
)
user.set_password(validated_data.get("password"))
Expand Down
File renamed without changes.
2 changes: 2 additions & 0 deletions account/urls.py → member/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
# path("token/refresh", TokenRefreshView.as_view(), name="token_refresh"),
path("signin", AuthView.as_view()),
path("signup", RegisterAPIView.as_view()),
path("duplicate/username", UsernameDuplicateView.as_view()),
path("duplicate/email", EmailDuplicateView.as_view()),
path("candidate", CandidateListAPIView.as_view()),
path("candidate/result", CandidateResultAPIView.as_view()),
path("candidate/<int:pk>", CandidateDetailAPIView.as_view()),
Expand Down
22 changes: 21 additions & 1 deletion account/views.py → member/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,13 @@ class RegisterAPIView(APIView):
def post(self, request):
user_serializer = RegisterSerializer(data=request.data)
if user_serializer.is_valid():
user = user_serializer.save()
try:
user = user_serializer.save()
except:
return Response(
{"message": "email are required!!"},
status=status.HTTP_400_BAD_REQUEST,
)
# access jwt token
token = TokenObtainPairSerializer.get_token(user)
refresh_token = str(token)
Expand All @@ -38,6 +44,20 @@ def post(self, request):
return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class UsernameDuplicateView(APIView):
def post(self, request):
username = request.data.get("username")
isExist = User.objects.filter(username=username).exists()
return Response(isExist, status=status.HTTP_200_OK)


class EmailDuplicateView(APIView):
def post(self, request):
email = request.data.get("email")
isExist = User.objects.filter(email=email).exists()
return Response(isExist, status=status.HTTP_200_OK)


# 로그인
class AuthView(APIView):
# 유저정보 확인
Expand Down
10 changes: 10 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
asgiref==3.4.1
certifi==2021.10.8
cffi==1.15.0
charset-normalizer==2.0.9
cryptography==35.0.0
defusedxml==0.7.1
Django==3.0.8
django-allauth==0.47.0
django-cors-headers==3.10.0
django-environ==0.4.5
djangorestframework==3.12.4
djangorestframework-simplejwt==5.0.0
gunicorn==20.1.0
idna==3.3
oauthlib==3.1.1
pycparser==2.21
PyJWT==2.3.0
PyMySQL==1.0.2
python3-openid==3.2.0
pytz==2021.3
requests==2.26.0
requests-oauthlib==1.3.0
sqlparse==0.4.2
urllib3==1.26.7
19 changes: 17 additions & 2 deletions vote_mailedit/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

ALLOWED_HOSTS = []

AUTH_USER_MODEL = "account.User"
AUTH_USER_MODEL = "member.User"

# Application definition

Expand All @@ -43,10 +43,25 @@
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"account",
"django.contrib.sites",
# allauth
"allauth",
"allauth.account",
"allauth.socialaccount",
# provider
"allauth.socialaccount.providers.google",
"member",
"corsheaders",
]

# Social Login
AUTHENTICATION_BACKENDS = (
"django.contrib.auth.backends.ModelBackend",
"allauth.account.auth_backends.AuthenticationBackend",
)

SITE_ID = 1

MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
Expand Down
3 changes: 2 additions & 1 deletion vote_mailedit/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@

urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include("account.urls")),
path("api/", include("member.urls")),
path("accounts/", include("allauth.urls")),
]

if base.DEBUG:
Expand Down

0 comments on commit 5213050

Please sign in to comment.