Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Autoryzacja: Grupy.
Forum PHP.pl > Forum > Gotowe rozwiązania
qbba
Witam biggrin.gif,

Nie mogę wymyślić najbardziej optymalnego sposobu "ograniczania" dostępu do niektórych części skryptu (narazie tylko na kartce 8) ).
Chodzi mi o to że do danej części mogą mieć dostęp np. grupy(tych grup może być kilka).
Jak sprawdzić czy użytkownik należy do grupy posiadającej dostęp?? (przypominam tych grup może być kilka, tak samo użytkownik może należeć do kilku grup).

Nie prosze o kompletny kod, wystarczy mi tylko sam zarys "opisowy" tongue.gif.
A jeszcze jedno db nie mam opracowanej wiec w tej kwesti pelna dowolność.

Z góry dzięki za pomoc smile.gif.
FiDO
Jak rozumiem jesli ktos nalezy do kilku grup to uprawnienia z tych grup sa sumowane?
Wiec oczywiscie osobna tabela do grup (w niej opisane uprawnienia, np. jako typ SET), tabela z userami i tabela laczaca jedno i drugie, jesli ma byc mozliwosc kilka grup do jednego usera.
Teraz najlepiej przy logowaniu (tzn. zaraz po nim) pobierasz wszystkie jego uprawnienia i kopiujesz w jakis czytelny sposob do sesji, zeby nie odwolywac sie przy kazdej podstronie do bazy. No i teraz na kazdej z podstron chronionych prawami sprawdzasz z danych w sesji czy tne user ma prawo czy nie i dopuszczasz, badz odrzucasz.
qbba
Hyh chyba nie do końca rozumiesz o co mi chodzi (napisałem to troche nie dokładnie), albo ja nie rozumiem dokońca Ciebie (wysoko prawdopodobne).

Może posłuże się przykładem forum.
Nie będąc członkiem żadnej grupy moge widzieć kilka for (np. php.pl - design), ale nie mogę się w nich pisać. Będąc już członkiem grupy developerów mogę w tych forach pisać.
Będąc w grupie moderującej jedno forum (np nieistniejaca grupa php.pl - design moderators smile.gif, mogę moderować forum php.pl - design ), ale niekoniecznie mogę moderować drugie forum (np. php.pl -dev).

Mam nadzieje że teraz troche jaśniej.

PS. To tak nawaisem ma być skrypt forum, pisanego na własne potrzeby smile.gif
FiDO
No to nie widze przeszkod zeby do czegos takiego zastosowac to co podalem (oczywiscie bez takich uproszczen winksmiley.jpg ).
qbba
hmm pomysle.

A moze jeszcze jakies pomysly smile.gif.
FiDO
Tak.. obejrzyj sobie strukture bazy np. phpbb forum, moze podpatrzysz cos ciekawego smile.gif
DeyV
http://forum.php.pl/viewtopic.php?t=1608

a to moj wlasny przyklad (łączący w prosty sposób parę pomysłów)
[php:1:d49ec08f35]<?php
### 12.2002 by DeyV

function dostep($wymagane=""){
if (!$wymagane){
return(TRUE); // nie ma ograniczeń dostępu
}
elseif( !isset($_SESSION['UPR'] )) {
return(FALSE); //nie zalogowany
}

for ($i=0; $i<strlen($wymagane); $i++){
if( (int)$_SESSION['UPR'][$i] < (int)$wymagane[$i] ){
return(FALSE);
}
}

return(TRUE);
}//func
?>[/php:1:d49ec08f35]
Użycie:
[php:1:d49ec08f35]<?php
dostep('007'); //czyli wymagane uprawnienia tylko z czeciej grupy, ale za to aż 7 poziom
//lub
dostep('1'); //najniższe wymagania
?>
?>[/php:1:d49ec08f35]

Wcześniej oczywiści należy pobrać i zapisać w sesji uprawnienia danego uzytkownika.
Co ciekawe - w ten sposób można łatwo tworzyć grupy użytkowników, dodawać do nich userów, i sumować ich prawa (nakładajac na siebie odpowiednie pozycje z stringa z uprawnieniami)
qbba
Pomysł fajny i ciekawy, ale na krótszą mete. Sprawdza się to do max 10 grup, przy większej ilości nie ma sensu tak tego zapisywać (już widzę ten ciąg 30 liczb dla 30 grupy :? )

Cuś jeszcze pokombinuje... moze cos wymysle tongue.gif.
DeyV
troszkęinaczej - ilosć grup z dowolnymi prawami moze byćdowolna.
Ograniczona jest raczej ilość praw - każda pozycja w ciągu to w końcu prawa do czegoś innego.
Ale... w zamian masz możliwość dowolnego od 0 do 9 ustalanie poziomu prawa, czyli np. pozycja pierwsza to newsy, 1 - odczyt, 2 - zapis, 3 - edycja, 4 - edycja czyichś, 5 - usuwanie.
Niestety - w tym przypadku nie można ustalić by ktoś np. miał 2 i 4 (bo mając 4, masz od razu 1,2 i 3) - ale w sumie zazwyczaj tak to działa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.