fix-confirm
This commit is contained in:
parent
21eb082aa3
commit
99a1d5a867
|
@ -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
|
||||||
|
|
6
main.py
6
main.py
|
@ -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(
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user