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