435b0e7806
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common';
|
|
import { OrgService } from './org.service';
|
|
import { OrgAdminGuard } from './org-admin.guard';
|
|
import { CurrentOrgAdmin } from './org-admin.decorator';
|
|
import { OrgAdminJwtPayload } from '@tower/types';
|
|
|
|
@Controller('org')
|
|
@UseGuards(OrgAdminGuard)
|
|
export class OrgController {
|
|
constructor(private readonly orgService: OrgService) {}
|
|
|
|
@Get('dashboard')
|
|
getDashboard(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) {
|
|
return this.orgService.getDashboard(admin.organizationId);
|
|
}
|
|
|
|
@Get('tenants')
|
|
getTenants(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) {
|
|
return this.orgService.getTenants(admin.organizationId);
|
|
}
|
|
|
|
@Post('tenants')
|
|
createTenant(
|
|
@CurrentOrgAdmin() admin: OrgAdminJwtPayload,
|
|
@Body() body: { name: string; slug: string },
|
|
) {
|
|
return this.orgService.createTenant(admin.organizationId, body, admin.role);
|
|
}
|
|
|
|
@Get('tenants/:id')
|
|
getTenant(@CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Param('id') id: string) {
|
|
return this.orgService.getTenant(admin.organizationId, id);
|
|
}
|
|
|
|
@Get('rules')
|
|
getRules(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) {
|
|
return this.orgService.getRules(admin.organizationId);
|
|
}
|
|
|
|
@Post('rules')
|
|
createRule(
|
|
@CurrentOrgAdmin() admin: OrgAdminJwtPayload,
|
|
@Body() body: { matchType: string; matchValue: string; action: string; priority?: number },
|
|
) {
|
|
return this.orgService.createRule(admin.organizationId, body);
|
|
}
|
|
|
|
@Patch('rules/:id')
|
|
updateRule(
|
|
@CurrentOrgAdmin() admin: OrgAdminJwtPayload,
|
|
@Param('id') id: string,
|
|
@Body() body: { matchValue?: string; action?: string; priority?: number; isActive?: boolean },
|
|
) {
|
|
return this.orgService.updateRule(admin.organizationId, id, body);
|
|
}
|
|
|
|
@Delete('rules/:id')
|
|
deleteRule(@CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Param('id') id: string) {
|
|
return this.orgService.deleteRule(admin.organizationId, id);
|
|
}
|
|
}
|