mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-24 09:28:31 +00:00
77 lines
3.2 KiB
TypeScript
77 lines
3.2 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common';
|
|
import { decamelizeKeys } from 'humps';
|
|
import { JwtAuthGuard } from '../modules/auth/jwt-auth.guard';
|
|
import { ForbiddenException } from '@nestjs/common';
|
|
import { User } from 'src/decorators/user.decorator';
|
|
import { AppEnvironmentService } from '@services/app_environments.service';
|
|
import { GlobalDataSourceAbilityFactory } from 'src/modules/casl/abilities/global-datasource-ability.factory';
|
|
import { DataSource } from 'src/entities/data_source.entity';
|
|
import { OrgEnvironmentVariablesAbilityFactory } from 'src/modules/casl/abilities/org-environment-variables-ability.factory';
|
|
import { OrgEnvironmentVariable } from 'src/entities/org_envirnoment_variable.entity';
|
|
import { AbilityService } from '@services/permissions-ability.service';
|
|
import { AppEnvironmentActionParametersDto } from '@dto/environment_action_parameters.dto';
|
|
|
|
@Controller('app-environments')
|
|
export class AppEnvironmentsController {
|
|
constructor(
|
|
private appEnvironmentServices: AppEnvironmentService,
|
|
private service: AbilityService,
|
|
private globalDataSourcesAbilityFactory: GlobalDataSourceAbilityFactory,
|
|
private orgEnvironmentVariablesAbilityFactory: OrgEnvironmentVariablesAbilityFactory
|
|
) {}
|
|
|
|
@UseGuards(JwtAuthGuard)
|
|
@Get('init')
|
|
async init(@User() user, @Query('editing_version_id') editingVersionId: string) {
|
|
/*
|
|
init is a method in the AppEnvironmentService class that is used to initialize the app environment mananger.
|
|
Should not use for any other purpose.
|
|
*/
|
|
return await this.appEnvironmentServices.init(editingVersionId, user.organizationId);
|
|
}
|
|
|
|
@UseGuards(JwtAuthGuard)
|
|
@Post('/post-action/:action')
|
|
async environmentActions(
|
|
@Param('action') action: string,
|
|
@Body() appEnvironmentActionParametersDto: AppEnvironmentActionParametersDto
|
|
) {
|
|
/*
|
|
init is a method in the AppEnvironmentService class that is used to initialize the app environment mananger.
|
|
Should not use for any other purpose.
|
|
*/
|
|
return await this.appEnvironmentServices.processActions(action, appEnvironmentActionParametersDto);
|
|
}
|
|
|
|
@UseGuards(JwtAuthGuard)
|
|
@Get()
|
|
async index(@User() user, @Query('app_id') appId: string) {
|
|
const ability = await this.globalDataSourcesAbilityFactory.globalDataSourceActions(user);
|
|
const orgEnvironmentAbility = await this.orgEnvironmentVariablesAbilityFactory.orgEnvironmentVariableActions(
|
|
user,
|
|
{}
|
|
);
|
|
const { organizationId } = user;
|
|
|
|
if (
|
|
!ability.can('fetchEnvironments', DataSource) &&
|
|
!orgEnvironmentAbility.can('fetchEnvironments', OrgEnvironmentVariable)
|
|
) {
|
|
throw new ForbiddenException('You do not have permissions to perform this action');
|
|
}
|
|
|
|
const environments = await this.appEnvironmentServices.getAll(organizationId, null, appId);
|
|
return decamelizeKeys({ environments });
|
|
}
|
|
|
|
@UseGuards(JwtAuthGuard)
|
|
@Get(':id/versions')
|
|
async getVersionsByEnvironment(@User() user, @Param('id') environmentId: string, @Query('app_id') appId: string) {
|
|
const appVersions = await this.appEnvironmentServices.getVersionsByEnvironment(
|
|
user?.organizationId,
|
|
appId,
|
|
environmentId
|
|
);
|
|
return { appVersions };
|
|
}
|
|
}
|