public async Task <IActionResult> RefreshTokens(RefreshTokenRequest response) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Console.WriteLine("Refreshing Token"); SeriesUser user = await _userManager.FindByEmailAsync(response.Email); if (user == null) { return(Unauthorized()); } RefreshToken refreshToken = _context.RefreshTokens.SingleOrDefault(m => m.Token == response.RefreshToken); if (refreshToken == null || !refreshToken.IsValid() || refreshToken.Email != user.Email) { if (refreshToken == null) { return(Unauthorized()); } _context.RefreshTokens.Remove(refreshToken); await _context.SaveChangesAsync(); return(Unauthorized()); } refreshToken.Token = Guid.NewGuid().ToString(); refreshToken.Provided = DateTime.UtcNow; _context.RefreshTokens.Update(refreshToken); await _context.SaveChangesAsync(); string token = _jwtGenerator.GenerateEncodedToken(user.Id); Console.WriteLine("Sending new token!"); return(Ok(new TokensResponse { Token = token, RefreshToken = refreshToken.Token, Success = true })); }