Skip to content

Commit e31a789

Browse files
committed
fix(settings): gate policies menu by editable policies
Signed-off-by: Vitor Mattos <1079143+vitormattos@users.noreply.github.com>
1 parent 1c3b185 commit e31a789

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

src/components/Settings/Settings.vue

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import { t } from '@nextcloud/l10n'
4545
import { getCurrentUser } from '@nextcloud/auth'
4646
import { loadState } from '@nextcloud/initial-state'
4747
import { generateUrl } from '@nextcloud/router'
48+
import type { EffectivePoliciesResponse } from '../../types'
4849
4950
5051
import NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'
@@ -63,7 +64,16 @@ defineOptions({
6364
6465
const isAdmin = getCurrentUser()?.isAdmin ?? false
6566
const config = loadState<{ can_manage_group_policies?: boolean }>('libresign', 'config', {})
66-
const canManagePolicies = isAdmin || Boolean(config.can_manage_group_policies)
67+
const effectivePoliciesState = loadState<EffectivePoliciesResponse>('libresign', 'effective_policies', { policies: {} })
68+
const hasEditablePolicies = Object.values(effectivePoliciesState.policies ?? {}).some((policy) => {
69+
if (!policy || typeof policy !== 'object') {
70+
return false
71+
}
72+
73+
return Boolean((policy as { editableByCurrentActor?: boolean }).editableByCurrentActor)
74+
})
75+
76+
const canManagePolicies = isAdmin || (Boolean(config.can_manage_group_policies) && hasEditablePolicies)
6777
6878
function getAdminRoute() {
6979
return generateUrl('settings/admin/libresign')

0 commit comments

Comments
 (0)