diff --git a/server/src/modules/app-permissions/ability/index.ts b/server/src/modules/app-permissions/ability/index.ts index 5a03f417d5..81b25601b1 100644 --- a/server/src/modules/app-permissions/ability/index.ts +++ b/server/src/modules/app-permissions/ability/index.ts @@ -42,6 +42,10 @@ export class FeatureAbilityFactory extends AbilityFactory FEATURE_KEY.CREATE_QUERY_PERMISSIONS, FEATURE_KEY.UPDATE_QUERY_PERMISSIONS, FEATURE_KEY.DELETE_QUERY_PERMISSIONS, + FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS, + FEATURE_KEY.CREATE_COMPONENT_PERMISSIONS, + FEATURE_KEY.UPDATE_COMPONENT_PERMISSIONS, + FEATURE_KEY.DELETE_COMPONENT_PERMISSIONS, ], App ); @@ -64,6 +68,10 @@ export class FeatureAbilityFactory extends AbilityFactory FEATURE_KEY.CREATE_QUERY_PERMISSIONS, FEATURE_KEY.UPDATE_QUERY_PERMISSIONS, FEATURE_KEY.DELETE_QUERY_PERMISSIONS, + FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS, + FEATURE_KEY.CREATE_COMPONENT_PERMISSIONS, + FEATURE_KEY.UPDATE_COMPONENT_PERMISSIONS, + FEATURE_KEY.DELETE_COMPONENT_PERMISSIONS, ], App ); @@ -80,6 +88,7 @@ export class FeatureAbilityFactory extends AbilityFactory FEATURE_KEY.FETCH_USER_GROUPS, FEATURE_KEY.FETCH_PAGE_PERMISSIONS, FEATURE_KEY.FETCH_QUERY_PERMISSIONS, + FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS, ], App ); diff --git a/server/src/modules/app-permissions/constants/features.ts b/server/src/modules/app-permissions/constants/features.ts index 360b1cf4c9..cd992b88aa 100644 --- a/server/src/modules/app-permissions/constants/features.ts +++ b/server/src/modules/app-permissions/constants/features.ts @@ -14,5 +14,9 @@ export const FEATURES: FeaturesConfig = { [FEATURE_KEY.CREATE_QUERY_PERMISSIONS]: {}, [FEATURE_KEY.UPDATE_QUERY_PERMISSIONS]: {}, [FEATURE_KEY.DELETE_QUERY_PERMISSIONS]: {}, + [FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS]: {}, + [FEATURE_KEY.CREATE_COMPONENT_PERMISSIONS]: {}, + [FEATURE_KEY.UPDATE_COMPONENT_PERMISSIONS]: {}, + [FEATURE_KEY.DELETE_COMPONENT_PERMISSIONS]: {}, }, }; diff --git a/server/src/modules/app-permissions/constants/index.ts b/server/src/modules/app-permissions/constants/index.ts index ff5063e948..14e7122e2f 100644 --- a/server/src/modules/app-permissions/constants/index.ts +++ b/server/src/modules/app-permissions/constants/index.ts @@ -21,4 +21,8 @@ export enum FEATURE_KEY { CREATE_QUERY_PERMISSIONS = 'create_query_permissions', UPDATE_QUERY_PERMISSIONS = 'update_query_permissions', DELETE_QUERY_PERMISSIONS = 'delete_query_permissions', + FETCH_COMPONENT_PERMISSIONS = 'fetch_component_permissions', + CREATE_COMPONENT_PERMISSIONS = 'create_component_permissions', + UPDATE_COMPONENT_PERMISSIONS = 'update_component_permissions', + DELETE_COMPONENT_PERMISSIONS = 'delete_component_permissions', } diff --git a/server/src/modules/app-permissions/controller.ts b/server/src/modules/app-permissions/controller.ts index d317e3115b..65bdaf017d 100644 --- a/server/src/modules/app-permissions/controller.ts +++ b/server/src/modules/app-permissions/controller.ts @@ -127,4 +127,50 @@ export class AppPermissionsController implements IAppPermissionsController { ): Promise { throw new NotFoundException(); } + + @InitFeature(FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS) + @Get(':appId/components/:componentId') + async fetchComponentPermissions( + @User() user, + @Param('appId') appId: string, + @Param('componentId') componentId: string, + @Res({ passthrough: true }) response: Response + ): Promise { + throw new NotFoundException(); + } + + @InitFeature(FEATURE_KEY.CREATE_COMPONENT_PERMISSIONS) + @Post(':appId/components/:componentId') + async createComponentPermissions( + @User() user, + @Param('appId') appId: string, + @Param('componentId') componentId: string, + @Body() body: CreatePermissionDto, + @Res({ passthrough: true }) response: Response + ): Promise { + throw new NotFoundException(); + } + + @InitFeature(FEATURE_KEY.UPDATE_COMPONENT_PERMISSIONS) + @Put(':appId/components/:componentId') + async updateComponentPermissions( + @User() user, + @Param('appId') appId: string, + @Param('componentId') componentId: string, + @Body() body: CreatePermissionDto, + @Res({ passthrough: true }) response: Response + ): Promise { + throw new NotFoundException(); + } + + @InitFeature(FEATURE_KEY.DELETE_COMPONENT_PERMISSIONS) + @Delete(':appId/components/:componentId') + async deleteComponentPermissions( + @User() user, + @Param('appId') appId: string, + @Param('componentId') componentId: string, + @Res({ passthrough: true }) response: Response + ): Promise { + throw new NotFoundException(); + } } diff --git a/server/src/modules/app-permissions/interfaces/IController.ts b/server/src/modules/app-permissions/interfaces/IController.ts index a7808d280d..e9b9cdc24e 100644 --- a/server/src/modules/app-permissions/interfaces/IController.ts +++ b/server/src/modules/app-permissions/interfaces/IController.ts @@ -46,4 +46,24 @@ export interface IAppPermissionsController { ): Promise; deleteQueryPermissions(user: User, appId: string, queryId: string, response: Response): Promise; + + fetchComponentPermissions(user: User, appId: string, componentId: string, response: Response): Promise; + + createComponentPermissions( + user: User, + appId: string, + componentId: string, + body: CreatePermissionDto, + response: Response + ): Promise; + + updateComponentPermissions( + user: User, + appId: string, + componentId: string, + body: CreatePermissionDto, + response: Response + ): Promise; + + deleteComponentPermissions(user: User, appId: string, componentId: string, response: Response): Promise; } diff --git a/server/src/modules/app-permissions/types/index.ts b/server/src/modules/app-permissions/types/index.ts index d377f5a08f..5e3acf64b4 100644 --- a/server/src/modules/app-permissions/types/index.ts +++ b/server/src/modules/app-permissions/types/index.ts @@ -13,6 +13,10 @@ interface Features { [FEATURE_KEY.CREATE_QUERY_PERMISSIONS]: FeatureConfig; [FEATURE_KEY.UPDATE_QUERY_PERMISSIONS]: FeatureConfig; [FEATURE_KEY.DELETE_QUERY_PERMISSIONS]: FeatureConfig; + [FEATURE_KEY.FETCH_COMPONENT_PERMISSIONS]: FeatureConfig; + [FEATURE_KEY.CREATE_COMPONENT_PERMISSIONS]: FeatureConfig; + [FEATURE_KEY.UPDATE_COMPONENT_PERMISSIONS]: FeatureConfig; + [FEATURE_KEY.DELETE_COMPONENT_PERMISSIONS]: FeatureConfig; } export interface FeaturesConfig {