import { Body, Controller, Get, Param, Post, Req, UseGuards } from '@nestjs/common'; import type { Request } from 'express'; import type { AuthUser } from '../auth/auth.types'; import { CurrentUser } from '../auth/decorators/current-user.decorator'; import { Roles } from '../auth/decorators/roles.decorator'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RolesGuard } from '../auth/guards/roles.guard'; import { CreateTenantDto } from './dto/create-tenant.dto'; import { PlatformService } from './platform.service'; @Controller('platform/tenants') @UseGuards(JwtAuthGuard, RolesGuard) @Roles('PLATFORM_ADMIN') export class PlatformController { constructor(private readonly platform: PlatformService) {} @Get() list() { return this.platform.list(); } @Get(':id/users') listUsers(@CurrentUser() user: AuthUser, @Param('id') id: string, @Req() request: Request) { return this.platform.listUsers(user.sub, id, request.ip); } @Post(':id/users/:userId/password') issuePassword( @CurrentUser() user: AuthUser, @Param('id') id: string, @Param('userId') userId: string, @Req() request: Request, ) { return this.platform.issuePassword(user.sub, id, userId, request.ip); } @Post() create(@CurrentUser() user: AuthUser, @Body() dto: CreateTenantDto, @Req() request: Request) { return this.platform.create(user.sub, dto, request.ip); } }