aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Services/Token
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-03-09 21:21:15 +0800
committercrupest <crupest@outlook.com>2022-03-09 21:21:15 +0800
commit3d6c9fd916e18c99b3a5497b8313672680571b5e (patch)
treee67ae49937dcdb7f5c874a2ebfdca4fde72a059f /BackEnd/Timeline/Services/Token
parent3cd0140ff4425b37b6e8dd8e8f16a54b1338c352 (diff)
downloadtimeline-3d6c9fd916e18c99b3a5497b8313672680571b5e.tar.gz
timeline-3d6c9fd916e18c99b3a5497b8313672680571b5e.tar.bz2
timeline-3d6c9fd916e18c99b3a5497b8313672680571b5e.zip
Add user token entity in preparation for refactor of tokens.
Diffstat (limited to 'BackEnd/Timeline/Services/Token')
-rw-r--r--BackEnd/Timeline/Services/Token/DatabaseUserTokenHandler.cs0
-rw-r--r--BackEnd/Timeline/Services/Token/IUserTokenHandler.cs5
-rw-r--r--BackEnd/Timeline/Services/Token/UserTokenHandler.cs11
-rw-r--r--BackEnd/Timeline/Services/Token/UserTokenManager.cs4
4 files changed, 11 insertions, 9 deletions
diff --git a/BackEnd/Timeline/Services/Token/DatabaseUserTokenHandler.cs b/BackEnd/Timeline/Services/Token/DatabaseUserTokenHandler.cs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/BackEnd/Timeline/Services/Token/DatabaseUserTokenHandler.cs
diff --git a/BackEnd/Timeline/Services/Token/IUserTokenHandler.cs b/BackEnd/Timeline/Services/Token/IUserTokenHandler.cs
index d9788909..62e01de5 100644
--- a/BackEnd/Timeline/Services/Token/IUserTokenHandler.cs
+++ b/BackEnd/Timeline/Services/Token/IUserTokenHandler.cs
@@ -1,4 +1,5 @@
using System;
+using System.Threading.Tasks;
namespace Timeline.Services.Token
{
@@ -10,7 +11,7 @@ namespace Timeline.Services.Token
/// <param name="tokenInfo">The info to generate token.</param>
/// <returns>Return the generated token.</returns>
/// <exception cref="ArgumentNullException">Thrown when <paramref name="tokenInfo"/> is null.</exception>
- string GenerateToken(UserTokenInfo tokenInfo);
+ Task<string> GenerateTokenAsync(UserTokenInfo tokenInfo);
/// <summary>
/// Verify a token and get the saved info. Do not validate lifetime!!!
@@ -23,6 +24,6 @@ namespace Timeline.Services.Token
/// If this method throw <see cref="UserTokenBadFormatException"/>, it usually means the token is not created by this service.
/// Do not check expire time in this method, only check whether it is present.
/// </remarks>
- UserTokenInfo VerifyToken(string token);
+ Task<UserTokenInfo> ValidateTokenAsync(string token);
}
}
diff --git a/BackEnd/Timeline/Services/Token/UserTokenHandler.cs b/BackEnd/Timeline/Services/Token/UserTokenHandler.cs
index c1633f4a..03b07b53 100644
--- a/BackEnd/Timeline/Services/Token/UserTokenHandler.cs
+++ b/BackEnd/Timeline/Services/Token/UserTokenHandler.cs
@@ -5,6 +5,7 @@ using System.Globalization;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
+using System.Threading.Tasks;
using Timeline.Configs;
using Timeline.Entities;
@@ -35,7 +36,7 @@ namespace Timeline.Services.Token
_tokenSecurityKey = new SymmetricSecurityKey(key);
}
- public string GenerateToken(UserTokenInfo tokenInfo)
+ public Task<string> GenerateTokenAsync(UserTokenInfo tokenInfo)
{
if (tokenInfo == null)
throw new ArgumentNullException(nameof(tokenInfo));
@@ -60,11 +61,11 @@ namespace Timeline.Services.Token
var token = _tokenHandler.CreateToken(tokenDescriptor);
var tokenString = _tokenHandler.WriteToken(token);
- return tokenString;
+ return Task.FromResult(tokenString);
}
- public UserTokenInfo VerifyToken(string token)
+ public Task<UserTokenInfo> ValidateTokenAsync(string token)
{
if (token == null)
throw new ArgumentNullException(nameof(token));
@@ -100,12 +101,12 @@ namespace Timeline.Services.Token
if (exp is null)
throw new JwtUserTokenBadFormatException(token, JwtUserTokenBadFormatException.ErrorKind.NoExp);
- return new UserTokenInfo
+ return Task.FromResult(new UserTokenInfo
{
Id = id,
Version = version,
ExpireAt = EpochTime.DateTime(exp.Value)
- };
+ });
}
catch (Exception e) when (e is SecurityTokenException || e is ArgumentException)
{
diff --git a/BackEnd/Timeline/Services/Token/UserTokenManager.cs b/BackEnd/Timeline/Services/Token/UserTokenManager.cs
index 7ccdfe0a..bdb229f0 100644
--- a/BackEnd/Timeline/Services/Token/UserTokenManager.cs
+++ b/BackEnd/Timeline/Services/Token/UserTokenManager.cs
@@ -38,7 +38,7 @@ namespace Timeline.Services.Token
var userId = await _userService.VerifyCredential(username, password);
var user = await _userService.GetUserAsync(userId);
- var token = _userTokenService.GenerateToken(new UserTokenInfo
+ var token = await _userTokenService.GenerateTokenAsync(new UserTokenInfo
{
Id = user.Id,
Version = user.Version,
@@ -60,7 +60,7 @@ namespace Timeline.Services.Token
try
{
- tokenInfo = _userTokenService.VerifyToken(token);
+ tokenInfo = await _userTokenService.ValidateTokenAsync(token);
}
catch (UserTokenBadFormatException e)
{