Skip to content

Commit 1b02bbe

Browse files
author
Vadim Belov
committed
Refactor refresh token cookie logic; add Clover AuthType
Refactored BaseAuthController to centralize refresh token cookie logic in a new AddRefreshTokenToCookie method, reducing code duplication. Changed CreateAccessToken to private protected for subclass access. Added Clover as a new AuthType enum value to support an additional authentication provider.
1 parent 1a88db1 commit 1b02bbe

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

Sources/EasyExtensions.AspNetCore.Authorization/Controllers/BaseAuthController.cs

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,7 @@ public async Task<IActionResult> RefreshToken([FromBody] RefreshTokenRequestDto?
129129
var roles = await GetUserRolesAsync(userId.Value);
130130
string accessToken = CreateAccessToken(userId.Value, roles);
131131
await SaveAndRevokeRefreshTokenAsync(userId.Value, request.RefreshToken, newRefreshToken, AuthType.Unknown);
132-
Response.Cookies.Append(CookieRefreshTokenName, newRefreshToken, new()
133-
{
134-
Secure = true,
135-
HttpOnly = true,
136-
SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict,
137-
Expires = DateTimeOffset.UtcNow.Add(GetCookieExpirationTime()),
138-
});
132+
AddRefreshTokenToCookie(newRefreshToken);
139133
return Ok(new TokenPairResponseDto
140134
{
141135
AccessToken = accessToken,
@@ -185,13 +179,7 @@ public async Task<IActionResult> Login([FromBody] LoginRequestDto request)
185179
string refreshToken = StringHelpers.CreateRandomString(64);
186180
await SaveAndRevokeRefreshTokenAsync(userId.Value, string.Empty, refreshToken, AuthType.Credentials);
187181
await OnUserLoggingInAsync(userId.Value, AuthType.Credentials, AuthRejectionType.None);
188-
Response.Cookies.Append(CookieRefreshTokenName, refreshToken, new()
189-
{
190-
Secure = true,
191-
HttpOnly = true,
192-
SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict,
193-
Expires = DateTimeOffset.UtcNow.Add(GetCookieExpirationTime()),
194-
});
182+
AddRefreshTokenToCookie(refreshToken);
195183
return Ok(new TokenPairResponseDto
196184
{
197185
AccessToken = accessToken,
@@ -241,13 +229,7 @@ public async Task<IActionResult> LoginWithGoogle([FromQuery] string token)
241229
string refreshToken = StringHelpers.CreateRandomString(64);
242230
await SaveAndRevokeRefreshTokenAsync(userId.Value, string.Empty, refreshToken, AuthType.Google);
243231
await OnUserLoggingInAsync(userId.Value, AuthType.Google, AuthRejectionType.None);
244-
Response.Cookies.Append(CookieRefreshTokenName, refreshToken, new()
245-
{
246-
Secure = true,
247-
HttpOnly = true,
248-
SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict,
249-
Expires = DateTimeOffset.UtcNow.Add(GetCookieExpirationTime()),
250-
});
232+
AddRefreshTokenToCookie(refreshToken);
251233
return Ok(new TokenPairResponseDto
252234
{
253235
AccessToken = accessToken,
@@ -390,7 +372,7 @@ public virtual IEnumerable<KeyValuePair<string, string>> GetAdditionalTokenClaim
390372
return [];
391373
}
392374

393-
private string CreateAccessToken(Guid userId, IEnumerable<string> roles)
375+
private protected string CreateAccessToken(Guid userId, IEnumerable<string> roles)
394376
{
395377
return _tokenProvider.CreateToken(cb =>
396378
{
@@ -406,5 +388,16 @@ private string CreateAccessToken(Guid userId, IEnumerable<string> roles)
406388
return cb;
407389
});
408390
}
391+
392+
private protected void AddRefreshTokenToCookie(string refreshToken)
393+
{
394+
Response.Cookies.Append(CookieRefreshTokenName, refreshToken, new()
395+
{
396+
Secure = true,
397+
HttpOnly = true,
398+
SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict,
399+
Expires = DateTimeOffset.UtcNow.Add(GetCookieExpirationTime()),
400+
});
401+
}
409402
}
410403
}

Sources/EasyExtensions/Models/Enums/AuthType.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,10 @@ public enum AuthType
2424
/// Specifies the Google authentication provider.
2525
/// </summary>
2626
Google = 2,
27+
28+
/// <summary>
29+
/// Specifies the Clover authentication provider.
30+
/// </summary>
31+
Clover = 3,
2732
}
2833
}

0 commit comments

Comments
 (0)