public async Task <GoogleAuthenticateResponse> ValidateGoogleToken(GoogleAuthenticateRequest model)
        {
            using (var client = new HttpClient())
            {
                var response = await client.GetAsync($"{GOOGLE_TOKEN_API_BASE}{model.GoogleToken}");

                if (response.IsSuccessStatusCode)
                {
                    var content = await response.Content.ReadAsStringAsync();

                    return(JsonConvert.DeserializeObject <GoogleAuthenticateResponse>(content));
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        private IActionResult ProcessGoogleRequest(AuthenticateRequest model)
        {
            var googleRequest = new GoogleAuthenticateRequest
            {
                GoogleToken = model.GoogleToken
            };

            var response = _loginService.AuthenticateWithGoogle(googleRequest);

            if (response == null)
            {
                return(BadRequest(new { message = "Invalid token" }));
            }

            return(Ok(response));
        }
Exemplo n.º 3
0
        public AuthenticateResponse AuthenticateWithGoogle(GoogleAuthenticateRequest request)
        {
            var result = _googleTokenValidator.ValidateGoogleToken(request)?.Result;

            if (result == null)
            {
                return(null);
            }

            var user = _users.FilterBy(x => x.UserName == result.Email).FirstOrDefault();

            var userResult = user ?? CreateFromGoogleInfo(result);

            var token = _jwtTokenGenerator.GenerateJwtToken(userResult);

            return(new AuthenticateResponse(userResult, token));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Google([FromBody] GoogleAuthenticateRequest req)
        {
            GoogleJsonWebSignature.Payload payload = await GoogleJsonWebSignature.ValidateAsync(req.TokenId, new GoogleJsonWebSignature.ValidationSettings());

            string token        = null;
            string refreshToken = null;

            Guid userId = await _authenticateService.TryRegisterUserFromGoogle(payload);

            if (userId != Guid.Empty)
            {
                token = await _authenticateService.GenerateTokenAsync(payload.Email);

                refreshToken = _authenticateService.GenerateRefreshToken(payload.Email);
            }

            return(Ok(
                       new
            {
                token,
                refreshToken
            }));
        }