Files
WPetition/Submission.Api/Controllers/AuthController.cs
2026-02-08 14:40:35 +05:00

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;
}
}