ToolJet/server/src/controllers/organization_users.controller.ts

41 lines
1.6 KiB
TypeScript
Raw Normal View History

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
) { }
// Endpoint for inviting new organization users
2021-07-19 08:57:57 +00:00
@UseGuards(JwtAuthGuard)
@Post()
2021-07-19 08:57:57 +00:00
async create(@Request() req, @Param() params) {
const result = await this.organizationUsersService.inviteNewUser(req.user, req.body);
2021-07-19 08:57:57 +00:00
return decamelizeKeys({ users: result });
}
@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
}