89 lines
2.3 KiB
TypeScript
89 lines
2.3 KiB
TypeScript
import {
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Put,
|
|
Delete,
|
|
Body,
|
|
Param,
|
|
UseGuards,
|
|
Request,
|
|
Query,
|
|
Logger,
|
|
} from '@nestjs/common';
|
|
import { CombinedAuthGuard } from '../auth/combined-auth.guard';
|
|
import { RolesGuard } from '../auth/roles.guard';
|
|
import { Roles } from '../auth/roles.decorator';
|
|
import { UserRole } from '../user/user-role.enum';
|
|
import {
|
|
KnowledgeGroupService,
|
|
CreateGroupDto,
|
|
UpdateGroupDto,
|
|
} from './knowledge-group.service';
|
|
import { I18nService } from '../i18n/i18n.service';
|
|
|
|
@Controller('knowledge-groups')
|
|
@UseGuards(CombinedAuthGuard, RolesGuard)
|
|
export class KnowledgeGroupController {
|
|
private readonly logger = new Logger(KnowledgeGroupController.name);
|
|
|
|
constructor(
|
|
private readonly groupService: KnowledgeGroupService,
|
|
private readonly i18nService: I18nService,
|
|
) {}
|
|
|
|
@Get()
|
|
async findAll(@Request() req) {
|
|
// All users can see all groups for their tenant (returns tree structure)
|
|
return await this.groupService.findAll(req.user.id, req.user.tenantId);
|
|
}
|
|
|
|
@Get(':id')
|
|
async findOne(@Param('id') id: string, @Request() req) {
|
|
return await this.groupService.findOne(id, req.user.id, req.user.tenantId);
|
|
}
|
|
|
|
@Post()
|
|
@Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
|
|
async create(@Body() createGroupDto: CreateGroupDto, @Request() req) {
|
|
this.logger.log('[KnowledgeGroup] create called, user: ' + JSON.stringify(req.user));
|
|
return await this.groupService.create(
|
|
req.user.id,
|
|
req.user.tenantId,
|
|
createGroupDto,
|
|
);
|
|
}
|
|
|
|
@Put(':id')
|
|
@Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
|
|
async update(
|
|
@Param('id') id: string,
|
|
@Body() updateGroupDto: UpdateGroupDto,
|
|
@Request() req,
|
|
) {
|
|
return await this.groupService.update(
|
|
id,
|
|
req.user.id,
|
|
req.user.tenantId,
|
|
updateGroupDto,
|
|
);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
|
|
async remove(@Param('id') id: string, @Request() req) {
|
|
await this.groupService.remove(id, req.user.id, req.user.tenantId);
|
|
return { message: this.i18nService.getMessage('groupDeleted') };
|
|
}
|
|
|
|
@Get(':id/files')
|
|
async getGroupFiles(@Param('id') id: string, @Request() req) {
|
|
const files = await this.groupService.getGroupFiles(
|
|
id,
|
|
req.user.id,
|
|
req.user.tenantId,
|
|
);
|
|
return { files };
|
|
}
|
|
}
|