@@ -16,9 +16,10 @@ import { AuthenticatedRequest } from 'src/engine/api/rest/types/authenticated-re
1616import { ActorFromAuthContextService } from 'src/engine/core-modules/actor/services/actor-from-auth-context.service' ;
1717import { ApiKeyRoleService } from 'src/engine/core-modules/api-key/services/api-key-role.service' ;
1818import { isApiKeyAuthContext } from 'src/engine/core-modules/auth/guards/is-api-key-auth-context.guard' ;
19+ import { isApplicationAuthContext } from 'src/engine/core-modules/auth/guards/is-application-auth-context.guard' ;
1920import { isUserAuthContext } from 'src/engine/core-modules/auth/guards/is-user-auth-context.guard' ;
2021import { AccessTokenService } from 'src/engine/core-modules/auth/token/services/access-token.service' ;
21- import { WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type' ;
22+ import { type WorkspaceAuthContext } from 'src/engine/core-modules/auth/types/workspace-auth-context.type' ;
2223import { WorkspaceDomainsService } from 'src/engine/core-modules/domain/workspace-domains/services/workspace-domains.service' ;
2324import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service' ;
2425import { WorkspaceNotFoundDefaultError } from 'src/engine/core-modules/workspace/workspace.exception' ;
@@ -87,18 +88,27 @@ export abstract class RestApiBaseHandler {
8788 }
8889
8990 private getObjectsPermissions = async ( authContext : WorkspaceAuthContext ) => {
91+ const workspaceId = authContext . workspace . id ;
9092 let roleId : string ;
9193
9294 if ( isApiKeyAuthContext ( authContext ) ) {
9395 roleId = await this . apiKeyRoleService . getRoleIdForApiKeyId (
9496 authContext . apiKey . id ,
95- authContext . workspace . id ,
97+ workspaceId ,
9698 ) ;
99+ } else if ( isApplicationAuthContext ( authContext ) ) {
100+ if ( ! isDefined ( authContext . application . defaultLogicFunctionRoleId ) ) {
101+ throw new PermissionsException (
102+ PermissionsExceptionMessage . APPLICATION_ROLE_NOT_FOUND ,
103+ PermissionsExceptionCode . APPLICATION_ROLE_NOT_FOUND ,
104+ ) ;
105+ }
106+ roleId = authContext . application . defaultLogicFunctionRoleId ;
97107 } else if ( isUserAuthContext ( authContext ) ) {
98108 const userWorkspaceRoleId =
99109 await this . userRoleService . getRoleIdForUserWorkspace ( {
100110 userWorkspaceId : authContext . userWorkspaceId ,
101- workspaceId : authContext . workspace . id ,
111+ workspaceId,
102112 } ) ;
103113
104114 if ( ! isDefined ( userWorkspaceRoleId ) ) {
@@ -111,16 +121,15 @@ export abstract class RestApiBaseHandler {
111121 roleId = userWorkspaceRoleId ;
112122 } else {
113123 throw new PermissionsException (
114- 'Authentication context is invalid' ,
124+ PermissionsExceptionMessage . NO_AUTHENTICATION_CONTEXT ,
115125 PermissionsExceptionCode . NO_AUTHENTICATION_CONTEXT ,
116126 ) ;
117127 }
118128
119129 const { rolesPermissions } =
120- await this . workspaceCacheService . getOrRecompute (
121- authContext . workspace . id ,
122- [ 'rolesPermissions' ] ,
123- ) ;
130+ await this . workspaceCacheService . getOrRecompute ( workspaceId , [
131+ 'rolesPermissions' ,
132+ ] ) ;
124133
125134 return { objectsPermissions : rolesPermissions [ roleId ] } ;
126135 } ;
0 commit comments