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