nestapp/src/modules/rbac/controllers/manager/permission.controller.ts
2025-07-01 10:38:38 +08:00

48 lines
1.6 KiB
TypeScript

import { Controller, Get, Param, ParseUUIDPipe, Query, SerializeOptions } from '@nestjs/common';
import { ApiBearerAuth, ApiTags } from '@nestjs/swagger';
import { PermissionAction } from '@/modules/rbac/constants';
import { Permission } from '@/modules/rbac/decorators/permission.decorator';
import { PermissionEntity } from '@/modules/rbac/entities';
import { RbacModule } from '@/modules/rbac/rbac.module';
import { PermissionService } from '@/modules/rbac/services';
import { PermissionChecker } from '@/modules/rbac/types';
import { Depends } from '@/modules/restful/decorators/depend.decorator';
import { PaginateWithTrashedDto } from '@/modules/restful/dtos/paginate-width-trashed.dto';
const permission: PermissionChecker = async (ab) =>
ab.can(PermissionAction.MANAGE, PermissionEntity.name);
@ApiTags('权限管理')
@ApiBearerAuth()
@Depends(RbacModule)
@Controller('permissions')
export class PermissionController {
constructor(private service: PermissionService) {}
permission: PermissionChecker = async (ab) =>
ab.can(PermissionAction.MANAGE, PermissionEntity.name);
/**
* 分页列表查询
* @param options
*/
@Get()
@SerializeOptions({ groups: ['permission-list'] })
@Permission(permission)
async list(@Query() options: PaginateWithTrashedDto) {
return this.service.paginate(options);
}
/**
* 分页列表查询
* @param id
*/
@Get(':id')
@SerializeOptions({ groups: ['permission-detail'] })
@Permission(permission)
async detail(@Param('id', new ParseUUIDPipe()) id: string) {
return this.service.detail(id);
}
}