public async Task <TokenDTO> GoogleLogin([FromBody] GoogleLoginModel model) { if (_applicationConfiguration.DisableRegistration || _googleConfiguration.LoginDisabled) { throw new Exception("External login is disabled"); } return(await _authService.GoogleLogin(model)); }
/// <inheritdoc /> public async Task <TokenDTO> GoogleLogin(GoogleLoginModel model) { var payload = await VerifyGoogleToken(model); if (payload is null) { throw new ArgumentException("Google auth cannot be performed"); } return(await CreateExternalUser(model.Provider, payload.Subject, payload.Email, payload.Name)); }
public async Task <IActionResult> GoogleSign(GoogleLoginModel model) { if (ModelState.IsValid) { try { _accountService.SetCurrentContext(HttpContext, Url); var response = await _accountService.GoogleLoginAsync(model); _transactionHelper.CommitChanges(); return(Ok(response)); } catch (Exception ex) { _transactionHelper.RollBackChanges(); return(BadRequest(ex.Message)); } } return(BadRequest(ModelState)); }
private async Task <GoogleJsonWebSignature.Payload> VerifyGoogleToken(GoogleLoginModel model) { try { var settings = new GoogleJsonWebSignature.ValidationSettings() { Audience = new List <string>() { _googleConfiguration.ClientId } }; var payload = await GoogleJsonWebSignature.ValidateAsync(model.IdToken, settings); return(payload); } catch (Exception e) { Console.WriteLine(e); return(null); } }
public async Task <SigningInResponseModel> GoogleLoginAsync(GoogleLoginModel googleLoginModel) { if (string.IsNullOrEmpty(googleLoginModel.googleToken)) { throw new Exception("token is null"); } var googleUser = await _googleService.GetUserFromGoogleAsync(googleLoginModel.googleToken); if (googleUser == null) { throw new Exception("Invalid OAuth access token,cannot get google user"); } var userLoginInfo = new UserLoginInfo(GlobalVariables.FacebookProviderName, googleUser.id, GlobalVariables.FacebookProviderDisplayName); var domainUser = await _userManager.FindByLoginAsync(GlobalVariables.GoogleProviderName, googleUser.id); if (domainUser == null) { domainUser = await RegisterGoogleUser(googleUser); } return(GetSigningInResponseModel(domainUser, GlobalVariables.CustomerRole)); }
public async Task <IResponse> GoogleSignIn([FromBody] GoogleLoginModel googleLoginModel) { ExternalLoginResponse externalLoginResponse = new ExternalLoginResponse(); externalLoginResponse.IsModelValid = ModelState.IsValid; if (ModelState.IsValid) { GoogleDataModel googleData = await GoogleAPI.GetUserLoginData(googleLoginModel.AccessToken); ExternalLoginInfo info = CustomExternalLoginInfo.FromLoginModel("Google", googleData); var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, true); externalLoginResponse.IsRegistered = result.Succeeded; externalLoginResponse.Result = result; } else { externalLoginResponse.Errors = ModelState.Values.SelectMany(v => v.Errors.Select(b => b.ErrorMessage)); } return(externalLoginResponse); }