using API.BusinessLogic; using API.Models.UserModels; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System.Security.Claims; namespace API.Controllers { [ApiController] [Route("api/[controller]")] public class UserController : Controller { private readonly UserLogic _userLogic; public UserController(UserLogic userLogic) { _userLogic = userLogic; } [Authorize] [HttpGet("get")] public async Task ReadUser() { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _userLogic.GetUser(userId); } [HttpPost("login")] public async Task Login([FromBody] LoginDTO loginDTO) { return await _userLogic.Login(loginDTO); } [HttpPost("create")] public async Task CreateUser([FromBody] CreateUserDTO userDTO) { return await _userLogic.RegisterUser(userDTO); } [Authorize] [HttpPut("change-password")] public async Task ChangePassword([FromBody] ChangePasswordDTO passwordDTO) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _userLogic.ChangePassword(passwordDTO, userId); } [Authorize] [HttpPut("update")] public async Task UpdateUser([FromBody] UpdateUserDTO userDTO) { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _userLogic.EditProfile(userDTO, userId); } [Authorize] [HttpDelete("delete")] public async Task DeleteUser() { var claims = HttpContext.User.Claims; string userIdString = claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value; int userId = Convert.ToInt32(userIdString); return await _userLogic.DeleteUser(userId); } [HttpPost("refreshtoken/{refreshToken}")] public async Task RefreashToken(string refreshToken) { return await _userLogic.RefreshToken(refreshToken); } } }