Table of Contents

Class TenantsController

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

Constructors

TenantsController(IMediator, ILogger<TenantsController>, IStringLocalizer<AuthMessages>, ICurrentUser)

public TenantsController(IMediator mediator, ILogger<TenantsController> logger, IStringLocalizer<AuthMessages> localizer, ICurrentUser currentUser)

Parameters

mediator IMediator
logger ILogger<TenantsController>
localizer IStringLocalizer<AuthMessages>
currentUser ICurrentUser

Methods

ActivateTenant(Guid, CancellationToken)

Activate a tenant

[HttpPatch("{id:guid}/activate")]
[Authorize(Policy = "AUTH_TENANTS_ACTIVATE")]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(typeof(Error), 404)]
[ProducesResponseType(typeof(Error), 400)]
public Task<IActionResult> ActivateTenant(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

CreateTenant(CreateTenantCommand, CancellationToken)

Create a new tenant

[HttpPost]
[Authorize(Policy = "AUTH_TENANTS_CREATE")]
[ProducesResponseType(typeof(Result<Guid>), 201)]
[ProducesResponseType(typeof(Result), 400)]
[ProducesResponseType(typeof(Result), 409)]
public Task<ActionResult> CreateTenant(CreateTenantCommand command, CancellationToken cancellationToken)

Parameters

command CreateTenantCommand
cancellationToken CancellationToken

Returns

Task<ActionResult>

CreateTenantWithBranches(CreateTenantWithBranchesRequest, CancellationToken)

Create tenant with branches in a single call.

[HttpPost("create-tenant-with-branches")]
[Authorize(Policy = "AUTH_TENANTS_CREATE")]
[ProducesResponseType(typeof(Result<Guid>), 201)]
[ProducesResponseType(typeof(Result), 400)]
public Task<ActionResult<Result<Guid>>> CreateTenantWithBranches(CreateTenantWithBranchesRequest request, CancellationToken cancellationToken)

Parameters

request CreateTenantWithBranchesRequest
cancellationToken CancellationToken

Returns

Task<ActionResult<Result<Guid>>>

DeactivateTenant(Guid, CancellationToken)

Deactivate a tenant

[HttpPatch("{id:guid}/deactivate")]
[Authorize(Policy = "AUTH_TENANTS_DEACTIVATE")]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(typeof(Error), 404)]
[ProducesResponseType(typeof(Error), 400)]
public Task<IActionResult> DeactivateTenant(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<IActionResult>

GetMine(CancellationToken)

Self-service variant of GetTenantById(Guid, CancellationToken): returns the caller's own tenant (resolved server-side from the JWT), so any authenticated user can load basic info about their own tenant (name, theme, enabled modules) without the admin-only Tenants.View permission, which is meant to gate browsing/managing arbitrary tenants.

[HttpGet("mine")]
[ProducesResponseType(typeof(TenantDto), 200)]
[ProducesResponseType(typeof(Error), 404)]
public Task<ActionResult<TenantDto>> GetMine(CancellationToken cancellationToken)

Parameters

cancellationToken CancellationToken

Returns

Task<ActionResult<TenantDto>>

GetTenantById(Guid, CancellationToken)

Get tenant by ID

[HttpGet("{id:guid}")]
[ProducesResponseType(typeof(TenantDto), 200)]
[ProducesResponseType(typeof(Error), 404)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<TenantDto>> GetTenantById(Guid id, CancellationToken cancellationToken)

Parameters

id Guid
cancellationToken CancellationToken

Returns

Task<ActionResult<TenantDto>>

GetTenants(PaginatorRequestDto, bool?, Guid?, CancellationToken)

Get paginated list of tenants

[HttpGet]
[Authorize(Policy = "AUTH_TENANTS_VIEW")]
[ProducesResponseType(typeof(PaginatorResponseDto<TenantDto>), 200)]
[ProducesResponseType(typeof(Error), 400)]
public Task<ActionResult<PaginatorResponseDto<TenantDto>>> GetTenants(PaginatorRequestDto paginatorRequest, bool? isActive = null, Guid? planId = null, CancellationToken cancellationToken = default)

Parameters

paginatorRequest PaginatorRequestDto
isActive bool?
planId Guid?
cancellationToken CancellationToken

Returns

Task<ActionResult<PaginatorResponseDto<TenantDto>>>

UpdateTenant(UpdateTenantCommand, CancellationToken)

Update an existing tenant

[HttpPut]
[Authorize(Policy = "AUTH_TENANTS_UPDATE")]
[ProducesResponseType(typeof(Result<string>), 200)]
[ProducesResponseType(typeof(Result), 404)]
[ProducesResponseType(typeof(Result), 400)]
[ProducesResponseType(typeof(Result), 409)]
public Task<ActionResult> UpdateTenant(UpdateTenantCommand command, CancellationToken cancellationToken)

Parameters

command UpdateTenantCommand
cancellationToken CancellationToken

Returns

Task<ActionResult>