mirror of
https://github.com/MvDevsUnion/WPetition.git
synced 2026-02-27 20:40:36 +00:00
49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
using System.IdentityModel.Tokens.Jwt;
|
|
using System.Security.Claims;
|
|
using System.Text;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.IdentityModel.Tokens;
|
|
|
|
namespace Submission.Api.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
public class AuthController : ControllerBase
|
|
{
|
|
private readonly IConfiguration _configuration;
|
|
|
|
public AuthController(IConfiguration configuration)
|
|
{
|
|
_configuration = configuration;
|
|
}
|
|
|
|
[HttpPost("login")]
|
|
public IActionResult Login([FromBody] LoginRequest request)
|
|
{
|
|
var adminUsername = _configuration["AdminSettings:Username"];
|
|
var adminPassword = _configuration["AdminSettings:Password"];
|
|
|
|
if (request.Username != adminUsername || request.Password != adminPassword)
|
|
return Unauthorized("Invalid credentials");
|
|
|
|
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Jwt:Key"]!));
|
|
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
|
|
|
|
var token = new JwtSecurityToken(
|
|
issuer: _configuration["Jwt:Issuer"],
|
|
claims: new[] { new Claim(ClaimTypes.Name, request.Username) },
|
|
expires: DateTime.UtcNow.AddHours(24),
|
|
signingCredentials: credentials
|
|
);
|
|
|
|
return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });
|
|
}
|
|
}
|
|
|
|
public class LoginRequest
|
|
{
|
|
public string Username { get; set; } = string.Empty;
|
|
public string Password { get; set; } = string.Empty;
|
|
}
|
|
}
|