2021-07-19 08:57:57 +00:00
|
|
|
import { Controller, Get, Param, Post, Query, Request, UseGuards } from '@nestjs/common';
|
|
|
|
|
import { OrganizationUsersService } from 'src/services/organization_users.service';
|
|
|
|
|
import { decamelizeKeys } from 'humps';
|
|
|
|
|
import { JwtAuthGuard } from '../../src/modules/auth/jwt-auth.guard';
|
2021-07-21 16:57:04 +00:00
|
|
|
import { AppAbility, CaslAbilityFactory } from 'src/modules/casl/casl-ability.factory';
|
|
|
|
|
import { PoliciesGuard } from 'src/modules/casl/policies.guard';
|
|
|
|
|
import { CheckPolicies } from 'src/modules/casl/check_policies.decorator';
|
|
|
|
|
import { User } from 'src/entities/user.entity';
|
2021-07-19 08:57:57 +00:00
|
|
|
|
|
|
|
|
@Controller('organization_users')
|
|
|
|
|
export class OrganizationUsersController {
|
|
|
|
|
constructor(
|
2021-07-21 16:57:04 +00:00
|
|
|
private organizationUsersService: OrganizationUsersService,
|
|
|
|
|
private caslAbilityFactory: CaslAbilityFactory
|
2021-07-19 08:57:57 +00:00
|
|
|
) { }
|
|
|
|
|
|
2021-07-19 09:36:34 +00:00
|
|
|
// Endpoint for inviting new organization users
|
2021-07-19 08:57:57 +00:00
|
|
|
@UseGuards(JwtAuthGuard)
|
2021-07-19 09:36:34 +00:00
|
|
|
@Post()
|
2021-07-19 08:57:57 +00:00
|
|
|
async create(@Request() req, @Param() params) {
|
2021-07-19 09:36:34 +00:00
|
|
|
const result = await this.organizationUsersService.inviteNewUser(req.user, req.body);
|
2021-07-19 08:57:57 +00:00
|
|
|
return decamelizeKeys({ users: result });
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-19 09:36:34 +00:00
|
|
|
@UseGuards(JwtAuthGuard)
|
|
|
|
|
@Post(':id/archive')
|
|
|
|
|
async archive(@Request() req, @Param() params) {
|
|
|
|
|
const result = await this.organizationUsersService.archive(params.id);
|
|
|
|
|
return decamelizeKeys({ result });
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-21 16:57:04 +00:00
|
|
|
@UseGuards(JwtAuthGuard, PoliciesGuard)
|
|
|
|
|
@CheckPolicies((ability: AppAbility) => ability.can('changeRole', User))
|
2021-07-19 09:41:33 +00:00
|
|
|
@Post(':id/change_role')
|
|
|
|
|
async changeRole(@Request() req, @Param() params) {
|
|
|
|
|
const result = await this.organizationUsersService.changeRole(req.user, params.id, req.body.role);
|
|
|
|
|
return decamelizeKeys({ result });
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-19 08:57:57 +00:00
|
|
|
}
|