aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Controllers/TokenController.cs
diff options
context:
space:
mode:
author杨宇千 <crupest@outlook.com>2019-05-06 14:22:10 +0800
committerGitHub <noreply@github.com>2019-05-06 14:22:10 +0800
commitea84a067eee6dcd10dd0bc89967ef608677ef37e (patch)
tree37c2b6f9dcb3d6f57867ebc7538523d1a338183d /Timeline/Controllers/TokenController.cs
parentae848e311b46a25ec1ed571432d55e800ac7595b (diff)
parent070a4a8399201150a633c80608a13cc44781a3c4 (diff)
downloadtimeline-ea84a067eee6dcd10dd0bc89967ef608677ef37e.tar.gz
timeline-ea84a067eee6dcd10dd0bc89967ef608677ef37e.tar.bz2
timeline-ea84a067eee6dcd10dd0bc89967ef608677ef37e.zip
Merge pull request #22 from crupest/user-admin
Develop user management feature.
Diffstat (limited to 'Timeline/Controllers/TokenController.cs')
-rw-r--r--Timeline/Controllers/TokenController.cs74
1 files changed, 74 insertions, 0 deletions
diff --git a/Timeline/Controllers/TokenController.cs b/Timeline/Controllers/TokenController.cs
new file mode 100644
index 00000000..0be5fb2f
--- /dev/null
+++ b/Timeline/Controllers/TokenController.cs
@@ -0,0 +1,74 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Logging;
+using System.Threading.Tasks;
+using Timeline.Entities.Http;
+using Timeline.Services;
+
+namespace Timeline.Controllers
+{
+ [Route("token")]
+ public class TokenController : Controller
+ {
+ private static class LoggingEventIds
+ {
+ public const int LogInSucceeded = 4000;
+ public const int LogInFailed = 4001;
+ }
+
+ private readonly IUserService _userService;
+ private readonly ILogger<TokenController> _logger;
+
+ public TokenController(IUserService userService, ILogger<TokenController> logger)
+ {
+ _userService = userService;
+ _logger = logger;
+ }
+
+ [HttpPost("create")]
+ [AllowAnonymous]
+ public async Task<ActionResult<CreateTokenResponse>> Create([FromBody] CreateTokenRequest request)
+ {
+ var result = await _userService.CreateToken(request.Username, request.Password);
+
+ if (result == null)
+ {
+ _logger.LogInformation(LoggingEventIds.LogInFailed, "Attemp to login with username: {} and password: {} failed.", request.Username, request.Password);
+ return Ok(new CreateTokenResponse
+ {
+ Success = false
+ });
+ }
+
+ _logger.LogInformation(LoggingEventIds.LogInSucceeded, "Login with username: {} succeeded.", request.Username);
+
+ return Ok(new CreateTokenResponse
+ {
+ Success = true,
+ Token = result.Token,
+ UserInfo = result.UserInfo
+ });
+ }
+
+ [HttpPost("verify")]
+ [AllowAnonymous]
+ public async Task<ActionResult<VerifyTokenResponse>> Verify([FromBody] VerifyTokenRequest request)
+ {
+ var result = await _userService.VerifyToken(request.Token);
+
+ if (result == null)
+ {
+ return Ok(new VerifyTokenResponse
+ {
+ IsValid = false,
+ });
+ }
+
+ return Ok(new VerifyTokenResponse
+ {
+ IsValid = true,
+ UserInfo = result
+ });
+ }
+ }
+}