public IActionResult GetJwtAndRtViaRt(AuthenticateApiRequest authenticateRequest) { AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRtViaRt(authenticateRequest.RefreshToken, ipAddress()); if (authenticateResponse != null) { return(Ok(authenticateResponse)); } else { return(BadRequest(new DefaultApiResponse { ErrorMessage = "Действие обновляющего токена закончилось" })); } }
public AuthenticateApiResponse GetJwtAndRt(AuthenticateApiRequest model, string ipAddress) { var user = _milieuRepo.GetUser(model.Email); // return null if user not found if (user == null) { return(null); } // authentication successful so generate jwt and refresh tokens var jwtToken = generateJwt(user); var refreshToken = generateRefreshToken(ipAddress); // save refresh token _milieuRepo.UpdateOrAddRefreshToken(user, refreshToken); return(new AuthenticateApiResponse(user, jwtToken, refreshToken.Value)); }
public async Task <IActionResult> Register([FromBody] RegisterApiRequest registerApiRequest) { if (ModelState.IsValid) { User user = new User { Email = registerApiRequest.Email, UserName = registerApiRequest.Email, }; var result = await _userManager.CreateAsync(user, registerApiRequest.Password); if (result.Succeeded) { AuthenticateApiRequest authenticateRequest = new AuthenticateApiRequest(registerApiRequest.Email); AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRt(authenticateRequest, ipAddress()); await _signInManager.SignInAsync(user, false); return(Ok(authenticateResponse)); } else { return(BadRequest( new AuthenticateApiResponse { ApiResponseDefault = new DefaultApiResponse { ErrorMessage = result.Errors?.ToList().Select(f => f.Description).Aggregate((a, b) => $"{a}{Environment.NewLine}{b}") } })); } } else { AuthenticateApiResponse badResponse = new AuthenticateApiResponse(); badResponse.ApiResponseDefault.ErrorMessage = ModelStateHelperMethods.GetAggregateErrors(ModelState.Values); return(BadRequest(badResponse)); } }
public async Task <IActionResult> Login([FromBody] LoginApiRequest loginApiRequest) { if (ModelState.IsValid) { var result = await _signInManager.PasswordSignInAsync(loginApiRequest.Email, loginApiRequest.Password, false, false); AuthenticateApiRequest authenticateRequest = new AuthenticateApiRequest(loginApiRequest.Email); AuthenticateApiResponse authenticateResponse = _jwtAndRtService.GetJwtAndRt(authenticateRequest, ipAddress()); if (result.Succeeded) { return(Ok(authenticateResponse)); } else { return(BadRequest(authenticateResponse)); } } else { return(BadRequest()); } }