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

54 lines
2.2 KiB
TypeScript
Raw Normal View History

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';
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';
import { User as UserEntity } from 'src/entities/user.entity';
import { User } from 'src/decorators/user.decorator';
import { InviteNewUserDto } from '../dto/invite-new-user.dto';
import { OrganizationsService } from '@services/organizations.service';
2021-07-19 08:57:57 +00:00
@Controller('organization_users')
export class OrganizationUsersController {
constructor(
private organizationUsersService: OrganizationUsersService,
private organizationsService: OrganizationsService
) {}
2021-07-19 08:57:57 +00:00
// Endpoint for inviting new organization users
@UseGuards(JwtAuthGuard, PoliciesGuard)
@CheckPolicies((ability: AppAbility) => ability.can('inviteUser', UserEntity))
@Post()
async create(@User() user, @Body() inviteNewUserDto: InviteNewUserDto) {
2022-08-16 02:14:03 +00:00
await this.organizationsService.inviteNewUser(user, inviteNewUserDto);
return;
2021-07-19 08:57:57 +00:00
}
@UseGuards(JwtAuthGuard, PoliciesGuard)
@CheckPolicies((ability: AppAbility) => ability.can('archiveUser', UserEntity))
@Post(':id/archive')
async archive(@User() user, @Param('id') id: string) {
await this.organizationUsersService.archive(id, user.organizationId);
return;
}
@UseGuards(JwtAuthGuard, PoliciesGuard)
@CheckPolicies((ability: AppAbility) => ability.can('archiveUser', UserEntity))
@Post(':id/unarchive')
async unarchive(@User() user, @Param('id') id: string) {
await this.organizationUsersService.unarchive(user, id);
return;
}
// Deprecated
2021-07-21 16:57:04 +00:00
@UseGuards(JwtAuthGuard, PoliciesGuard)
@CheckPolicies((ability: AppAbility) => ability.can('changeRole', UserEntity))
2021-07-19 09:41:33 +00:00
@Post(':id/change_role')
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
}