authentik.sources.oauth.types.discord
Discord OAuth Views
1"""Discord OAuth Views""" 2 3from typing import Any 4 5from authentik.sources.oauth.types.registry import SourceType, registry 6from authentik.sources.oauth.views.callback import OAuthCallback 7from authentik.sources.oauth.views.redirect import OAuthRedirect 8 9 10class DiscordOAuthRedirect(OAuthRedirect): 11 """Discord OAuth2 Redirect""" 12 13 def get_additional_parameters(self, source): # pragma: no cover 14 return { 15 "scope": ["email", "identify"], 16 "prompt": "none", 17 } 18 19 20class DiscordOAuth2Callback(OAuthCallback): 21 """Discord OAuth2 Callback""" 22 23 24@registry.register() 25class DiscordType(SourceType): 26 """Discord Type definition""" 27 28 callback_view = DiscordOAuth2Callback 29 redirect_view = DiscordOAuthRedirect 30 verbose_name = "Discord" 31 name = "discord" 32 33 authorization_url = "https://discord.com/api/oauth2/authorize" 34 access_token_url = "https://discord.com/api/oauth2/token" # nosec 35 profile_url = "https://discord.com/api/users/@me" 36 37 def get_base_user_properties(self, info: dict[str, Any], **kwargs) -> dict[str, Any]: 38 return { 39 "username": info.get("username"), 40 "email": info.get("email", None), 41 "name": info.get("username"), 42 }
11class DiscordOAuthRedirect(OAuthRedirect): 12 """Discord OAuth2 Redirect""" 13 14 def get_additional_parameters(self, source): # pragma: no cover 15 return { 16 "scope": ["email", "identify"], 17 "prompt": "none", 18 }
Discord OAuth2 Redirect
Discord OAuth2 Callback
25@registry.register() 26class DiscordType(SourceType): 27 """Discord Type definition""" 28 29 callback_view = DiscordOAuth2Callback 30 redirect_view = DiscordOAuthRedirect 31 verbose_name = "Discord" 32 name = "discord" 33 34 authorization_url = "https://discord.com/api/oauth2/authorize" 35 access_token_url = "https://discord.com/api/oauth2/token" # nosec 36 profile_url = "https://discord.com/api/users/@me" 37 38 def get_base_user_properties(self, info: dict[str, Any], **kwargs) -> dict[str, Any]: 39 return { 40 "username": info.get("username"), 41 "email": info.get("email", None), 42 "name": info.get("username"), 43 }
Discord Type definition
callback_view =
<class 'DiscordOAuth2Callback'>
redirect_view =
<class 'DiscordOAuthRedirect'>
def
get_base_user_properties(self, info: dict[str, typing.Any], **kwargs) -> dict[str, typing.Any]:
38 def get_base_user_properties(self, info: dict[str, Any], **kwargs) -> dict[str, Any]: 39 return { 40 "username": info.get("username"), 41 "email": info.get("email", None), 42 "name": info.get("username"), 43 }
Get base user properties for enrollment/update