Rechten ideen gezocht
Ik heb een goed werkend rechten systeem
Tabellen functies, taken en koppeltabel
Eenzelfde systeem gebruik ik ook voor de functies te koppellen aan de bestuursleden, andere tabellen.
Echter mijn probleem is nu dat ik bepaalde functies zoals "maak/bewerk club", local, ea niet wil in de lijst om te bewerken.
Hoe zouden jullie het doen?
- Extra lijst
- Hardcodes
- Verborgen(niet goed)
- ???
Gewijzigd op 25/11/2022 09:15:38 door Jan R
Dan moet je rechten aan de rechten hangen: wie mag dit recht toekennen. Als je dat recht (om toe te kennen) niet hebt, mag je het niet toekennen (en zie je het ook niet). De super-admin mag dit dan voor alle rechten, en de rest alleen voor de rechten waar ze toegang tot hebben.
Alle acties hebben diverse rechten zoals: Nieuws,Pagina's, Video's,Agenda,Gebruikersbeheer etc.
Verder heb ik diverse rollen (News Publisher, Junor News (zonder Publish recht), agendabeheerder) die in de database staan. Deze staan gekoppeld aan de rechten. Voor de rest is alles overervend zodat ik een gebruiker meerdere rollen kan toekennen waarbij de rechten opgeteld worden.
Toevoeging op 25/11/2022 11:47:41:
Even een screenshot van mijn rechten-beheerpaneel voor de duidelijkheid.
Gewijzigd op 25/11/2022 12:02:02 door - Ariën -
Het zal een combinatie van worden. Nu nog schrijven:)
Crud is niet echt hier van toepassing. Het is alles of niets.
Jan
De rest van de rollen valt minimaal onder Read, maar kan je ook verder de Create, Update en Delete verder uitkristaliseren.
Gewijzigd op 26/11/2022 09:52:21 door - Ariën -
De "mapping" van basisrechten ziet er dan bijvoorbeeld zo uit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
| Bin. | CRUD | REST |
| ---- | ------ | ------ |
| 0001 | Read | GET |
| 0010 | Create | POST |
| 0100 | Update | PATCH |
| 1000 | Delete | DELETE |
| ---- | ------ | ------ |
| 0001 | Read | GET |
| 0010 | Create | POST |
| 0100 | Update | PATCH |
| 1000 | Delete | DELETE |
Bijvoorbeeld binair 11 of decimaal 3 is dan het gecombineerde recht Create + Read en POST + GET. En dat met slechts 4 bits!
Gathering of Tweakers tegen kwam, maar prima voldeed aan mijn wensen. Uiteraard heb ik deze uit/omgebouwd om het te verbeteren voor in deze tijd.
Er komt uiteindelijk een prachtige array uit met de juiste rechten.
Eigenlijk zou ik die acties (move, view, edit etc..) en de ActionKind beter willen normaliseren. Maar dat komt nog wel eens.
Ikzelf gebruik geen bitwise systeem, maar ik sla de rechten in de database op op recht-niveau. De bron voor mijn script is een oude snippet-script wat ik jaren geleden op Er komt uiteindelijk een prachtige array uit met de juiste rechten.
Eigenlijk zou ik die acties (move, view, edit etc..) en de ActionKind beter willen normaliseren. Maar dat komt nog wel eens.
Gewijzigd op 26/11/2022 12:32:48 door - Ariën -
Jan R op 25/11/2022 09:12:59:
Hoe zouden jullie het doen?
Gewoon een recht maken om de rechten wel of niet te bewerken.
En ik zou het rechten-wiel niet zelf opnieuw uitvinden, dat is veel te omslachtig en zit standaard in de database server.
Je kunt gewoon werken met GRANT, REVOKE, CREATE POLICY (op tabeldata), en SET SESSION AUTHORIZATION (voor als je authenticatie nog zelf wil doen).
En voor wie geen PostGreSQL kan gebruiken: het kan ook in MySQL en MariaDB.
In ieder geval zou ik het niet in PHP doen, tenzij je alles met PHP wilt oplossen en niet de database wilt gebruiken. Of als je vast zit aan een ORM waar je niet onderuit kunt.