Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawa uprawnien, i jej rozwiazania
Vomit
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

Ostrzeżenie: (0%)
-----


Uprawnienia, to co neka mnie juz od dłuzszego czasu, nigdy jednak nie chciało mi sie przysiasc i co sklecic. Obecnie, gdy jednak stoje twarza w twarz z problemem, postanowiłem sie poradzic, a raczej spytac jak wy to rozwiazaliscie.

Zastanawiałem sie jak zaznaczyc usera, ktory ma miec przykladowo dostep do jednej podstrony danego serwisu. Strony takie bedzie mozna dodawac i usuwac bez ograniczen, wiec nie mozna tego nadawac uprawnien "na sztywno".

Gdybym mial z gory ustalone 5 podstron, bez podstron "ruchomych" byloby latwiej. Moglbym stworzyc sobie tablice dla kazdego usera, zapisana w bazie np.
  1. <?php
  2. array( 1, 0, 0, 0, 0 );
  3. ?>

Oznaczałoby to, ze user ma dostep tylko do pierwszej podstrony.

Niestety nie mam pomysłu rozwiazac tego dla nielimitowanej ilosci podstron.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
pawel_k
post
Post #2





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

Ostrzeżenie: (0%)
-----


sposób jeszcze nie testowany prze mnie, jednak może wypalić.

każdy typ user ma swoją wagę, np. 1 - zwykły, 2 - autor tekstów, 4 - admin
i teraz dla dodawanej podstrony admin dodaje jakie uprawnienia są potrzebne do przeglądania (4,2 lub 1), gdy autor tekstów coś dodaje to uprawnienia ustawiane są na 2. zwykły użytkownik może tylko przeglądać.

i teraz w zależności kto wchodzi na stronę porównujesz jego wagę z wagą strony, np wchodzi admin (4) na stronę o wadze 2: (4 >= 2) -> true, wchodzi user (1) na stronę o wadze 2 -> (1 >= 3) -> false.

nie wiem czy to będzie wygodne w praktyce ale chętnie posłucham krytyki :]
Go to the top of the page
+Quote Post
LBO
post
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


hmmm, pomysl za bardzo "jednowymiarowy" przydatne w wypadku gdy strona to pojedyncze forum, jednak gdy mamy do czynienia z serwisem gdzie zintegrowanych jest kilka mechanizmow (forum, system newsow, artykuly) lepiej jest nadawac dla kazdej akcji (jawnej akcji: dodanie newsa, kasowanie artykulu itp) unikalny identyfikator, a w bazie danych o userze umiescic kolejne identyfikatory jego uprawnien np. dla komorki (DB) uprawnienia
Kod
da ua dn un
gdzie da - dodaj artykul, usun artykul, dodaj news, usun news... uprawnienia takie (tak przechowywane) w latwy sposob mozna wrzucic do tablicy za pomoca
  1. <?php
  2. $uprawnienia = explode(' ', $row['uprawnienia'])
  3. ?>
...

sposob taki w idealnie nadaje sie do obiektowego programowania np.
  1. <?php
  2.  
  3. $User->sprawdzUprawnienia($KasujArtykul->potrzebneUprawnienia($idArtykulu));
  4.  
  5. ?>
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Maski bitowe (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
LBO
post
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(spenalzo @ 2006-03-31 06:21:14)

czy chodzi Ci o flagi? jezeli nie, jest jakis temat o nich?
Go to the top of the page
+Quote Post
spenalzo
post
Post #6





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie pamiętam jak sie to dokładnie nazywa - chodzi o zapisywanie uprawnień w formacie np. "11110001" itd itp
Na pewno było o tym na forum nie raz.
Go to the top of the page
+Quote Post
Vogel
post
Post #7





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


kiepski pomysl. tez kiedys tak robilem, ale teraz zmadrzalem ;]

struktura wygladalaby tak:

uzytkownik [ id, imie ]
grupa [ id, nazwa ]
grupa_uprawnienia [ grupa_id, id_prawa, stan_prawa ]
grupa_uzytkownik [ grupa_id, uzytkownik_id ]

w ten sposob mozemy tworzyc grupy uprawnien i przypisywac do danych grup uzytkownikow. uprawnienia to zbior indywidualnych pozwolen do dokonania operacji (tak jak to radizl LBO).

reguly (pamietaj ze user moze byc w kilku grupach jednoczesnie!):
I. zakaz - bezwzglednie zakazane
II. dozwolone - dozwolone, chyba ze zakazane
III. brak okreslonego prawa - zabronione, chyba ze dozwolne

mozemy tez dodac sobie pomocnicza tabele
uprawnienia [ id, nazwa ]
ktora przyda sie w panelu konfiguracyjnym ;]

mozesz tez dodac tabele "uprawnienia efektywne" w ktorej bedziesz cachowal faktyczny stan upranwien dla konkretnych uzytkownikow (uzytkownik_id, prawo_id, stan_prawa) - bo po co joinowac w nieskonocznosc przy sprawdzaniu jednego uprawnienia?
Go to the top of the page
+Quote Post
Diwi
post
Post #8





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

Ostrzeżenie: (0%)
-----


Może po prostu skorzystaj z phpGACL (http://rzseattle.piwko.pl/phpGACL.htm), ostatnio zaczynam się tym bawić i jestem zdumiony możliwościami.

Pozdrawiam
Go to the top of the page
+Quote Post
Speedy
post
Post #9





Grupa: Zarejestrowani
Postów: 651
Pomógł: 28
Dołączył: 4.12.2004

Ostrzeżenie: (0%)
-----


Można ten problem rozwiązać tak:
Załóżmy, że dane przechowujesz w bazie i masz tabelę z podstronami i drugą tabelę użytkownikami.
Każdej podstronie możesz przyporzadkować unikatowy ID, a następnie w tabeli z użytkownikami tworzysz pole odpowiedzialne za uprawnienia do wyświetlania podstron.
W tym polu przechowywujesz informację o tym, do jakich podstron ma dostęp dany użytkownik - dane mogą mieć następującą postać:
Kod
1;3;7

gdzie 1, 3 i 7 to ID podstron. Później robisz z tego odpowiednią tablicę i sprawdzasz, czy wybrany przez użytkownika ID podstrony zgadza się z jego uprawnieniami.
Go to the top of the page
+Quote Post
spenalzo
post
Post #10





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


W takim wypadku lepiej zrobić nową tablicę:
id_strony | id_uprawn
itd itp - bedzie to wygodniejsze i szybsze.
Go to the top of the page
+Quote Post
Vomit
post
Post #11





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

Ostrzeżenie: (0%)
-----


Dziekuje za wypowiedzi. Daja mi one do myslenia, ale przynajmniej mam nad czym myslec a nie pustke w glowie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:11