diff --git a/auth/email.py b/auth/email.py index 6ed0b1c5..df8c1a37 100644 --- a/auth/email.py +++ b/auth/email.py @@ -4,12 +4,12 @@ from starlette.exceptions import HTTPException from auth.authenticate import EmailAuthenticate -from settings import MAILGUN_API_KEY, MAILGUN_DOMAIN +from settings import BACKEND_URL, MAILGUN_API_KEY, MAILGUN_DOMAIN MAILGUN_API_URL = "https://api.mailgun.net/v3/%s/messages" % (MAILGUN_DOMAIN) MAILGUN_FROM = "postmaster " % (MAILGUN_DOMAIN) -AUTH_URL = "https://localhost:8080/email_authorize" +AUTH_URL = "%s/email_authorize" % (BACKEND_URL) async def send_auth_email(user): token = await EmailAuthenticate.get_email_token(user) diff --git a/resolvers/auth.py b/resolvers/auth.py index 6eeab110..0ed51d80 100644 --- a/resolvers/auth.py +++ b/resolvers/auth.py @@ -41,12 +41,16 @@ async def register(*_, email: str, password: str = ""): @query.field("signIn") -async def login(_, info: GraphQLResolveInfo, email: str, password: str): +async def login(_, info: GraphQLResolveInfo, email: str, password: str = ""): with local_session() as session: orm_user = session.query(User).filter(User.email == email).first() if orm_user is None: return {"error" : "invalid email"} + if not password: + await send_auth_email(orm_user) + return {"error" : ""} + try: device = info.context["request"].headers['device'] except KeyError: diff --git a/schema.graphql b/schema.graphql index 2d445498..a4efc3d8 100644 --- a/schema.graphql +++ b/schema.graphql @@ -81,7 +81,7 @@ type Mutation { type Query { # auth isEmailFree(email: String!): Result! - signIn(email: String!, password: String!): AuthResult! + signIn(email: String!, password: String): AuthResult! signOut: Result! # user profile getCurrentUser: UserResult! diff --git a/settings.py b/settings.py index 70a806d0..74ad764f 100644 --- a/settings.py +++ b/settings.py @@ -3,6 +3,8 @@ from os import environ PORT = 8080 +BACKEND_URL = "https://localhost:8080" + DB_URL = environ.get("DB_URL") or "sqlite:///db.sqlite3" JWT_ALGORITHM = "HS256" JWT_SECRET_KEY = "8f1bd7696ffb482d8486dfbc6e7d16dd-secret-key"