using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Tiku.Application.Security; using Tiku.Application.Tenancy; namespace Tiku.Api.Controllers; [ApiController] [Tags("租户端-开通引导")] [Route("api/tenant-onboarding")] [Authorize(Policy = BackendPermissions.TenantSettingsManage)] public sealed class TenantOnboardingController( ITenantOnboardingService onboardingService, ICurrentAccessContext accessContext) : ControllerBase { [HttpGet("status")] [EndpointSummary("查询租户开通引导状态")] public async Task Status(CancellationToken cancellationToken) { var access = await accessContext.GetAsync(cancellationToken); if (access.TenantId is not { } tenantId || !access.IsCurrentTenantMember) { throw new TenantExternalProviderException("Tenant onboarding access is denied.", "tenant_access_denied"); } return await onboardingService.GetStatusAsync(tenantId, cancellationToken); } }