Beispiel #1
0
        public async Task <ActionResult <LoginToken> > OAuthCallback([FromQuery] string code)
        {
            var discordAuthToken = await _oAuthService.ExchangeCodeForAccessToken(code);

            if (discordAuthToken == null)
            {
                return(Unauthorized("Unable to get access token!"));
            }

            var response = await _discordLoginClient.GetResponse <DiscordUser, NotFoundResponse>(new LoginUserRequest
            {
                AuthToken = discordAuthToken,
            });

            if (response.Is(out Response <NotFoundResponse> _))
            {
                return(Unauthorized("Unable to find user!"));
            }
            var user = (DiscordUser)response.Message;

            var accessToken = _jwtService.CreateAccessTokenFor(user);

            return(Ok(new LoginToken
            {
                AccessToken = accessToken,
                User = user,
            }));
        }
Beispiel #2
0
        public async Task <ActionResult> AuthCallback([FromQuery] string code)
        {
            var discordAuthToken = await _discordOAuthService.ExchangeCodeForAccessToken(code);

            if (discordAuthToken == null)
            {
                return((ApiResult <string>)Unauthorized("Unable to get access token!"));
            }

            var discordUser = await _natsDiscordService.GetUserFromAuthToken(discordAuthToken);

            var user = await _natsUserService.LoginDiscordUser(discordUser.Adapt <MyIUser>());

            var accessToken = _jwtService.CreateAccessTokenFor(user);

            return(Redirect(_config["Discord:FrontendUrl"]
                            .Replace("{access_token}", accessToken)
                            .Replace("{refresh_token}", user.RefreshToken.ToString())
                            ));
        }