diff options
author | 杨宇千 <crupest@outlook.com> | 2019-08-01 22:32:40 +0800 |
---|---|---|
committer | 杨宇千 <crupest@outlook.com> | 2019-08-01 22:32:40 +0800 |
commit | 9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1 (patch) | |
tree | abbdb97d24c2e6d7c32433887643676637011720 /Timeline/Controllers | |
parent | ee506e832e19e84cba2f9cf1c2b0172ca3e092b6 (diff) | |
download | timeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.tar.gz timeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.tar.bz2 timeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.zip |
Add token expire time.
Diffstat (limited to 'Timeline/Controllers')
-rw-r--r-- | Timeline/Controllers/TokenController.cs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/Timeline/Controllers/TokenController.cs b/Timeline/Controllers/TokenController.cs index 66c97b59..f9dcfd76 100644 --- a/Timeline/Controllers/TokenController.cs +++ b/Timeline/Controllers/TokenController.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; +using System; using System.Threading.Tasks; using Timeline.Entities.Http; using Timeline.Services; @@ -23,6 +24,7 @@ namespace Timeline.Controllers { public const int Create_UserNotExist = -1001; public const int Create_BadPassword = -1002; + public const int Create_BadExpireOffset = -1003; public const int Verify_BadToken = -2001; public const int Verify_UserNotExist = -2002; @@ -32,28 +34,42 @@ namespace Timeline.Controllers private readonly IUserService _userService; private readonly ILogger<TokenController> _logger; + private readonly IClock _clock; - public TokenController(IUserService userService, ILogger<TokenController> logger) + public TokenController(IUserService userService, ILogger<TokenController> logger, IClock clock) { _userService = userService; _logger = logger; + _clock = clock; } [HttpPost("create")] [AllowAnonymous] public async Task<IActionResult> Create([FromBody] CreateTokenRequest request) { + TimeSpan? expireOffset = null; + if (request.ExpireOffset != null) + { + if (request.ExpireOffset.Value <= 0.0) + { + var code = ErrorCodes.Create_BadExpireOffset; + _logger.LogInformation(LoggingEventIds.LogInFailed, "Attemp to login failed because expire time offset is bad. Code: {} Username: {} Password: {} Bad Expire Offset: {}.", code, request.Username, request.Password, request.ExpireOffset); + return BadRequest(new CommonResponse(code, "Expire time is not bigger than 0.")); + } + expireOffset = TimeSpan.FromDays(request.ExpireOffset.Value); + } + try { - var result = await _userService.CreateToken(request.Username, request.Password); - _logger.LogInformation(LoggingEventIds.LogInSucceeded, "Login succeeded. Username: {} .", request.Username); + var result = await _userService.CreateToken(request.Username, request.Password, expireOffset == null ? null : (DateTime?)(_clock.GetCurrentTime() + expireOffset.Value)); + _logger.LogInformation(LoggingEventIds.LogInSucceeded, "Login succeeded. Username: {} Expire Time Offset: {} days.", request.Username, request.ExpireOffset); return Ok(new CreateTokenResponse { Token = result.Token, User = result.User }); } - catch(UserNotExistException e) + catch (UserNotExistException e) { var code = ErrorCodes.Create_UserNotExist; _logger.LogInformation(LoggingEventIds.LogInFailed, e, "Attemp to login failed because user does not exist. Code: {} Username: {} Password: {} .", code, request.Username, request.Password); |