Kombinuje prawie caly dzien nad systemem uprawnien do panelu administracyjnego. Generalnie ma byc kilka grup (niezarejestrowani, zwykli userzy, moderatorzy, admini itd.), grupy beda dawaly tylko ogolne uprawnienia (np. dostep do komentarzy, dostep do panelu administracyjnego, ...).
Glownie mam problem z ulozeniem sprawnego systemu uprawnien do panelu administracyjnego. Na stronie jest przewidzianych kilkanascie dzialow na poczatek, z czasem bedzie ich przybywac. W kazdym dziale beda: tabele ligowe, wyniki, statystyki, sklady druzyn, profile graczy itd.
I teraz chodzi o to, zeby w panelu administracyjnym indywidualnie ustalac dla kazdego uzytkownika dostep do poszczegolnych czesci.
Skorzystalem z pomyslu kurtza z potegami dwojki, oto jak to sobie rozlozylem:
[php:1:cc5f9c6fa9]
// Poszczegolne podsekcje dla dzialu w panelu adm.
A - wyniki + statystyki : array("2","32","64","128","2048","4096","8192","32768");
B - kontuzje + transfery : array("4","32","256","512","2048","4096","16384","32768");
C - tabele : array("8","64","256","1024","2048","8192","16384","32768");
D - sklady + profile graczy : array("16","128","512","1024","4096","8192","16384","32768");
// Wszystkie kombinacje uprawnien jako kolejne potegi 2
// 1 - A = 2
// 2 - B = 4
// 3 - C = 8
// 4 - D = 16
// 5 - A+B = 32
// 6 - A+C = 64
// 7 - A+D = 128
// 8 - B+C = 256
// 9 - B+D = 512
// 10 - C+D = 1024
// 11 - A+B+C = 2048
// 12 - A+B+D = 4096
// 13 - A+C+D = 8192
// 14 - B+C+D = 16384
// 15 - A+B+C+D = 32768
[/php:1:cc5f9c6fa9]
Ponizej wersja 'na szybko' zmiany uprawnien dla uzytkownika:
[php:1:cc5f9c6fa9]
<?php
if( !isset($_POST['go']) ) {
?>
<form action=up.php method=post>
<table>
<tr><td><input type="checkbox" name="upr[]" value="A"></td><td>Wyniki + statystyki</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="B"></td><td>Kontuzje + transfery</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="C"></td><td>Tabele</td></tr>
<tr><td><input type="checkbox" name="upr[]" value="D"></td><td>Sklady + profile graczy</td></tr>
</table>
<input type=hidden name=go value=ok>
<input type=submit>
</form>
<?php
} else {
$rights = array(
"A" => "2",
"B" => "4",
"C" => "8",
"D" => "16",
"AB" => "32",
"AC" => "64",
"AD" => "128",
"BC" => "256",
"BD" => "512",
"CD" => "1024",
"ABC" => "2048",
"ABD" => "4096",
"ACD" => "8192",
"BCD" => "16384",
"ABCD" => "32768");
$tmp = '';
for( $i=0; $i<count($_POST['upr']); $i++ ) {
$tmp .= $_POST['upr'][$i];
}
echo $rights[$tmp];
}
?>
[/php:1:cc5f9c6fa9]
W bazie beda tabele z uprawnieniami dla uzytkownika w danym dziale:
Kod
user_id | section_id | user_rights
np.
1 | 1 | 32768
np.
1 | 1 | 32768
No i przy wejsciu na stronke sprawdzamy poziom uzytkownika z wymaganym dla danej stronki, np.
[php:1:cc5f9c6fa9]
<?php
$required = array("2","32","64","128","2048","4096","8192","32768");
$user_right = 128; // wybierane z bazy oczywiscie
if( array_search($user_right,$required) ) {
echo "Masz dostep";
} else {
echo "Nie masz dostepu";
}
?>
[/php:1:cc5f9c6fa9]
No i to tak mniej wiecej chyba tyle, co sadzicie o takim rozwiazaniu?