fix-confirm

This commit is contained in:
tonyrewin 2022-10-05 19:52:17 +03:00
parent 21eb082aa3
commit 99a1d5a867
3 changed files with 7 additions and 17 deletions

View File

@ -2,7 +2,7 @@ from authlib.integrations.starlette_client import OAuth
from starlette.responses import RedirectResponse from starlette.responses import RedirectResponse
from auth.identity import Identity from auth.identity import Identity
from auth.tokenstorage import TokenStorage from auth.tokenstorage import TokenStorage
from settings import OAUTH_CLIENTS, BACKEND_URL, OAUTH_CALLBACK_URL from settings import OAUTH_CLIENTS
oauth = OAuth() oauth = OAuth()
@ -66,7 +66,7 @@ async def oauth_login(request):
provider = request.path_params["provider"] provider = request.path_params["provider"]
request.session["provider"] = provider request.session["provider"] = provider
client = oauth.create_client(provider) client = oauth.create_client(provider)
redirect_uri = "%s/%s" % (BACKEND_URL, "oauth_authorize") redirect_uri = "https://newapi.discours.io/oauth-authorize"
return await client.authorize_redirect(request, redirect_uri) return await client.authorize_redirect(request, redirect_uri)
@ -84,6 +84,6 @@ async def oauth_authorize(request):
} }
user = Identity.oauth(user_input) user = Identity.oauth(user_input)
session_token = await TokenStorage.create_session(user) session_token = await TokenStorage.create_session(user)
response = RedirectResponse(url=OAUTH_CALLBACK_URL) response = RedirectResponse(url="https://new.discours.io/confirm")
response.set_cookie("token", session_token) response.set_cookie("token", session_token)
return response return response

View File

@ -13,7 +13,7 @@ from auth.authenticate import JWTAuthenticate
from auth.oauth import oauth_login, oauth_authorize from auth.oauth import oauth_login, oauth_authorize
from base.redis import redis from base.redis import redis
from base.resolvers import resolvers from base.resolvers import resolvers
from resolvers.auth import confirm_email_handler # from resolvers.auth import confirm_email_handler
from resolvers.zine import ShoutsCache from resolvers.zine import ShoutsCache
from services.main import storages_init from services.main import storages_init
from services.stat.reacted import ReactedStorage from services.stat.reacted import ReactedStorage
@ -54,8 +54,8 @@ async def shutdown():
routes = [ routes = [
Route("/oauth/{provider}", endpoint=oauth_login), Route("/oauth/{provider}", endpoint=oauth_login),
Route("/oauth_authorize", endpoint=oauth_authorize), Route("/oauth-authorize", endpoint=oauth_authorize),
Route("/confirm-email/{token}", endpoint=confirm_email_handler), # should be called on client # Route("/confirm-email/{token}", endpoint=confirm_email_handler), # should be called on client
] ]
app = Starlette( app = Starlette(

View File

@ -3,7 +3,6 @@ from datetime import datetime
from graphql.type import GraphQLResolveInfo from graphql.type import GraphQLResolveInfo
from transliterate import translit from transliterate import translit
from starlette.responses import RedirectResponse
from auth.tokenstorage import TokenStorage from auth.tokenstorage import TokenStorage
from auth.authenticate import login_required from auth.authenticate import login_required
@ -19,7 +18,7 @@ from base.orm import local_session
from base.resolvers import mutation, query from base.resolvers import mutation, query
from orm import User, Role from orm import User, Role
from resolvers.profile import get_user_subscriptions from resolvers.profile import get_user_subscriptions
from settings import SESSION_TOKEN_HEADER, CONFIRM_CALLBACK_URL from settings import SESSION_TOKEN_HEADER
@mutation.field("refreshSession") @mutation.field("refreshSession")
@ -62,15 +61,6 @@ async def confirm_email(_, _info, confirm_token):
return {"error": "email is not confirmed"} return {"error": "email is not confirmed"}
async def confirm_email_handler(request):
token = request.path_params["token"] # one time
request.session["token"] = token
res = await confirm_email(None, token)
response = RedirectResponse(url=CONFIRM_CALLBACK_URL)
response.set_cookie("token", res["token"]) # session
return response
def create_user(user_dict): def create_user(user_dict):
user = User(**user_dict) user = User(**user_dict)
user.roles.append(Role.default_role) user.roles.append(Role.default_role)