using AuthHex.Models.IOs; using AuthHex.Services.AltOptionManager; using AuthHex.Services.FunctionHandler; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; namespace AuthHex.Controllers { [ApiController] [Route("api")] [EnableCors("AllowAll")] public class APIController(UserManager userManager, RecoveryManager recoveryManager, AltOptionManager altOptionManager, RoleManager roleManager) : ControllerBase { private readonly UserManager _userManager = userManager; private readonly RecoveryManager _recoveryManager = recoveryManager; private readonly AltOptionManager _altOptionManager = altOptionManager; private readonly RoleManager _roleManager = roleManager; [HttpGet("status")] [AllowAnonymous] public IActionResult GetStatus() { return Ok(new { status = "API is running", timestamp = System.DateTime.UtcNow }); } [HttpPost("user")] [AllowAnonymous] public async Task UserExecute([FromBody] ApiRequest request) { var response = await _userManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("recovery")] [AllowAnonymous] public async Task RecoveryExecute([FromBody] ApiRequest request) { var response = await _recoveryManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("registerUser")] [AllowAnonymous] public async Task RegisterUser([FromBody] ApiRequest request) { request.FunctionName = "registerUser"; var response = await _userManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("loginUser")] [AllowAnonymous] public async Task LoginUser([FromBody] ApiRequest request) { request.FunctionName = "loginUser"; var response = await _userManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("forgotPassword")] [AllowAnonymous] public async Task ForgotPassword([FromBody] ApiRequest request) { request.FunctionName = "forgotPassword"; var response = await _recoveryManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("alt")] [AllowAnonymous] public async Task IsAvailable([FromBody] ApiRequest request) { var response = await _altOptionManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } [HttpPost("role")] [AllowAnonymous] public async Task RoleExecute([FromBody] ApiRequest request) { var response = await _roleManager.Execute(request, HttpContext); return StatusCode(response.StatusCode, response); } } }