aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Controllers/UserController.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-04-12 23:34:40 +0800
committercrupest <crupest@outlook.com>2019-04-12 23:34:40 +0800
commit401a5b74696c471e5168e421e3de0db1e5f946a8 (patch)
tree46e4110f6044d606dc7e30d03c8527db6954b212 /Timeline/Controllers/UserController.cs
parent8c5e7069d2651fb6fae641dfe482d7a0910b3fd1 (diff)
downloadtimeline-401a5b74696c471e5168e421e3de0db1e5f946a8.tar.gz
timeline-401a5b74696c471e5168e421e3de0db1e5f946a8.tar.bz2
timeline-401a5b74696c471e5168e421e3de0db1e5f946a8.zip
Add database connection.
Diffstat (limited to 'Timeline/Controllers/UserController.cs')
-rw-r--r--Timeline/Controllers/UserController.cs52
1 files changed, 41 insertions, 11 deletions
diff --git a/Timeline/Controllers/UserController.cs b/Timeline/Controllers/UserController.cs
index eb1b8513..b9d760ec 100644
--- a/Timeline/Controllers/UserController.cs
+++ b/Timeline/Controllers/UserController.cs
@@ -1,6 +1,8 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
+using System;
+using System.Threading.Tasks;
using Timeline.Entities;
using Timeline.Services;
@@ -16,23 +18,22 @@ namespace Timeline.Controllers
}
private readonly IUserService _userService;
- private readonly IJwtService _jwtService;
private readonly ILogger<UserController> _logger;
- public UserController(IUserService userService, IJwtService jwtService, ILogger<UserController> logger)
+ public UserController(IUserService userService, ILogger<UserController> logger)
{
_userService = userService;
- _jwtService = jwtService;
_logger = logger;
}
[HttpPost("[action]")]
[AllowAnonymous]
- public ActionResult<CreateTokenResponse> CreateToken([FromBody] CreateTokenRequest request)
+ public async Task<ActionResult<CreateTokenResponse>> CreateToken([FromBody] CreateTokenRequest request)
{
- var user = _userService.Authenticate(request.Username, request.Password);
+ var result = await _userService.CreateToken(request.Username, request.Password);
- if (user == null) {
+ if (result == null)
+ {
_logger.LogInformation(LoggingEventIds.LogInFailed, "Attemp to login with username: {} and password: {} failed.", request.Username, request.Password);
return Ok(new CreateTokenResponse
{
@@ -45,17 +46,46 @@ namespace Timeline.Controllers
return Ok(new CreateTokenResponse
{
Success = true,
- Token = _jwtService.GenerateJwtToken(user),
- UserInfo = user.GetUserInfo()
+ Token = result.Token,
+ UserInfo = result.UserInfo
});
}
[HttpPost("[action]")]
[AllowAnonymous]
- public ActionResult<TokenValidationResponse> ValidateToken([FromBody] TokenValidationRequest request)
+ public async Task<ActionResult<TokenValidationResponse>> ValidateToken([FromBody] TokenValidationRequest request)
{
- var result = _jwtService.ValidateJwtToken(request.Token);
- return Ok(result);
+ var result = await _userService.VerifyToken(request.Token);
+
+ if (result == null)
+ {
+ return Ok(new TokenValidationResponse
+ {
+ IsValid = false,
+ });
+ }
+
+ return Ok(new TokenValidationResponse
+ {
+ IsValid = true,
+ UserInfo = result
+ });
+ }
+
+ [HttpPost("[action]")]
+ [Authorize(Roles = "admin")]
+ public async Task<ActionResult<CreateUserResponse>> CreateUser([FromBody] CreateUserRequest request)
+ {
+ var result = await _userService.CreateUser(request.Username, request.Password, request.Roles);
+ switch (result)
+ {
+ case CreateUserResult.Success:
+ return Ok(new CreateUserResponse { ReturnCode = CreateUserResponse.SuccessCode });
+ case CreateUserResult.AlreadyExists:
+ return Ok(new CreateUserResponse { ReturnCode = CreateUserResponse.AlreadyExistsCode });
+ default:
+ throw new Exception("Unreachable code.");
+ }
}
}
}