using khmereid_backend.Dtos; using Microsoft.AspNetCore.Mvc; using khmereid_backend.Services; using khmereid_backend.Extensions; using Microsoft.AspNetCore.Authorization; namespace khmereid_backend.Controllers; [ApiController] [Route("auth")] public class AuthController(AuthService _authService) : ControllerBase { [AllowAnonymous] [HttpPost("request-signup-otp")] public async Task RequestSignupOtp([FromForm] SignupRequest request) { var response = await _authService.StartRegistrationAsync(request.Phone); return this.ToActionResult(response); } [AllowAnonymous] [HttpPost("verify-signup-otp")] public async Task VerifySignupOtp([FromForm] VerifyOtpRequest request) { var response = await _authService.CompleteRegistrationAsync(request.FlowId, request.Phone, request.Otp); return this.ToActionResult(response); } [AllowAnonymous] [HttpPost("request-login-otp")] public async Task RequestLoginOtp([FromForm] LoginRequest request) { var response = await _authService.StartLoginAsync(request.Phone); return this.ToActionResult(response); } [AllowAnonymous] [HttpPost("verify-login-otp")] public async Task VerifyLoginOtp([FromForm] VerifyOtpRequest request) { var response = await _authService.CompleteLoginAsync(request.FlowId, request.Phone, request.Otp); return this.ToActionResult(response); } [HttpPost("logout")] public async Task Logout() { var token = Request.Headers.Authorization.ToString().Replace("Bearer ", ""); var response = await _authService.LogoutAsync(token); return this.ToActionResult(response); } [AllowAnonymous] [HttpGet("options")] public IActionResult GetAuthOptions() { return Ok(ApiResponse.Ok(null, "Not implemented.")); } }