Rechten ideen gezocht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

25/11/2022 09:12:59
Quote Anchor link
Hi

Ik heb een goed werkend rechten systeem
https://www.janr.be/phphulp/rechten.png
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
 
PHP hulp

PHP hulp

04/12/2022 16:35:38
 
Rob Doemaarwat

Rob Doemaarwat

25/11/2022 10:10:36
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

25/11/2022 10:39:32
Quote Anchor link
Ikzelf heb een rechtensysteem die werkt op een CRUD-model. Waarbij je rechten hebt voor Create, Read, Update, Delete. (acties). Voor het gemak heb ik ook Publish en Edit_own aan het rijtje toegevoegd.

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.
https://i.ibb.co/PWf1Mhp/afbeelding.png
https://i.ibb.co/qBK5Y4B/afbeelding.png
https://i.ibb.co/zQKzr4Z/afbeelding.png
Gewijzigd op 25/11/2022 12:02:02 door - Ariën -
 
Jan R

Jan R

26/11/2022 08:37:35
Quote Anchor link
Bedankt.

Het zal een combinatie van worden. Nu nog schrijven:)

Crud is niet echt hier van toepassing. Het is alles of niets.

Jan
 
- Ariën  -
Beheerder

- Ariën -

26/11/2022 09:49:36
Quote Anchor link
Als ik zo zie kan je dit wel onderverdelen in een CRUD oplossing. Met name als ik kijk naar het ledenbeheer met toevoegen, wijzigingen en verwijderen.

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 -
 
Ward van der Put
Moderator

Ward van der Put

26/11/2022 11:56:20
Quote Anchor link
De CRUD-benadering van Ariën volg ik vaak ook, omdat die verschillende voordelen heeft. Niet alleen komen de rechten overeen met database-operaties, maar bovendien kun je ze gemakkelijk implementeren in REST API's én zijn ze heel eenvoudig te formaliseren met kleine integers en binaire waarden met binaire vergelijkingsoperatoren.

De "mapping" van basisrechten ziet er dan bijvoorbeeld zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
| Bin. | CRUD   | REST   |
| ---- | ------ | ------ |
| 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!
 
- Ariën  -
Beheerder

- Ariën -

26/11/2022 12:27:21
Quote Anchor link
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 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.
Gewijzigd op 26/11/2022 12:32:48 door - Ariën -
 
Ad Fundum

Ad Fundum

27/11/2022 12:53:26
Quote Anchor link
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.
Gewijzigd op 27/11/2022 12:53:48 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.