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);