Method account.register fix
This commit is contained in:
parent
63d40fd39e
commit
105b30f68c
@ -1,5 +1,6 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import PermissionsMixin, AbstractBaseUser, BaseUserManager
|
||||
from django.core.validators import *
|
||||
|
||||
|
||||
class SiteAccountManager(BaseUserManager):
|
||||
@ -39,7 +40,11 @@ class SiteUser(AbstractBaseUser, PermissionsMixin):
|
||||
surname = models.CharField(max_length=60, verbose_name="Фамилия")
|
||||
name = models.CharField(max_length=60, verbose_name="Имя")
|
||||
email = models.EmailField(unique=True, verbose_name="Email")
|
||||
phone = models.CharField(unique=True, max_length=16, verbose_name="Телефон")
|
||||
phone = models.CharField(unique=True, max_length=16, verbose_name="Телефон", validators=[
|
||||
RegexValidator(regex="^\\+?[0-9]*$"),
|
||||
MaxLengthValidator(limit_value=16),
|
||||
MinLengthValidator(limit_value=6)
|
||||
])
|
||||
is_staff = models.BooleanField(default=False, verbose_name="Разрешение на вход в админку")
|
||||
REQUIRED_FIELDS = ['name', 'surname', 'phone']
|
||||
USERNAME_FIELD = 'email'
|
||||
|
@ -18,7 +18,7 @@ API_ERROR_INVALID_PASSWORD = (502, 'invalid password')
|
||||
API_ERROR_INVALID_TOKEN = (503, 'invalid token')
|
||||
|
||||
# времненное решение, позже нужно будет заменить на конкретные ошибки
|
||||
API_ERROR_USER_REGISTER = (510, 'user register error')
|
||||
API_ERROR_USER_REGISTER = (510, 'user registration error')
|
||||
|
||||
|
||||
def make_error_object(ex: Exception):
|
||||
|
@ -1,7 +1,9 @@
|
||||
from .api_errors import *
|
||||
import traceback
|
||||
|
||||
import account.models
|
||||
from .api_utils import *
|
||||
from .models import *
|
||||
from account.forms import UserCreationForm
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
|
||||
def _reqire_access_token(params):
|
||||
@ -29,20 +31,30 @@ def account_register(params):
|
||||
email = api_get_param_str(params, "email")
|
||||
password = api_get_param_str(params, "password")
|
||||
|
||||
form = UserCreationForm({
|
||||
"email": email,
|
||||
"phone": phone,
|
||||
"name": name,
|
||||
"surname": surname,
|
||||
"password1": password,
|
||||
"password2": password,
|
||||
})
|
||||
user = account.models.SiteUser(
|
||||
name=name,
|
||||
surname=surname,
|
||||
phone=phone,
|
||||
email=email,
|
||||
password=password
|
||||
)
|
||||
|
||||
form.validate_unique()
|
||||
if form.is_valid():
|
||||
pass
|
||||
else:
|
||||
raise Exception(API_ERROR_MISSING_ARGUMENT)
|
||||
try:
|
||||
user.full_clean()
|
||||
user.save()
|
||||
|
||||
try:
|
||||
token = UserToken.create_token(user)
|
||||
return make_response({"access_token": token.access_token})
|
||||
|
||||
except Exception as ex:
|
||||
# если вдруг токен нельзя создать
|
||||
user.delete()
|
||||
raise ex
|
||||
|
||||
except ValidationError as e:
|
||||
traceback.print_exc()
|
||||
raise Exception(API_ERROR_USER_REGISTER, e.messages)
|
||||
|
||||
|
||||
def account_get(params):
|
||||
|
@ -114,6 +114,7 @@ header > * {
|
||||
@media screen and (max-width: 900px) {
|
||||
#header-wrapper {
|
||||
display: block;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
header {
|
||||
|
Reference in New Issue
Block a user