2022-05-05 07:08:42 +00:00
|
|
|
import { Controller, Param, Post, UseGuards, Body } from '@nestjs/common';
|
2021-07-19 08:57:57 +00:00
|
|
|
import { OrganizationUsersService } from 'src/services/organization_users.service';
|
|
|
|
|
import { decamelizeKeys } from 'humps';
|
|
|
|
|
import { JwtAuthGuard } from '../../src/modules/auth/jwt-auth.guard';
|
2021-07-22 07:25:29 +00:00
|
|
|
import { AppAbility } from 'src/modules/casl/casl-ability.factory';
|
2021-07-21 16:57:04 +00:00
|
|
|
import { PoliciesGuard } from 'src/modules/casl/policies.guard';
|
|
|
|
|
import { CheckPolicies } from 'src/modules/casl/check_policies.decorator';
|
2022-05-05 07:08:42 +00:00
|
|
|
import { User as UserEntity } from 'src/entities/user.entity';
|
|
|
|
|
import { User } from 'src/decorators/user.decorator';
|
2022-04-20 09:16:57 +00:00
|
|
|
import { InviteNewUserDto } from '../dto/invite-new-user.dto';
|
2021-07-19 08:57:57 +00:00
|
|
|
|
|
|
|
|
@Controller('organization_users')
|
|
|
|
|
export class OrganizationUsersController {
|
2021-09-21 13:48:28 +00:00
|
|
|
constructor(private organizationUsersService: OrganizationUsersService) {}
|
2021-07-19 08:57:57 +00:00
|
|
|
|
2021-07-19 09:36:34 +00:00
|
|
|
// Endpoint for inviting new organization users
|
2021-07-22 09:41:50 +00:00
|
|
|
@UseGuards(JwtAuthGuard, PoliciesGuard)
|
2022-05-05 07:08:42 +00:00
|
|
|
@CheckPolicies((ability: AppAbility) => ability.can('inviteUser', UserEntity))
|
2021-07-19 09:36:34 +00:00
|
|
|
@Post()
|
2022-05-05 07:08:42 +00:00
|
|
|
async create(@User() user, @Body() inviteNewUserDto: InviteNewUserDto) {
|
|
|
|
|
const result = await this.organizationUsersService.inviteNewUser(user, inviteNewUserDto);
|
2021-07-19 08:57:57 +00:00
|
|
|
return decamelizeKeys({ users: result });
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-22 07:25:29 +00:00
|
|
|
@UseGuards(JwtAuthGuard, PoliciesGuard)
|
2022-05-05 07:08:42 +00:00
|
|
|
@CheckPolicies((ability: AppAbility) => ability.can('archiveUser', UserEntity))
|
2021-07-19 09:36:34 +00:00
|
|
|
@Post(':id/archive')
|
2022-05-05 07:08:42 +00:00
|
|
|
async archive(@Param('id') id: string) {
|
|
|
|
|
const result = await this.organizationUsersService.archive(id);
|
2021-07-19 09:36:34 +00:00
|
|
|
return decamelizeKeys({ result });
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-30 20:41:10 +00:00
|
|
|
@UseGuards(JwtAuthGuard, PoliciesGuard)
|
2022-05-05 07:08:42 +00:00
|
|
|
@CheckPolicies((ability: AppAbility) => ability.can('archiveUser', UserEntity))
|
2021-12-30 20:41:10 +00:00
|
|
|
@Post(':id/unarchive')
|
2022-05-05 07:08:42 +00:00
|
|
|
async unarchive(@User() user, @Param('id') id: string) {
|
|
|
|
|
const result = await this.organizationUsersService.unarchive(user, id);
|
2021-12-30 20:41:10 +00:00
|
|
|
return decamelizeKeys({ result });
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-20 09:16:57 +00:00
|
|
|
// Deprecated
|
2021-07-21 16:57:04 +00:00
|
|
|
@UseGuards(JwtAuthGuard, PoliciesGuard)
|
2022-05-05 07:08:42 +00:00
|
|
|
@CheckPolicies((ability: AppAbility) => ability.can('changeRole', UserEntity))
|
2021-07-19 09:41:33 +00:00
|
|
|
@Post(':id/change_role')
|
2022-05-05 07:08:42 +00:00
|
|
|
async changeRole(@Param('id') id, @Body('role') role) {
|
|
|
|
|
const result = await this.organizationUsersService.changeRole(id, role);
|
2021-07-19 09:41:33 +00:00
|
|
|
return decamelizeKeys({ result });
|
|
|
|
|
}
|
2021-07-19 08:57:57 +00:00
|
|
|
}
|