diff --git a/auth/email.py b/auth/email.py index dad004a7..ca369aa8 100644 --- a/auth/email.py +++ b/auth/email.py @@ -4,26 +4,22 @@ from settings import MAILGUN_API_KEY, MAILGUN_DOMAIN api_url = "https://api.mailgun.net/v3/%s/messages" % MAILGUN_DOMAIN noreply = "discours.io " % MAILGUN_DOMAIN -subject = "Confirm email" -tmplt = """ - Follow the link to authorize - - """ - async def send_auth_email(user, token): try: - to = "%s <%s>" % (user.username, user.email) - url_with_token = "https://newapi.discours.io/confirm/" + token + to = "%s <%s>" % (user.name, user.email) + # TODO: i18n + subject = "Confirm email" + template = "email_confirmation_ru" + response = requests.post( api_url, auth=("api", MAILGUN_API_KEY), - data={ - "from": noreply, - "to": to, - "subject": subject, - "html": tmplt % url_with_token, - }, + data={"from": noreply, + "to": to, + "subject": subject, + "template": template, + "h:X-Mailgun-Variables": "{ \"token\": \"%s\" }" % token} ) response.raise_for_status() except Exception as e: diff --git a/resolvers/auth.py b/resolvers/auth.py index 318de3cf..3f4e8f32 100644 --- a/resolvers/auth.py +++ b/resolvers/auth.py @@ -80,8 +80,8 @@ def create_user(user_dict): return user -def generate_unique_slug(username): - slug = translit(username, "ru", reversed=True).replace(".", "-").lower() +def generate_unique_slug(name): + slug = translit(name, "ru", reversed=True).replace(".", "-").lower() with local_session() as session: c = 1 user = session.query(User).where(User.slug == slug).first() @@ -95,26 +95,26 @@ def generate_unique_slug(username): @mutation.field("registerUser") -async def register(_, _info, email: str, password: str = "", username: str = ""): +async def register(_, _info, email: str, password: str = "", name: str = ""): """creates new user account""" with local_session() as session: user = session.query(User).filter(User.email == email).first() if user: raise OperationNotAllowed("User already exist") else: - username = username or email.split("@")[0] + slug = generate_unique_slug(name) user_dict = { "email": email, - "username": username, - "slug": generate_unique_slug(username) + "username": email, + "name": name, + "slug": slug } if password: user_dict["password"] = Password.encode(password) user = create_user(user_dict) - if not password: - user = await auth_send_link(_, _info, email) + await auth_send_link(_, _info, email) return {"user": user} diff --git a/schema.graphql b/schema.graphql index 79edea19..a3b47bf8 100644 --- a/schema.graphql +++ b/schema.graphql @@ -154,7 +154,7 @@ type Mutation { # auth refreshSession: AuthResult! - registerUser(email: String!, password: String, username: String): AuthResult! + registerUser(email: String!, password: String, name: String): AuthResult! sendLink(email: String!): Result! confirmEmail(code: String!): AuthResult!