48 lines
1.6 KiB
TypeScript
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);
|
|
}
|
|
}
|