ldap-cesi/ldap-cesi/Controllers/RoleController.cs
2025-03-08 18:33:08 +01:00

89 lines
3.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using ldap_cesi.DTOs.Inputs.Role;
using ldap_cesi.Services.Interfaces;
using Microsoft.AspNetCore.Authorization;
namespace ldap_cesi.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class RoleController : ControllerBase
{
private readonly IRoleService _roleService;
public RoleController(IRoleService roleService)
{
_roleService = roleService;
}
// GET: api/Role
/// <summary>
/// Endpoint qui retourne tous les rôles
/// </summary>
/// <returns>Un tableau de rôle</returns>
[HttpGet]
[Authorize(Roles = "admin")]
public async Task<IActionResult> GetAllRoles([FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 10)
{
var result = await _roleService.GetAll(pageNumber, pageSize);
return result.Success ? Ok(result) : BadRequest(result);
}
// GET: api/Role/{id}
/// <summary>
/// Endpoint qui retourne le role
/// </summary>
/// <param name="id">L'id du rôle.</param>
/// <returns>Le role update</returns>
[HttpGet("{id}")]
[Authorize(Roles = "admin")]
public async Task<IActionResult> GetRoleById(int id)
{
var result = await _roleService.GetById(id);
return result.Success ? Ok(result) : BadRequest(result);
}
// POST: api/Role
/// <summary>
/// Endpoint créer le Role
/// </summary>
/// <param name="CreateRoleInput">Le nom du rôle.</param>
/// <returns>Response.</returns>
[HttpPost]
[Authorize(Roles = "admin")]
public async Task<IActionResult> CreateRole([FromBody] RoleCreateDto roleDto)
{
var result = await _roleService.Create(roleDto);
return result.Success ? Ok(result) : BadRequest(result);
}
// PUT: api/Role
/// <summary>
/// Endpoint qui met à jour un role.
/// </summary>
/// <param name="roleUpdateDto">Les informations du role à mettre à jour. Id, nom</param>
/// <returns>Le role mis à jour.</returns>
[HttpPut]
[Authorize(Roles = "admin")]
public async Task<IActionResult> UpdateRole([FromBody] RoleUpdateDto roleDto)
{
var result = await _roleService.Update(roleDto);
return result.Success ? Ok(result) : BadRequest(result);
}
// DELETE: api/Role/{id}
/// <summary>
/// Endpoint qui supprime un rôle.
/// </summary>
/// <param name="id">L'ID du rôle à supprimer.</param>
/// <returns>Un message de confirmation de suppression.</returns>
[HttpDelete("{id}")]
[Authorize(Roles = "admin")]
public async Task<IActionResult> DeleteRole(int id)
{
var result = await _roleService.Delete(id);
return result.Success ? Ok(result) : BadRequest(result);
}
}
}