63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using API.Extension;
|
|
using Application.Interfaces;
|
|
using Application.Models;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace API.Controllers;
|
|
|
|
public class UserController(IUserService userService) : BaseApiController
|
|
{
|
|
[Authorize(Roles = "SuperAdmin, Admin")]
|
|
[HttpGet]
|
|
public async Task<IResult> GetAllUsers(
|
|
[FromQuery] int pageNumber = 1,
|
|
[FromQuery] int pageSize = 10)
|
|
{
|
|
var users = await userService.GetAsync(pageNumber, pageSize);
|
|
return users.ToHttpResponse();
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpPut]
|
|
public async Task<IResult> UpdateUser([FromBody] UserUpdateRequest userUpdateRequest)
|
|
{
|
|
var result = await userService.UpdateAsync(userUpdateRequest);
|
|
return result.ToHttpResponse();
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpDelete("{id}")]
|
|
public async Task<IResult> DeleteUser(int id)
|
|
{
|
|
var currentUserId = int.Parse(User.FindFirst("UserId")!.Value);
|
|
var result = await userService.DeleteAsync(id, currentUserId);
|
|
return result.ToHttpResponse();
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpGet("{id}")]
|
|
public async Task<IResult> GetUserById(int id)
|
|
{
|
|
var user = await userService.GetUserByIdAsync(id);
|
|
return user.ToHttpResponse();
|
|
}
|
|
|
|
[Authorize(Roles = "SuperAdmin")]
|
|
[HttpPost("assign-role")]
|
|
public async Task<IResult> AssignRole([FromBody] AssingRoleRequest roleRequest)
|
|
|
|
{
|
|
var result = await userService.AssignRoleAsync(roleRequest);
|
|
return result.ToHttpResponse();
|
|
}
|
|
|
|
[Authorize(Roles = "SuperAdmin")]
|
|
[HttpDelete("revoke-role")]
|
|
public async Task<IResult> RevokeRole([FromBody] AssingRoleRequest roleRequest)
|
|
{
|
|
var result = await userService.RevokeRoleAsync(roleRequest);
|
|
return result.ToHttpResponse();
|
|
}
|
|
|
|
} |