Database structuur CMS

Gestart doorMiel41 reacties110 weergaven

42 berichten · pagina 2 van 3

Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Stop gewoon een user in een standaardgroep (admin, mod, gebruiker, gast) en maak daarnaast de mogelijkheid om hem aangepaste rechten te kunnen geven, dat is het handigst lijkt me.
Als je ineens een redacteur toe wil voegen dan pas je zijn rechten aan zodat hij daar ook rechten voor heeft.

Je hebt een paar standardacties:
- bekijken
- toevoegen
- bewerken
- verwijderen
- extra

Je geeft ze dit nummertje:
- bekijken: 1
- toevoegen: 2
- bewerken: 4
- verwijderen: 8
- extra: 16

In je database heb je dan een tabel userRights met kolommen id, user_id, module_id, rights.
id en user_id spreken voor zich, in module_id sla je het id van de module op zodat je weet om welke module het gaat, en in rights sla je een getal op die je rechten vertegenwoordigt (beetje vergelijkbaar als bij chmod biggrin).
Getalletje 22 is dan dus
- extra
- bewerken
- toevoegen

t Kost wat moeite om allemaal te maken, maar als het eenmaal werkt dan werkt het wel goed en lekker volgens mij. pompom
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
En wat nou als ik een ding hebt die nummer 20 heeft, en ik die wil met toevoegen? Dan kan diegene opeens ook extra en bewerken.. Dat is niet de bedoeling.yummie
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Nee. Als je iemand rechten 20 geeft dan heeft hij rechten voor extra en voor bewerken.
Als hij ook mag toevoegen dan zit je op 22.
Als hij ook moet bewerken dan zit je op 26, snap je? emo
[COLOR= #0000BB]<?php
$mag[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]bekijken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]toevoegen[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]2[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]bewerken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]4[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]verwijderen[/COLOR]    [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]extra[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]16[/COLOR]
    [COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]20[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$mag_reverse[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_reverse"]array_reverse[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag[/COLOR][COLOR= #007700]);[/COLOR]

[URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag_reverse[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$item[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]>=[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
    {[/COLOR]
        
        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]User mag [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$item[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]<br />[/COLOR][COLOR= #007700];[/COLOR]
        [COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]-=[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
        
    }
    
}[/COLOR]
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ff testenbiggrin Thx voor je scriptje iig.
Werkt nietyummie
[COLOR= #0000BB]<?php
$mag[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]bekijken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]toevoegen[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]2[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]bewerken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]4[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]verwijderen[/COLOR]    [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]extra[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]16[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]test[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]20[/COLOR]
    [COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]20[/COLOR][COLOR= #007700];[/COLOR]
[COLOR= #0000BB]$mag_reverse[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array_reverse"]array_reverse[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag[/COLOR][COLOR= #007700]);[/COLOR]

[URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag_reverse[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$item[/COLOR] [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]>=[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700])
    {[/COLOR]
        
        [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]User mag [/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$item[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]<br />[/COLOR][COLOR= #007700];[/COLOR]
        [COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]-=[/COLOR] [COLOR= #0000BB]$value[/COLOR][COLOR= #007700];
        
    }
    
}[/COLOR]
?>


Dan mag ie alleen test, terwijl ik nu wil dat ie extra en bewerken mag.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Test moet waarde 32 krijgen in je array, als ie dan test, extra en bewerken mag dan geef je hem dus 32 + 16 + 4 = 52; werkt prima pompom
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
O wacht, steeds het dubbele?hypocriteemo Thanks dan.. Dit is toch bitwise ofzo?
Moet ik wel steeds dat bestand aanpassen bij een nieuwe module?yummie
0
Berichten
3.283
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
- bekijken: 1
- toevoegen: 2
- bewerken: 4
- verwijderen: 8

1 = bekijken
2 = toevoegen
3 = bekijken + toevoegen
4 = bewerken
5 = bewerken + bekijken
6 = bewerken + toevoegen
7 = bewerken + toevoegen + bekijken
8 = verwijderen
ect.
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Jep. biggrinAls je hem niet het dubbele geeft dan kun je meerdere rechten krijgen met 1 getal zegmaar, en dat wil je niet.
Als je test 20 noemt, dan kan test ook bestaan uit extra en bewerken, omdat die samen ook 20 zijn, en je wil dat het gewoon een heel uniek recht is, en geen verwijzing naar een andere. smile
Om te kijken of een user mag bewerken kun je dit doen:

[COLOR= #0000BB]<?php
$mag[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]bekijken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]toevoegen[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]2[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]bewerken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]4[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]verwijderen[/COLOR]    [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]extra[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]16[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]test[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]32[/COLOR]
    [COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]7[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bewerken[/COLOR][COLOR= #007700]] &[/COLOR] [COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag niet bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR]

pompom
Alles wat je moet doen is in het begin alle rechten van de groep ophalen en die laten overschrijven door de rechten voor die specifieke gebruiker (als die er zijn), en daarna is het checken van rechten echt heel eenvoudig.

edit:
Nee, die standaardrechten zijn altijd hetzelfde, in je database sla je op welke user voor welke module welke rechten heeft, maar in elke module kun je niets meer dan die rechten die in de array staan, dus die array blijft gewoon hetzelfde, of je nou module of 100 modules hebt.
0
Berichten
3.283
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Lennard schreef:
Om te kijken of een user mag bewerken kun je dit doen:

[COLOR= #0000BB]<?php
$mag[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]bekijken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]toevoegen[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]2[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]bewerken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]4[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]verwijderen[/COLOR]    [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]extra[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]16[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]test[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]32[/COLOR]
    [COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]7[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bewerken[/COLOR][COLOR= #007700]] &[/COLOR] [COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag niet bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR]

pompom
Die werkt niet, of ik snap hem niet?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Jawel, op regel 13 staat 1 &, niet 2, en die checkt of die 4 van bewerken in die 7 zit. emoIk moest het ook opzoeken hoor, maar t scheelt je een loopje als je het zo doet. biggrin
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Maar als je voor sommige modules nou andere bepaalde rechten hebt..yummie
[COLOR= #0000BB]<?php
$mag[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR]
        [COLOR= #DD0000]bekijken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]1[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]toevoegen[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]2[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]bewerken[/COLOR]        [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]4[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]verwijderen[/COLOR]    [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]8[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]extra[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]16[/COLOR][COLOR= #007700],[/COLOR]
        [COLOR= #DD0000]test[/COLOR]            [COLOR= #007700]=>[/COLOR] [COLOR= #0000BB]32[/COLOR]
    [COLOR= #007700]);[/COLOR]

[COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]3[/COLOR][COLOR= #007700];[/COLOR]

[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$mag[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]bewerken[/COLOR][COLOR= #007700]] &[/COLOR] [COLOR= #0000BB]$rechten[/COLOR] [COLOR= #007700]==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag niet bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
    
    [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]je mag bewerken[/COLOR][COLOR= #007700];
    
}[/COLOR] 
?>


Je mag bewerken? werkt niet dusyummie
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Zoals?
Je kunt het geheel ook in een database stoppen of een paar reserve-rechten aanmaken, net wat je handig vindt, maar die 5 dingen lijken me persoonlijk dik voldoende. yummie
@ je edit:
zet even haakjes om $mag[bewerken] & $rechten heen emo
0
Berichten
3.283
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hier zegt hij telkens "je mag bewerken" hoe dan ook confused
edit: met die haakjes werkt hij wel biggrin
0
Miel

Lid · Topicstarter

Berichten
4.462
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Mij niet helemaalyummie Denk dat ik hem dan maar in de database gooi ofzo. Ik krijg ook nog klanten die extra modules willen enzo denk ik.yummieThx man, voor de hulp!biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Jaha, maar extra modules != extra mogelijke rechten.

Je hebt 1 array met mogelijke rechten, die array is voor elke module gelijk.
Of een klant nou 1 module wil hebben of 100 (zoals ik net al zei), die array blijft hetzelfde. Simpelweg omdat je in een module alleen hoeft te bekijken, toevoegen, bewerken of verwijderen. En om nog een beetje speling te hebben heb je dan nog die extra er tussen.

Je moet niet per module een aparte array maken, dan wordt het heel moeilijk om het nog een beetje overzichtelijk in een adminpanel weer te geven.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren