Table of Contents

Class RolesController

Namespace
KadicAuth.Api.Controllers
Assembly
KadicAuth.Api.dll
[ApiController]
[Authorize]
[Route("api/[controller]")]
[Produces("application/json", new string[] { })]
public class RolesController : ControllerBase
Inheritance
object
ControllerBase
RolesController

Constructors

RolesController(IMediator, ILogger<RolesController>, IStringLocalizer<AuthMessages>)

public RolesController(IMediator mediator, ILogger<RolesController> logger, IStringLocalizer<AuthMessages> localizer)

Parameters

mediator IMediator
logger ILogger<RolesController>
localizer IStringLocalizer<AuthMessages>

Methods

AssignPermissionsBatchToRole(Guid, AssignPermissionsBatchRequest, CancellationToken)

Assign multiple permissions to a role by permission IDs

[HttpPost("{roleId:guid}/assign-batch-permissions")]
[Authorize(Policy = "AUTH_ROLES_ASSIGN_PERMISSIONS")]
[ProducesResponseType(typeof(AssignPermissionsBatchResult), 200)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<AssignPermissionsBatchResult>> AssignPermissionsBatchToRole(Guid roleId, AssignPermissionsBatchRequest request, CancellationToken cancellationToken)

Parameters

roleId Guid
request AssignPermissionsBatchRequest
cancellationToken CancellationToken

Returns

Task<ActionResult<AssignPermissionsBatchResult>>

AssignPermissionsByCodeToRole(Guid, AssignPermissionsByCodesRequest, CancellationToken)

Assign multiple permissions to a role by permission codes (resolves codes to IDs server-side)

[HttpPost("{roleId:guid}/permissions/assign")]
[Authorize(Policy = "AUTH_ROLES_ASSIGN_PERMISSIONS")]
[ProducesResponseType(typeof(AssignPermissionsToRoleResult), 200)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<AssignPermissionsToRoleResult>> AssignPermissionsByCodeToRole(Guid roleId, AssignPermissionsByCodesRequest request, CancellationToken cancellationToken)

Parameters

roleId Guid
request AssignPermissionsByCodesRequest
cancellationToken CancellationToken

Returns

Task<ActionResult<AssignPermissionsToRoleResult>>

CreateRole(CreateRoleDto, CancellationToken)

Create a new role

[HttpPost]
[Authorize(Policy = "AUTH_ROLES_CREATE")]
[ProducesResponseType(typeof(Result<Guid>), 201)]
[ProducesResponseType(typeof(Result), 400)]
[ProducesResponseType(typeof(Result), 409)]
public Task<ActionResult> CreateRole(CreateRoleDto request, CancellationToken cancellationToken)

Parameters

request CreateRoleDto
cancellationToken CancellationToken

Returns

Task<ActionResult>

DeleteRole(Guid, CancellationToken)

Delete a role by ID

[HttpDelete("{id:guid}")]
[Authorize(Policy = "AUTH_ROLES_DELETE")]
[ProducesResponseType(204)]
[ProducesResponseType(typeof(Error), 404)]
[ProducesResponseType(typeof(Error), 400)]
public Task<IActionResult> DeleteRole(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetRoleById(Guid, CancellationToken)

Get role by ID

[HttpGet("{id:guid}")]
[Authorize(Policy = "AUTH_ROLES_VIEW")]
[ProducesResponseType(typeof(RoleDto), 200)]
[ProducesResponseType(typeof(Error), 404)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<RoleDto>> GetRoleById(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<ActionResult<RoleDto>>

GetRoles(PaginatorRequestDto, Guid?, CancellationToken)

Get paginated list of roles

[HttpGet("role-permissions-paginated")]
[Authorize(Policy = "AUTH_ROLES_VIEW")]
[ProducesResponseType(typeof(PaginatorResponseDto<RoleDto>), 200)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<PaginatorResponseDto<RoleDto>>> GetRoles(PaginatorRequestDto paginatorRequest, Guid? roleId = null, CancellationToken cancellationToken = default)

Parameters

paginatorRequest PaginatorRequestDto
roleId Guid?
cancellationToken CancellationToken

Returns

Task<ActionResult<PaginatorResponseDto<RoleDto>>>

UpdateRoleWithPermissions(Guid, UpsertRolePermissionsRequest, CancellationToken)

Update role and manage permissions (upsert pattern)

[HttpPut("{id:guid}/update-with-permissions")]
[Authorize(Policy = "AUTH_ROLES_UPDATE")]
[ProducesResponseType(typeof(RoleUpsertResult), 200)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<RoleUpsertResult>> UpdateRoleWithPermissions(Guid id, UpsertRolePermissionsRequest request, CancellationToken cancellationToken)

Parameters

id Guid
request UpsertRolePermissionsRequest
cancellationToken CancellationToken

Returns

Task<ActionResult<RoleUpsertResult>>