add user slug on register

This commit is contained in:
knst-kotov 2021-10-24 13:33:45 +03:00
parent 205e990aa9
commit e390b2d435

View File

@ -1,10 +1,12 @@
from graphql import GraphQLResolveInfo from graphql import GraphQLResolveInfo
from datetime import datetime, timedelta from datetime import datetime, timedelta
from transliterate import translit
from urllib.parse import quote_plus
from auth.authenticate import login_required from auth.authenticate import login_required
from auth.authorize import Authorize from auth.authorize import Authorize
from auth.identity import Identity from auth.identity import Identity
from auth.password import Password from auth.password import Password
from auth.validations import CreateUser
from auth.email import send_confirm_email, send_auth_email from auth.email import send_confirm_email, send_auth_email
from orm import User from orm import User
from orm.base import local_session from orm.base import local_session
@ -26,16 +28,22 @@ async def confirm(*_, confirm_token):
@mutation.field("registerUser") @mutation.field("registerUser")
async def register(*_, email: str, password: str = ""): async def register(*_, email: str, password: str = ""):
inp = { "email": email, "password": password} with local_session() as session:
create_user = CreateUser(**inp) user = session.query(User).filter(User.email == email).first()
create_user.username = email.split('@')[0] if user:
return {"error" : "user already exist"}
user_dict = { "email": email }
username = email.split('@')[0]
user_dict["username"] = username
user_dict["slug"] = quote_plus(translit(username, 'ru', reversed=True).replace('.', '-').lower())
if not password: if not password:
user = User.create(**create_user.dict()) user = User.create(**user_dict)
await send_confirm_email(user) await send_confirm_email(user)
return { "user": user } return { "user": user }
else: else:
create_user.password = Password.encode(create_user.password) user_dict["password"] = Password.encode(password)
user = User.create(**create_user.dict()) user = User.create(**user_dict)
token = await Authorize.authorize(user) token = await Authorize.authorize(user)
return {"user": user, "token": token } return {"user": user, "token": token }