Ejemplo n.º 1
0
        public async Task <IActionResult> Google(GoogleLoginRequest userView)
        {
            try
            {
                var payload = GoogleJsonWebSignature.ValidateAsync(userView.TokenId, new GoogleJsonWebSignature.ValidationSettings()).Result;
                var user    = await _userManager.FindByEmailAsync(payload.Email);

                _userStore.TokenIdVerified = true;

                if (user == null)
                {
                    return(new NotFoundObjectResult(new { type = 0, message = "Account doesn't exist", googleName = payload.Name, email = payload.Email }));
                }
                if (!user.EmailConfirmed)
                {
                    return(new BadRequestObjectResult(new { type = 1, message = "You must confirm your email before login" }));
                }
                var token = _jwtGenerator.VerifyAndReturnToken(user);

                return(new OkObjectResult(token));
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Expired"))
                {
                    var internalErr = new ObjectResult(new { type = 2, error = ex.Message })
                    {
                        StatusCode = 500
                    };
                    return(internalErr);
                }
                else
                {
                    var internalErr = new ObjectResult(new { type = 3, error = ex.Message })
                    {
                        StatusCode = 500
                    };
                    return(internalErr);
                }
            }
        }