Files
backend/src/space/controllers/space-user.controller.ts

49 lines
1.7 KiB
TypeScript

import { ControllerRoute } from '@app/common/constants/controller-route';
import { Controller, Delete, Param, Post, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { SpaceUserService } from '../services';
import { BaseResponseDto } from '@app/common/dto/base.response.dto';
import { UserSpaceParam } from '../dtos';
import { PermissionsGuard } from 'src/guards/permissions.guard';
import { Permissions } from 'src/decorators/permissions.decorator';
@ApiTags('Space Module')
@Controller({
version: '1',
path: ControllerRoute.SPACE_USER.ROUTE,
})
export class SpaceUserController {
constructor(private readonly spaceUserService: SpaceUserService) {}
@ApiBearerAuth()
@Post('/:userUuid')
@UseGuards(PermissionsGuard)
@Permissions('ASSIGN_USER_TO_SPACE')
@ApiOperation({
summary:
ControllerRoute.SPACE_USER.ACTIONS.ASSOCIATE_SPACE_USER_DESCRIPTION,
description:
ControllerRoute.SPACE_USER.ACTIONS.ASSOCIATE_SPACE_USER_DESCRIPTION,
})
async associateUserToSpace(
@Param() params: UserSpaceParam,
): Promise<BaseResponseDto> {
return this.spaceUserService.associateUserToSpace(params);
}
@ApiBearerAuth()
@Delete('/:userUuid')
@UseGuards(PermissionsGuard)
@Permissions('DELETE_USER_FROM_SPACE')
@ApiOperation({
summary: ControllerRoute.SPACE_USER.ACTIONS.DISSOCIATE_SPACE_USER_SUMMARY,
description:
ControllerRoute.SPACE_USER.ACTIONS.DISSOCIATE_SPACE_USER_DESCRIPTION,
})
async disassociateUserFromSpace(
@Param() params: UserSpaceParam,
): Promise<BaseResponseDto> {
return this.spaceUserService.disassociateUserFromSpace(params);
}
}