diff --git a/packages/admin-ui/src/lib/core/src/common/base-detail.component.ts b/packages/admin-ui/src/lib/core/src/common/base-detail.component.ts index 44ae71499a..ebf25888bb 100644 --- a/packages/admin-ui/src/lib/core/src/common/base-detail.component.ts +++ b/packages/admin-ui/src/lib/core/src/common/base-detail.component.ts @@ -150,10 +150,13 @@ export abstract class BaseDetailComponent): CustomFieldConfig[] { + protected getCustomFieldConfig( + key: Exclude, + isOwner = false, + ): CustomFieldConfig[] { return this.serverConfigService.getCustomFieldsFor(key).filter(f => { if (f.requiresPermission?.length) { - return this.permissionsService.userHasPermissions(f.requiresPermission); + return this.permissionsService.userHasPermissions(f.requiresPermission, isOwner); } return true; }); diff --git a/packages/admin-ui/src/lib/core/src/providers/permissions/permissions.service.ts b/packages/admin-ui/src/lib/core/src/providers/permissions/permissions.service.ts index 1b199eaf15..80a02d541d 100644 --- a/packages/admin-ui/src/lib/core/src/providers/permissions/permissions.service.ts +++ b/packages/admin-ui/src/lib/core/src/providers/permissions/permissions.service.ts @@ -30,9 +30,9 @@ export class PermissionsService { this._currentUserPermissions$.next(permissions); } - userHasPermissions(requiredPermissions: Array): boolean { + userHasPermissions(requiredPermissions: Array, isOwner = false): boolean { for (const perm of requiredPermissions) { - if (this.currentUserPermissions.includes(perm)) { + if (this.currentUserPermissions.includes(perm) || (perm === Permission.Owner && isOwner)) { return true; } } diff --git a/packages/admin-ui/src/lib/settings/src/components/profile/profile.component.ts b/packages/admin-ui/src/lib/settings/src/components/profile/profile.component.ts index 8e0c48d5c5..d56e773f60 100644 --- a/packages/admin-ui/src/lib/settings/src/components/profile/profile.component.ts +++ b/packages/admin-ui/src/lib/settings/src/components/profile/profile.component.ts @@ -40,13 +40,13 @@ export const GET_PROFILE_DETAIL = gql` templateUrl: './profile.component.html', styleUrls: ['./profile.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false + standalone: false, }) export class ProfileComponent extends TypedBaseDetailComponent implements OnInit, OnDestroy { - customFields = this.getCustomFieldConfig('Administrator'); + customFields = this.getCustomFieldConfig('Administrator', true); detailForm = this.formBuilder.group({ emailAddress: ['', Validators.required], firstName: ['', Validators.required],