Make refresh token also be a JWT as requested

This commit is contained in:
2025-11-06 20:30:50 +02:00
parent b22cc00647
commit 7e7231b514

View File

@@ -37,6 +37,14 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
} }
public async Task<string> GenerateJwtToken(User user) public async Task<string> GenerateJwtToken(User user)
{
return await GenerateJwtToken(
user,
DateTime.Now.AddMinutes(Convert.ToDouble(config["Jwt:DurationInMinutes"]))
);
}
private async Task<string> GenerateJwtToken(User user, DateTime dateExpire)
{ {
var roles = await userManager.GetRolesAsync(user); var roles = await userManager.GetRolesAsync(user);
var claims = new List<Claim> var claims = new List<Claim>
@@ -54,7 +62,7 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
issuer: config["Jwt:Issuer"], issuer: config["Jwt:Issuer"],
audience: config["Jwt:Audience"], audience: config["Jwt:Audience"],
claims: claims, claims: claims,
expires: DateTime.Now.AddMinutes(Convert.ToDouble(config["Jwt:DurationInMinutes"])), expires: dateExpire,
signingCredentials: creds); signingCredentials: creds);
return new JwtSecurityTokenHandler().WriteToken(token); return new JwtSecurityTokenHandler().WriteToken(token);
@@ -62,10 +70,12 @@ public class TokenService(ImgBoardContext context, IConfiguration config, UserMa
public async Task<string> GenerateRefreshToken(User user) public async Task<string> GenerateRefreshToken(User user)
{ {
var dateExpire = DateTime.Now.AddDays(30);
var jwtToken = await GenerateJwtToken(user, dateExpire);
var token = new RefreshToken var token = new RefreshToken
{ {
Expires = DateTime.Now.AddDays(30), Expires = dateExpire,
Token = Guid.NewGuid().ToString(), Token = jwtToken,
User = user User = user
}; };
await context.RefreshTokens.AddAsync(token); await context.RefreshTokens.AddAsync(token);