public async Task <ActionResult <UserDto> > GoogleLogin(GoogleUserDto loginDto) { var command = new GoogleLoginCommand(loginDto, this); var result = await _mediator.Send(command); return(result); }
private async void RefreshUser() { UserSettings.IsRefreshingAuthToken = true; try { await App.RefreshLoginAsync(); } finally { UserSettings.IsRefreshingAuthToken = false; } if (UserSettings.IsLoggedIn) { App.GoToMainPage(); } else { IsBusy = false; MicrosoftLoginCommand.ChangeCanExecute(); GoogleLoginCommand.ChangeCanExecute(); NotNowCommand.ChangeCanExecute(); } }
public async Task <ActionResult <UserDto> > Handle(GoogleLoginCommand request, CancellationToken cancellationToken) { var payload = await Google.Apis.Auth.GoogleJsonWebSignature.ValidateAsync(request.GoogleUserDto.IdToken, new Google.Apis.Auth.GoogleJsonWebSignature.ValidationSettings { Audience = new[] { _config["Authentication:Google:ClientId"] } }); var user = await _userManager.FindByLoginAsync("google", payload.Subject); if (user != null) { return(request.Controller.Ok(new UserDto { Id = user.Id, FirstName = user.FirstName, LastName = user.LastName, EmployeeNumber = user.EmployeeNumber, Email = user.Email, Token = await _tokenService.CreateToken(user) })); } user = await _userManager.FindByEmailAsync(payload.Email); if (user == null) { user = new AppUser { FirstName = payload.GivenName, LastName = payload.FamilyName, Email = payload.Email, UserName = payload.Email }; await _userManager.CreateAsync(user); await _userManager.AddToRoleAsync(user, "Customer"); } var info = new UserLoginInfo("google", payload.Subject, payload.Subject.ToUpperInvariant()); var result = await _userManager.AddLoginAsync(user, info); if (result.Succeeded) { return(request.Controller.Ok(new UserDto { Id = user.Id, FirstName = user.FirstName, LastName = user.LastName, EmployeeNumber = user.EmployeeNumber, Email = user.Email, Token = await _tokenService.CreateToken(user) })); } return(request.Controller.UnprocessableEntity(new ApiResponse(422, "Unable to process GMail account. Please try to login again."))); }