public async Task <ActionResult <LoginDto> > GoogleLogin([FromBody] OneTimeTokenDto onetimeToken) { LoginDto loginDto; try { var payload = await GoogleJsonWebSignature.ValidateAsync(onetimeToken.TokenId, new GoogleJsonWebSignature.ValidationSettings()); loginDto = new LoginDto { FirstName = payload.GivenName, LastName = payload.FamilyName, PictureUri = payload.Picture, JWTToken = await _userService.CreateToken(payload.Email, _configuration["JwtSecret"]) }; } catch (EntityNotFoundException) { return(new UnauthorizedResult()); } catch (AggregateException) { return(new UnauthorizedResult()); } return(Ok(loginDto)); }
public async Task PostInvalidOneTimeTokenTest() { HttpClient client = _testServer.CreateClient(); OneTimeTokenDto invalidToken = new OneTimeTokenDto { TokenId = "testToken" }; HttpResponseMessage response = await client.PostAsync(_apiEndpoint + "api/user/google", invalidToken, new JsonMediaTypeFormatter()); Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode); }
public ActionResult<UserDto> Google([FromBody]OneTimeTokenDto oneTimeTokenDto) { UserDto user; try { GoogleJsonWebSignature.Payload payload = GoogleJsonWebSignature.ValidateAsync(oneTimeTokenDto.TokenId, new GoogleJsonWebSignature.ValidationSettings()).Result; user = _service.Authenticate(payload, out int userId); user.JWTToken = CreateToken(userId); } catch (Exception) { return new UnauthorizedResult(); } return Ok(user); }