Method account.register fix

This commit is contained in:
vlados31 2022-09-19 00:11:08 +03:00
parent 63d40fd39e
commit 105b30f68c
4 changed files with 35 additions and 17 deletions

View File

@ -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'

View File

@ -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):

View File

@ -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):

View File

@ -114,6 +114,7 @@ header > * {
@media screen and (max-width: 900px) {
#header-wrapper {
display: block;
margin: 1em 0;
}
header {