From 4b6460e7d564eebff7a79df475a702dbd3f009b9 Mon Sep 17 00:00:00 2001 From: crupest Date: Fri, 23 Apr 2021 19:06:11 +0800 Subject: feat: Fix #51. --- BackEnd/Timeline/Services/UserTokenManager.cs | 28 +++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'BackEnd/Timeline/Services/UserTokenManager.cs') diff --git a/BackEnd/Timeline/Services/UserTokenManager.cs b/BackEnd/Timeline/Services/UserTokenManager.cs index 78aa0b1f..898e4d6d 100644 --- a/BackEnd/Timeline/Services/UserTokenManager.cs +++ b/BackEnd/Timeline/Services/UserTokenManager.cs @@ -34,10 +34,10 @@ namespace Timeline.Services /// The token. /// The user stored in token. /// Thrown when is null. - /// Thrown when the token is expired. - /// Thrown when the token is of bad version. + /// Thrown when the token is expired. + /// Thrown when the token is of bad version. /// Thrown when the token is of bad format. - /// Thrown when the user specified by the token does not exist. Usually the user had been deleted after the token was issued. + /// Thrown when the user specified by the token does not exist. Usually the user had been deleted after the token was issued. public Task VerifyToken(string token); } @@ -46,10 +46,10 @@ namespace Timeline.Services private readonly ILogger _logger; private readonly IUserService _userService; private readonly IUserCredentialService _userCredentialService; - private readonly IUserTokenService _userTokenService; + private readonly IUserTokenHandler _userTokenService; private readonly IClock _clock; - public UserTokenManager(ILogger logger, IUserService userService, IUserCredentialService userCredentialService, IUserTokenService userTokenService, IClock clock) + public UserTokenManager(ILogger logger, IUserService userService, IUserCredentialService userCredentialService, IUserTokenHandler userTokenService, IClock clock) { _logger = logger; _userService = userService; @@ -86,15 +86,23 @@ namespace Timeline.Services { var currentTime = _clock.GetCurrentTime(); if (tokenInfo.ExpireAt < currentTime) - throw new UserTokenTimeExpireException(token, tokenInfo.ExpireAt.Value, currentTime); + throw new UserTokenTimeExpiredException(token, tokenInfo.ExpireAt.Value, currentTime); } - var user = await _userService.GetUser(tokenInfo.Id); + try + { + var user = await _userService.GetUser(tokenInfo.Id); + + if (tokenInfo.Version < user.Version) + throw new UserTokenVersionExpiredException(token, tokenInfo.Version, user.Version); - if (tokenInfo.Version < user.Version) - throw new UserTokenBadVersionException(token, tokenInfo.Version, user.Version); + return user; - return user; + } + catch (UserNotExistException e) + { + throw new UserTokenUserNotExistException(token, e); + } } } } -- cgit v1.2.3