64 lines
1.6 KiB
C#
Raw Normal View History

2024-07-09 18:03:42 -05:00
using API.DTO.Base;
using API.DTO.Login;
2024-07-12 17:27:01 -05:00
using API.Errors;
using API.Services;
2024-07-09 18:03:42 -05:00
using API.Services.Interfaces;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
namespace API.Controllers
{
[ApiController]
[Route("api/v1/[controller]")]
public class AuthController : ControllerBase
{
private readonly ILogger<AuthController> _logger;
private readonly IUserManager _userManager;
2024-07-12 17:27:01 -05:00
private readonly UserService _userService;
2024-07-09 18:03:42 -05:00
2024-07-12 17:27:01 -05:00
public AuthController(ILogger<AuthController> logger, IUserManager userManager, UserService userService)
2024-07-09 18:03:42 -05:00
{
_logger = logger;
_userManager = userManager;
2024-07-12 17:27:01 -05:00
_userService = userService;
2024-07-09 18:03:42 -05:00
}
[HttpPost("login")]
public ActionResult<UserDTO> login(UserLoginDTO userLogin)
{
2024-07-12 17:27:01 -05:00
UserDTO? user = _userManager.authenticateUser(userLogin);
2024-07-09 18:03:42 -05:00
if (user == null)
return new UnauthorizedResult();
Claim[] claims =
{
new Claim(ClaimTypes.NameIdentifier, user.id.ToString())
};
ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
//todo confirm if this is accurate
AuthenticationProperties authProperties = new AuthenticationProperties();
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties);
return Ok(user);
}
2024-07-12 17:27:01 -05:00
[HttpPost("register")]
public ActionResult<UserDTO> register(UserRegisterDTO registerDTO)
{
UserDTO? user = _userManager.registerUser(registerDTO);
if (user == null)
{
return Conflict(Strings.UserExists);
}
return Ok(user);
}
2024-07-09 18:03:42 -05:00
}
}