You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
using System.IdentityModel.Tokens.Jwt; |
|
using System.Security.Claims; |
|
using System.Text; |
|
using Microsoft.AspNetCore.Mvc; |
|
using Microsoft.IdentityModel.Tokens; |
|
|
|
namespace backend.Controllers; |
|
|
|
[ApiController] |
|
[Route("[controller]")] |
|
public class AuthController : ControllerBase |
|
{ |
|
public IConfiguration _configuration; |
|
public AuthController(IConfiguration configuration) |
|
{ |
|
_configuration = configuration; |
|
} |
|
|
|
[HttpPost("login")] |
|
public async Task<IActionResult> Login(string username, string password) |
|
{ |
|
if (username == "" || password == "") |
|
{ |
|
return BadRequest("Invalid username or password"); |
|
} |
|
|
|
if (username == "test" && password == "test") |
|
{ |
|
var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:secret"])); |
|
var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256); |
|
|
|
var tokeOptions = new JwtSecurityToken( |
|
issuer: _configuration["Jwt:Issuer"], |
|
audience: _configuration["Jwt:Audience"], |
|
claims: new List<Claim>(), |
|
expires: DateTime.Now.AddDays(1), |
|
signingCredentials: signinCredentials |
|
); |
|
|
|
var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions); |
|
return Ok(new { Token = tokenString }); |
|
} |
|
|
|
return BadRequest("Invalid username or password"); |
|
} |
|
} |