using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; namespace OneForMe.Controllers; [ApiController] [Route("api/[controller]")] public class AuthController : ControllerBase { private readonly UserManager _userManager; private readonly SignInManager _signInManager; public AuthController(UserManager userManager, SignInManager signInManager) { _userManager = userManager; _signInManager = signInManager; } /// /// Register a new user /// [HttpPost("register")] public async Task Register([FromBody] RegisterRequest request) { var user = new IdentityUser { UserName = request.Email, Email = request.Email }; var result = await _userManager.CreateAsync(user, request.Password); if (result.Succeeded) return Ok(new { message = "User registered successfully" }); return BadRequest(new { errors = result.Errors.Select(e => e.Description) }); } /// /// Login user /// [HttpPost("login")] public async Task Login([FromBody] LoginRequest request) { var result = await _signInManager.PasswordSignInAsync(request.Email, request.Password, false, false); if (result.Succeeded) return Ok(new { message = "Login successful" }); return Unauthorized(new { message = "Invalid email or password" }); } /// /// Logout user /// [HttpPost("logout")] public async Task Logout() { await _signInManager.SignOutAsync(); return Ok(new { message = "Logout successful" }); } } public class RegisterRequest { public string Email { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; } public class LoginRequest { public string Email { get; set; } = string.Empty; public string Password { get; set; } = string.Empty; }