public async Task <bool> ValidateGoogleLogin(SocialLoginCredentials login) { try { var result = await GoogleJsonWebSignature.ValidateAsync(login.IdToken); return(true); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } }
public async Task <ActionResult> ValidateGoogleAuth(SocialLoginCredentials login) { var result = await this.authService.ValidateGoogleLogin(login); if (result == false) { return(BadRequest()); } else { var authDetails = await this.authService.GetTokenForSocialLogin(login); return(Ok(authDetails)); } }
public async Task <AuthDetails> GetTokenForSocialLogin(SocialLoginCredentials loginCredentials) { var user = await this.userManager.FindByEmailAsync(loginCredentials.Email); //user dosent exist, create new user in DB and the related token if (user == null) { IdentityUser newUser = new IdentityUser { UserName = loginCredentials.Name, Email = loginCredentials.Email }; var createUser = await this.userManager.CreateAsync(newUser); if (createUser.Succeeded) { AuthDetails authDetails = new AuthDetails { AccessToken = this.GenerateToken(newUser, "User"), UserId = newUser.Id, UserRole = "User", UserName = newUser.UserName }; return(authDetails); } else { throw new Exception("User cannot be created"); } } else { var role = await this.userManager.IsInRoleAsync(user, "Admin") ? "Admin" : "User"; //User exists, create the token AuthDetails authDetails = new AuthDetails { AccessToken = this.GenerateToken(user, role), UserId = user.Id, UserRole = role, UserName = user.UserName }; return(authDetails); } }