mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-23 08:58:26 +00:00
Created base for API endpoint, feature keys and DTO
This commit is contained in:
parent
fbb30fcff9
commit
b13a8ca376
7 changed files with 120 additions and 3 deletions
|
|
@ -38,6 +38,10 @@ export class FeatureAbilityFactory extends AbilityFactory<FEATURE_KEY, Subjects>
|
|||
FEATURE_KEY.CREATE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.UPDATE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.DELETE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.FETCH_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.CREATE_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.UPDATE_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.DELETE_QUERY_PERMISSIONS,
|
||||
],
|
||||
App
|
||||
);
|
||||
|
|
@ -56,6 +60,10 @@ export class FeatureAbilityFactory extends AbilityFactory<FEATURE_KEY, Subjects>
|
|||
FEATURE_KEY.CREATE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.UPDATE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.DELETE_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.FETCH_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.CREATE_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.UPDATE_QUERY_PERMISSIONS,
|
||||
FEATURE_KEY.DELETE_QUERY_PERMISSIONS,
|
||||
],
|
||||
App
|
||||
);
|
||||
|
|
@ -66,7 +74,15 @@ export class FeatureAbilityFactory extends AbilityFactory<FEATURE_KEY, Subjects>
|
|||
isAllAppsViewable ||
|
||||
(userAppPermissions?.viewableAppsId?.length && appId && userAppPermissions.viewableAppsId.includes(appId))
|
||||
) {
|
||||
can([FEATURE_KEY.FETCH_USERS, FEATURE_KEY.FETCH_USER_GROUPS, FEATURE_KEY.FETCH_PAGE_PERMISSIONS], App);
|
||||
can(
|
||||
[
|
||||
FEATURE_KEY.FETCH_USERS,
|
||||
FEATURE_KEY.FETCH_USER_GROUPS,
|
||||
FEATURE_KEY.FETCH_PAGE_PERMISSIONS,
|
||||
FEATURE_KEY.FETCH_QUERY_PERMISSIONS,
|
||||
],
|
||||
App
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,5 +10,9 @@ export const FEATURES: FeaturesConfig = {
|
|||
[FEATURE_KEY.CREATE_PAGE_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.UPDATE_PAGE_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.DELETE_PAGE_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.FETCH_QUERY_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.CREATE_QUERY_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.UPDATE_QUERY_PERMISSIONS]: {},
|
||||
[FEATURE_KEY.DELETE_QUERY_PERMISSIONS]: {},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -11,4 +11,8 @@ export enum FEATURE_KEY {
|
|||
CREATE_PAGE_PERMISSIONS = 'create_page_permissions',
|
||||
UPDATE_PAGE_PERMISSIONS = 'update_page_permissions',
|
||||
DELETE_PAGE_PERMISSIONS = 'delete_page_permissions',
|
||||
FETCH_QUERY_PERMISSIONS = 'fetch_query_permissions',
|
||||
CREATE_QUERY_PERMISSIONS = 'create_query_permissions',
|
||||
UPDATE_QUERY_PERMISSIONS = 'update_query_permissions',
|
||||
DELETE_QUERY_PERMISSIONS = 'delete_query_permissions',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { MODULES } from '@modules/app/constants/modules';
|
|||
import { InitFeature } from '@modules/app/decorators/init-feature.decorator';
|
||||
import { FEATURE_KEY } from './constants';
|
||||
import { JwtAuthGuard } from '@modules/session/guards/jwt-auth.guard';
|
||||
import { CreatePagePermissionDto } from './dto';
|
||||
import { CreatePagePermissionDto, CreateQueryPermissionDto } from './dto';
|
||||
|
||||
@InitModule(MODULES.APP_PERMISSIONS)
|
||||
@UseGuards(JwtAuthGuard, FeatureAbilityGuard)
|
||||
|
|
@ -81,4 +81,50 @@ export class AppPermissionsController implements IAppPermissionsController {
|
|||
): Promise<any> {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
@InitFeature(FEATURE_KEY.FETCH_QUERY_PERMISSIONS)
|
||||
@Get(':appId/queries/:queryId')
|
||||
async fetchQueryPermissions(
|
||||
@User() user,
|
||||
@Param('appId') appId: string,
|
||||
@Param('queryId') queryId: string,
|
||||
@Res({ passthrough: true }) response: Response
|
||||
): Promise<any> {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
@InitFeature(FEATURE_KEY.CREATE_QUERY_PERMISSIONS)
|
||||
@Post(':appId/queries/:queryId')
|
||||
async createQueryPermissions(
|
||||
@User() user,
|
||||
@Param('appId') appId: string,
|
||||
@Param('queryId') queryId: string,
|
||||
@Body() body: CreateQueryPermissionDto,
|
||||
@Res({ passthrough: true }) response: Response
|
||||
): Promise<any> {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
@InitFeature(FEATURE_KEY.UPDATE_QUERY_PERMISSIONS)
|
||||
@Put(':appId/queries/:queryId')
|
||||
async updateQueryPermissions(
|
||||
@User() user,
|
||||
@Param('appId') appId: string,
|
||||
@Param('queryId') queryId: string,
|
||||
@Body() body: CreateQueryPermissionDto,
|
||||
@Res({ passthrough: true }) response: Response
|
||||
): Promise<any> {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
|
||||
@InitFeature(FEATURE_KEY.DELETE_QUERY_PERMISSIONS)
|
||||
@Delete(':appId/queries/:queryId')
|
||||
async deleteQueryPermissions(
|
||||
@User() user,
|
||||
@Param('appId') appId: string,
|
||||
@Param('queryId') queryId: string,
|
||||
@Res({ passthrough: true }) response: Response
|
||||
): Promise<any> {
|
||||
throw new NotFoundException();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,3 +24,26 @@ export class CreatePagePermissionDto {
|
|||
@Type(() => String)
|
||||
groups?: string[];
|
||||
}
|
||||
|
||||
export class CreateQueryPermissionDto {
|
||||
@IsUUID(4)
|
||||
@IsOptional()
|
||||
queryId: string;
|
||||
|
||||
@IsEnum(PAGE_PERMISSION_TYPE)
|
||||
type: PAGE_PERMISSION_TYPE;
|
||||
|
||||
@ValidateIf((o) => o.type === PAGE_PERMISSION_TYPE.SINGLE)
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
@IsOptional()
|
||||
@Type(() => String)
|
||||
users?: string[];
|
||||
|
||||
@ValidateIf((o) => o.type === PAGE_PERMISSION_TYPE.GROUP)
|
||||
@IsArray()
|
||||
@IsString({ each: true })
|
||||
@IsOptional()
|
||||
@Type(() => String)
|
||||
groups?: string[];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { User } from '@entities/user.entity';
|
||||
import { Response } from 'express';
|
||||
import { CreatePagePermissionDto } from '../dto';
|
||||
import { CreatePagePermissionDto, CreateQueryPermissionDto } from '../dto';
|
||||
|
||||
export interface IAppPermissionsController {
|
||||
fetchUsers(user: User, appId: string, response: Response): Promise<any>;
|
||||
|
|
@ -26,4 +26,24 @@ export interface IAppPermissionsController {
|
|||
): Promise<any>;
|
||||
|
||||
deletePagePermissions(user: User, appId: string, pageId: string, response: Response): Promise<any>;
|
||||
|
||||
fetchQueryPermissions(user: User, appId: string, queryId: string, response: Response): Promise<any>;
|
||||
|
||||
createQueryPermissions(
|
||||
user: User,
|
||||
appId: string,
|
||||
queryId: string,
|
||||
body: CreateQueryPermissionDto,
|
||||
response: Response
|
||||
): Promise<any>;
|
||||
|
||||
updateQueryPermissions(
|
||||
user: User,
|
||||
appId: string,
|
||||
queryId: string,
|
||||
body: CreateQueryPermissionDto,
|
||||
response: Response
|
||||
): Promise<any>;
|
||||
|
||||
deleteQueryPermissions(user: User, appId: string, queryId: string, response: Response): Promise<any>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,10 @@ interface Features {
|
|||
[FEATURE_KEY.CREATE_PAGE_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.UPDATE_PAGE_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.DELETE_PAGE_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.FETCH_QUERY_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.CREATE_QUERY_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.UPDATE_QUERY_PERMISSIONS]: FeatureConfig;
|
||||
[FEATURE_KEY.DELETE_QUERY_PERMISSIONS]: FeatureConfig;
|
||||
}
|
||||
|
||||
export interface FeaturesConfig {
|
||||
|
|
|
|||
Loading…
Reference in a new issue