icynet-auth-server/src/modules/api/admin/privilege-admin.controller.ts

45 lines
1.4 KiB
TypeScript

import {
BadRequestException,
Body,
Controller,
Get,
Post,
UseGuards,
} from '@nestjs/common';
import { Privileges } from 'src/decorators/privileges.decorator';
import { Scopes } from 'src/decorators/scopes.decorator';
import { OAuth2Guard } from 'src/guards/oauth2.guard';
import { PrivilegesGuard } from 'src/guards/privileges.guard';
import { ScopesGuard } from 'src/guards/scopes.guard';
import { PrivilegeService } from 'src/modules/objects/privilege/privilege.service';
import { FormUtilityService } from 'src/modules/utility/services/form-utility.service';
import { PaginationService } from 'src/modules/utility/services/paginate.service';
@Controller('/api/admin/privileges')
@UseGuards(OAuth2Guard, PrivilegesGuard, ScopesGuard)
export class PrivilegeAdminController {
constructor(
private _privilege: PrivilegeService,
private _paginate: PaginationService,
private _form: FormUtilityService,
) {}
@Get('')
@Scopes('management')
@Privileges('admin', 'admin:user', 'admin:user:privilege')
async privilegeList() {
return this._privilege.getAllPrivileges();
}
@Post('')
@Scopes('management')
@Privileges('admin', 'admin:user', 'admin:user:privilege')
async newPrivilege(@Body() body: { privilege: string }) {
if (!body.privilege) {
throw new BadRequestException('Privilege is required');
}
return this._privilege.createPrivilege(body.privilege);
}
}