def login_with_discord(sio: ServerApp, code: str): oauth = OAuth2Session( client_id=sio.app.config["DISCORD_CLIENT_ID"], scope=["identify"], redirect_uri=sio.app.config["DISCORD_REDIRECT_URI"], ) access_token = oauth.fetch_token( "https://discord.com/api/oauth2/token", code=code, client_secret=sio.app.config["DISCORD_CLIENT_SECRET"], ) flask.session["DISCORD_OAUTH2_TOKEN"] = access_token discord_user = sio.discord.fetch_user() user: User = User.get_or_create(discord_id=discord_user.id, defaults={"name": discord_user.name})[0] if user.name != discord_user.name: user.name = discord_user.name user.save() with sio.session() as session: session["user-id"] = user.id session["discord-access-token"] = access_token return _create_client_side_session(sio, user)
def _create_session_with_discord_token(sio: ServerApp, access_token: str) -> Tuple[User, dict]: flask.session["DISCORD_OAUTH2_TOKEN"] = access_token discord_user = sio.discord.fetch_user() user: User = User.get_or_create(discord_id=discord_user.id, defaults={"name": discord_user.name})[0] if user.name != discord_user.name: user.name = discord_user.name user.save() if sio.enforce_role is not None: if not sio.enforce_role.verify_user(discord_user.id): logger().info( "User %s is not authorized for connecting to the server", discord_user.name) raise UserNotAuthorized() with sio.session() as session: session["user-id"] = user.id session["discord-access-token"] = access_token return user, _create_client_side_session(sio, user)