aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Controllers/TokenController.cs
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-08-01 22:32:40 +0800
committer杨宇千 <crupest@outlook.com>2019-08-01 22:32:40 +0800
commit9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1 (patch)
treeabbdb97d24c2e6d7c32433887643676637011720 /Timeline/Controllers/TokenController.cs
parentee506e832e19e84cba2f9cf1c2b0172ca3e092b6 (diff)
downloadtimeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.tar.gz
timeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.tar.bz2
timeline-9aeca6f6adf1a20d85e1fdbc8bdc8dfb35be28c1.zip
Add token expire time.
Diffstat (limited to 'Timeline/Controllers/TokenController.cs')
-rw-r--r--Timeline/Controllers/TokenController.cs24
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);