This commit is contained in:
@@ -4,6 +4,10 @@ using Auth.Services.DatabaseService;
|
||||
using Auth.Entities;
|
||||
using Auth.DTO;
|
||||
using System.Web.Http;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Text;
|
||||
using System.Security.Claims;
|
||||
|
||||
namespace Auth.Controllers {
|
||||
[ApiController]
|
||||
@@ -71,7 +75,7 @@ namespace Auth.Controllers {
|
||||
}
|
||||
}
|
||||
|
||||
[Route("authenticate")]
|
||||
[Route("jwtlogin")]
|
||||
[HttpPost]
|
||||
public async Task<ActionResult> Authenticate([FromBody] LoginRequest request) {
|
||||
try {
|
||||
@@ -107,6 +111,27 @@ namespace Auth.Controllers {
|
||||
}
|
||||
}
|
||||
|
||||
[Route("jwttryrenew")]
|
||||
[HttpPost]
|
||||
public IActionResult Refresh([FromBody] JWTRenewRequest request){
|
||||
try {
|
||||
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
|
||||
ClaimsPrincipal claimsPrincipal = handler.ValidateToken(request.Token, AuthJWT.TokenParameters, out var validatedToken);
|
||||
JwtSecurityToken jwt = (JwtSecurityToken)validatedToken;
|
||||
if (jwt != null) {
|
||||
if (jwt.ValidTo - DateTime.UtcNow < TimeSpan.FromDays(1)) {
|
||||
var newJwt = AuthJWT.RenewJWTToken(claimsPrincipal);
|
||||
return Ok(newJwt);
|
||||
}
|
||||
return BadRequest("Not ready to renew");
|
||||
}
|
||||
return BadRequest("Malformed Token");
|
||||
}
|
||||
catch (SecurityTokenException ex) {
|
||||
return Unauthorized($"Token invalid: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Route("logout")]
|
||||
[HttpPost]
|
||||
public ActionResult Logout() {
|
||||
|
||||
Reference in New Issue
Block a user