From 783c25d0937c871ef58041f36ef2a083b9b3b7ec Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 27 Jan 2026 11:47:16 +0000 Subject: [PATCH] fix: acl for version list --- packages/nc-gui/lib/types.ts | 2 ++ .../src/controllers/internal/operationScopes.ts | 4 ++-- packages/nocodb/src/models/Base.ts | 13 +++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/nc-gui/lib/types.ts b/packages/nc-gui/lib/types.ts index 13686fd3da..28fa190500 100644 --- a/packages/nc-gui/lib/types.ts +++ b/packages/nc-gui/lib/types.ts @@ -229,6 +229,8 @@ type NcProject = BaseType & { managed_app_master?: boolean managed_app_id?: string managed_app_version_id?: string + managed_app_version?: string + managed_app_published_at?: string auto_update?: boolean managed_app_schema_locked?: boolean } diff --git a/packages/nocodb/src/controllers/internal/operationScopes.ts b/packages/nocodb/src/controllers/internal/operationScopes.ts index d845f5cfd6..b6e7603125 100644 --- a/packages/nocodb/src/controllers/internal/operationScopes.ts +++ b/packages/nocodb/src/controllers/internal/operationScopes.ts @@ -127,8 +127,9 @@ export const OPERATION_SCOPES = { // Managed App Operations managedAppStoreList: 'org', - managedAppList: 'workspace', managedAppGet: 'org', + managedAppVersionsList: 'org', + managedAppList: 'workspace', managedAppCreate: 'workspace', managedAppUpdate: 'base', managedAppDelete: 'base', @@ -137,7 +138,6 @@ export const OPERATION_SCOPES = { managedAppUnpublish: 'base', managedAppInstall: 'workspace', managedAppGetUpdates: 'base', - managedAppVersionsList: 'base', managedAppInstallationsList: 'base', managedAppDeployments: 'base', managedAppVersionDeployments: 'base', diff --git a/packages/nocodb/src/models/Base.ts b/packages/nocodb/src/models/Base.ts index 8974a4d720..cc168f81e5 100644 --- a/packages/nocodb/src/models/Base.ts +++ b/packages/nocodb/src/models/Base.ts @@ -59,6 +59,9 @@ export default class Base implements BaseType { managed_app_id?: string; // Points to MANAGED_APPS (for both master and installed instances) managed_app_version_id?: string; // Current version ID from MANAGED_APP_VERSIONS auto_update?: boolean; // For installed instances: auto-update to new published versions + // managed app info (populated fields) + managed_app_version?: string; // Current version string + managed_app_published_at?: string; // When this version was published managed_app_schema_locked?: boolean; // Computed: whether schema modifications are allowed constructor(base: Partial) { @@ -69,8 +72,8 @@ export default class Base implements BaseType { return base && new Base(base); } - public static async computeSchemaLocked(_base: Base): Promise { - return false; + public static async populateManagedAppInfo(_base: Base): Promise { + return; } public static async createProject( @@ -289,9 +292,8 @@ export default class Base implements BaseType { } const base = this.castType(baseData); - // Compute managed_app_schema_locked if (base && base.managed_app_id) { - base.managed_app_schema_locked = await this.computeSchemaLocked(base); + await this.populateManagedAppInfo(base); } return base; @@ -370,9 +372,8 @@ export default class Base implements BaseType { if (baseData) { const base = this.castType(baseData); - // Compute managed_app_schema_locked if (base.managed_app_id) { - base.managed_app_schema_locked = await this.computeSchemaLocked(base); + await this.populateManagedAppInfo(base); } await base.getSources(includeConfig, ncMeta);