public async Task <User> CheckToken(string token) { var userToken = token.Split(' ')[1]; var tokenSettings = TokenResponse.FromToken(userToken); var user = await _context.User.FirstOrDefaultAsync(x => x.Id == tokenSettings.Id); return(user); }
public async Task <JWTToken> Refresh(RefreshRequest tokens) { var claims = TokenResponse.FromToken(tokens.JWTToken); var allTokens = _context.UserToken.Where(x => x.UserId == claims.Id); var refreshToken = await allTokens.FirstOrDefaultAsync(x => x.RefreshToken == tokens.RefreshToken); if (refreshToken == null || refreshToken.ExpiryDate < DateTime.Now) { return(null); } var user = await _context.User.FirstOrDefaultAsync(x => x.Id == claims.Id); if (user == null) { return(null); } var newJwtToken = new TokenResponse() { Id = user.Id, Role = user.Role }.ToToken(_config); var newRefreshToken = TokenHelper.GenerateRefreshToken(); var now = DateTime.Now; var expiryDate = now.AddDays(7); refreshToken = new UserToken() { LastUpdated = now, ExpiryDate = expiryDate, RefreshToken = newRefreshToken, Id = refreshToken.Id, UserId = refreshToken.UserId, User = refreshToken.User }; _context.Update(refreshToken); await _context.SaveChangesAsync(); return(new JWTToken() { JwtToken = newJwtToken.JwtToken, RefreshToken = newRefreshToken, Exp = new DateTimeOffset(expiryDate).ToUnixTimeSeconds(), Nbf = new DateTimeOffset(now).ToUnixTimeSeconds() }); }