I have a question regarding a very fine-grained user permission system:
The basic idea is to establish some sort of editorial system, in which one user role (student) can create and edit a page (Template: project), but can only change the status from Draft to Unlisted, thus offering the page for review and publication.
Then another role (editor) can look up a table of pages with the invisible status and can change the reviewed pages to Listed and thus making them public.
Would it be possible to write this out in the page Options? Or would there be another way?
Thanks in advance (as always)
Matthias
I think your best take at the moment would be to use the page.changeStatus:before
hook page.changeStatus:before | Kirby CMS
And to throw Exceptions for users that are not allowed to change the page to a specific status. This will ensure that other users cannot make that change.
This will not alter the Panel UI though (e.g. disabling certain options). For that you would have to overwrite big parts of the core Panel, which I wouldn’t advise to. A future version of Kirby might offer more fine-grained permission options, but nothing we can announce in the near term.
Thanks @distantnative
Its a pitty, because this way kirby could establish a kind of hierarchical editorial workflow.
I think i will now add a switch in the backend, so that the Student-role can switch a field-status from draft to review, so that the Editor-role can see these and then switch the actual status…
Hm, maybe this can be solved with different blueprint for the different roles. Where blueprint x for role a only has draft and unlisted status options, and blueprint x for role b has all status options.
1 Like