feat(admin): add READ_ALL and ANNOTATE_ALL to groups permission matrix
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 was merged in pull request #160.
This commit is contained in:
@@ -25,6 +25,8 @@ $effect(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const STANDARD_PERMISSIONS: { value: string; label: string }[] = [
|
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' }
|
{ value: 'WRITE_ALL', label: 'Lesen & Schreiben' }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,42 @@ describe('Admin edit group page – rendering', () => {
|
|||||||
.element(page.getByRole('link', { name: /Abbrechen/i }))
|
.element(page.getByRole('link', { name: /Abbrechen/i }))
|
||||||
.toHaveAttribute('href', '/admin/groups');
|
.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 ────────────────────────────────────────────────────
|
// ─── Unsaved-changes guard ────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user