public async Task <AuthSuccessResult> Refresh(refreshViewModel model) { var token = await _refreshTokens.GetQueryable(x => x.Token == model.refresh).Include(x => x.User).FirstOrDefaultAsync(); var refresh_time = _configuration.GetSection("JWT").GetValue <int>("REFRESH_LIFETIME"); if (token == null) { throw new Exception("We can't find your token..."); } if (token.ToLife.AddMinutes(refresh_time) <= DateTime.Now) { throw new Exception("Refresh token is expired..."); } var handler = new JwtSecurityTokenHandler(); var decrypt_token = handler.ReadJwtToken(model.token); if (decrypt_token.Claims.FirstOrDefault(x => x.Type == ClaimsIdentity.DefaultNameClaimType).Value != token.User.Id) { throw new Exception("Unknown error..."); } return(new AuthSuccessResult() { access_token = _jWTService.CreateToken(token.User), refresh_token = _jWTService.CreateRefreshToken(token.User), ava = token.User.img }); }
public async Task <IActionResult> Refresh(refreshViewModel model) { try { return(Ok(await this._authService.Refresh(model))); } catch (Exception e) { return(BadRequest(new errorResult() { action = "relogin", message = e.Message, status = 400, tag = "Error" })); } }