def browser_discord_login_callback(): sio.discord.callback() discord_user = sio.discord.fetch_user() user: User = User.get(discord_id=discord_user.id) if user is None: return "Unknown user", 404 return flask.redirect(flask.url_for("browser_me"))
def _handler(**kwargs): try: user: User = User.get( discord_id=self.discord.fetch_user().id) if user is None or not user.admin: return "User not authorized", 403 return handler(user, **kwargs) except flask_discord.exceptions.Unauthorized: return "Unknown user", 404
def _handler(**kwargs): try: user: User if not self.app.debug: user = User.get( discord_id=self.discord.fetch_user().id) if user is None or not user.admin: return "User not authorized", 403 else: user = list(User.select().limit(1))[0] return handler(user, **kwargs) except flask_discord.exceptions.Unauthorized: return "Unknown user", 404
def test_login_with_discord(mock_fetch_token: MagicMock, clean_database, flask_app, existing): # Setup sio = MagicMock() session = {} sio.session.return_value.__enter__.return_value = session sio.get_session.return_value = session mock_fetch_token.return_value = "access_token" sio.fernet_encrypt.encrypt.return_value = b"encrypted" discord_user = sio.discord.fetch_user.return_value discord_user.id = 1234 discord_user.name = "A Name" if existing: User.create(discord_id=discord_user.id, name="Someone else") # Run with flask_app.test_request_context(): result = user_session.login_with_discord(sio, "code") # Assert mock_fetch_token.assert_called_once_with( ANY, "https://discord.com/api/oauth2/token", code="code", client_secret=sio.app.config["DISCORD_CLIENT_SECRET"], ) user = User.get(User.discord_id == 1234) assert user.name == "A Name" assert session == { "user-id": user.id, "discord-access-token": "access_token", } assert result == { "user": user.as_json, "sessions": [], "encoded_session_b85": b'Wo~0~d2n=PWB', }