feat(admin): add READ_ALL and ANNOTATE_ALL to groups permission matrix
Some checks failed
CI / Unit & Component Tests (push) Failing after 6m39s
CI / Backend Unit Tests (push) Failing after 3m7s
CI / E2E Tests (push) Failing after 1h41m58s
CI / Unit & Component Tests (pull_request) Failing after 4m24s
CI / Backend Unit Tests (pull_request) Failing after 2m32s
CI / E2E Tests (pull_request) Failing after 1h43m50s

Adds 'Nur lesen' (READ_ALL) and 'Lesen & Annotieren' (ANNOTATE_ALL)
as standard permission options alongside the existing 'Lesen & Schreiben'
(WRITE_ALL), ordered from least to most access.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-03-30 10:12:48 +02:00
parent 9996055cac
commit 09d8fb5f95
2 changed files with 38 additions and 0 deletions

View File

@@ -25,6 +25,8 @@ $effect(() => {
});
const STANDARD_PERMISSIONS: { value: string; label: string }[] = [
{ value: 'READ_ALL', label: 'Nur lesen' },
{ value: 'ANNOTATE_ALL', label: 'Lesen & Annotieren' },
{ value: 'WRITE_ALL', label: 'Lesen & Schreiben' }
];

View File

@@ -41,6 +41,42 @@ describe('Admin edit group page rendering', () => {
.element(page.getByRole('link', { name: /Abbrechen/i }))
.toHaveAttribute('href', '/admin/groups');
});
it('renders a READ_ALL checkbox in the standard permissions section', async () => {
render(Page, { data: baseData, form: null });
const cb = document.querySelector<HTMLInputElement>(
'input[type="checkbox"][name="permissions"][value="READ_ALL"]'
);
expect(cb).not.toBeNull();
});
it('renders an ANNOTATE_ALL checkbox in the standard permissions section', async () => {
render(Page, { data: baseData, form: null });
const cb = document.querySelector<HTMLInputElement>(
'input[type="checkbox"][name="permissions"][value="ANNOTATE_ALL"]'
);
expect(cb).not.toBeNull();
});
it('pre-checks READ_ALL when group has it', async () => {
const data = { group: { id: 'g2', name: 'Leser', permissions: ['READ_ALL'] } };
render(Page, { data, form: null });
const cb = document.querySelector<HTMLInputElement>(
'input[type="checkbox"][name="permissions"][value="READ_ALL"]'
);
expect(cb?.checked).toBe(true);
});
it('pre-checks ANNOTATE_ALL when group has it', async () => {
const data = {
group: { id: 'g3', name: 'Annotatoren', permissions: ['READ_ALL', 'ANNOTATE_ALL'] }
};
render(Page, { data, form: null });
const cb = document.querySelector<HTMLInputElement>(
'input[type="checkbox"][name="permissions"][value="ANNOTATE_ALL"]'
);
expect(cb?.checked).toBe(true);
});
});
// ─── Unsaved-changes guard ────────────────────────────────────────────────────