Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozwiązania dot. grup użytkowników
acztery
post
Post #1





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


Chciałem zapytać jakie rozwiązania stosujecie w klasa użytkowników ( dokładniej grupy użytkowników, uprawnienia itp ) Chodzi mi o jaknajbardziej logiczne i funkcjonalne rozwiązania.

Ja mam taki pomysł

Mamy np tabele group ( Id;Name;Desc;Priorytet ) i naprzykład 1 rekord 1;Admin;Administrator serwisu;0
i w tabeli user pole group i tam 0 albo no ( 4;5;2 ) i to by oznaczało ze operator forum, nowosci i moze edytowac wiadomosci ) nie wiem czy to logiczne. Tworze to do cms. chcial bym to tak zrobic ze w łatwy sposón można ustalać co kto może bez ingernecji w kod.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Dandelion
post
Post #2





Grupa: Zarejestrowani
Postów: 169
Pomógł: 0
Dołączył: 27.01.2006

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


http://forum.php.pl/index.php?showtopic=38293&st=0
Go to the top of the page
+Quote Post
AxZx
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


link ktory podales prowadzi to tematu w ktorym sa jakies przemyslenia, teoretyzowanie.
malo konkretow.

zabralem sie za dostep do poszczegolnych akcji ale kilka niejasnosci mam nadal

np jest jakas akcja - edycja artykulu.
zwykly user moze go edytowac normalnie, ale admin moze cos wiecej, np przy edycji ma dodatkowe pole.

maja byc wtedy 2 osobne akcje? zalozmy ze roznilyby sie tylko 1 linijka kodu.

drugi problem to zapis uprawnien dla takiej sytuacji: user ma mozliwosc edycji artykulu ale tylko swojego.
jak to zapisac?
chcialem uprawnienia dla akcji zapisywac w pliku konfiguracyjnym.

pozdrawiam
Go to the top of the page
+Quote Post
cadavre
post
Post #4





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


U mnie wygląda to następująco (wyciąg):
1. Tabela 'users':
Kod
id | login | groups | additional_rights

id, login - wiadomo
groups - nry grup oddzielone przecinkami
additional_rights - dodatkowe prawa dostępu
2. Tabela 'groups':
Kod
id | name | rights | hierarchy

id, name - wiadomo
rights - prawa dostępu
hierarchy - hierarchia grupy (admin = #1)

Ładowanie modułu u mnie wygląda następująco:
Kod
http://strona.pl/modul/funkcja/akcja

modul - załadowany moduł (np. newsy)
funkcja - (np. dodawanie newsa)
akcja - formularz / funkcja działająca na formie (tylko: form lub funct)

Right, czyli prawa wyglądają następująco:
Kod
modul/funkcja;modul/*;modul/funkcja_inna

Założyłem, że gdy usera ma dostęp do funkcji to ma naturalnie do wszystkich akcji również dostęp.
Prawa obsługiwane są przez reg_exp (stąd * jako wszystkie funkcje danego modułu). Prawa oddzielone są średnikami. Gdy user ma kilka grup - wszystkie prawa są odczytywane plus te z 'additional_rights' i duplikaty są usuwane. Następnie explode i preg_match. Główna grupa usera to ta najwyższa z hierarchii.

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





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


rozumiem ze funckja to jest metoda klasy, a modul to jest wlasnie ta klasa?
funkcje dzielisz jeszcze na akcje czy jak?
jakie akcje sa w tej funkcji? co to sa akcje?

ja zrobilem podobnie tylko mam strona.pl/modul/metoda
czyli art/dodaj1
Go to the top of the page
+Quote Post
Ociu
post
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




http://forum.webcity.pl/index.php?showtopi...amp;#entry30569
http://forum.webcity.pl/rozwiazania-Uprawn...ikow-t2384.html

i wiele wątków na tym forum.

pozdrawiam
Go to the top of the page
+Quote Post
cadavre
post
Post #7





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


Moduł: implementowana klasa
Funkcja: metoda klasy
Akcja: wyświetlenie formularza (np. z dodawanie newsa) lub druga: zapisanie tego newsa do np. bazy i wyświetlenie potwierdzenia.
Go to the top of the page
+Quote Post
Turgon
post
Post #8





Grupa: Zarejestrowani
Postów: 800
Pomógł: 0
Dołączył: 26.11.2005
Skąd: Nowy Sącz

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


http://www.php.rk.edu.pl/w/p/cicms-prosty-...m-uzytkownikow/
Ja robię podobnie. Jest według mnie to ciekawie rozpisane.
Go to the top of the page
+Quote Post
acztery
post
Post #9





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


a jednak do rozpoznawania przedziału praw dla danego usera wykorzystam przesuniecie bitowe. ale troszke inaczej jak ktos wczesnej juz to probowal robic. ale


cadavre mozesz mi poslac na mom21@tlen.pl paczke z tym zebym sobie zobaczyl jak to masz?
Go to the top of the page
+Quote Post
cadavre
post
Post #10





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


@acztery - wyślij mi PM: dziś (znaczy do rana (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) już na forum.php.pl nie będę wchodził to mi pokaże, że mam nową wiadomość. Jutro wyślę, bo dzisiaj już się mi szczerze nie chce. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował cadavre 30.12.2006, 01:19:31
Go to the top of the page
+Quote Post
Speedy
post
Post #11





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

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


Wg mnie hierarchiczne uprawnienia użytkowników (np. mały administrator, duży administrator itd.), to zły pomysł. Czasem zachodzi potrzeba przydzielenia różnym użytkownikom bardzo zróżnicowanych uprawnień i wtedy taki system leży. Najlepiej utworzyć w tabeli użytkowników kolumny, które będą warunkowały uprawnienia - dla każdego modułu/elementu osobna kolumna. Ewentualnie można zrobić jedną kolumnę i trzymać w niej odpowiednią tablicę, albo ciąg liczb rozdzielonych jakimś separatorem, gdzie dana liczba odpowiada konkretnemu modułowi i jeśli jej w tym ciągu nie będzie, to użytkownik nie będzie miał uprawnień.
Krótko mówiąc, hierarchiczna struktura uprawnień jest nieelastyczna.
Go to the top of the page
+Quote Post
cadavre
post
Post #12





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


W moim wypadku hierarchia nie ma znaczenia bo każda grupa może mieć przypisane dowolne uprawnienia. Oprócz tego user może mieć własne, dodatkowe uprawnienia. Planuję w niedalekiej przyszłości napisanie klasy do Access Control'a która aplikować będzie dwa rozwiązania - podstawowe prawa dostępu (każde) do modułu / funkcji oraz zaawansowane dot. szczegółowych praw tj. zapis/odczyt/modyfikacja/usuwanie...
Go to the top of the page
+Quote Post
Athlan
post
Post #13





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Popieram @Speedy. U mnie jest to zrobione tak, że każdemu użytkownikowi przypisuje sie pewne grupy podczas logowania. Za przechowywanie grup służy klasa User:

http://framework.vgroup.pl/expose-cab9852b...f33e1b4ac40.htm

Filtracja jest bardzo prosta. Jeżeli mamy grupy, możemy wykonac na nich różnorakie operacje, np jeżeli koleś ma grupę admin, moderator i banned to nie wejdzie w panel adminsitracyjny ze względu na tą trzecią. Jak zauważyliście podział grup jest na deny i allow. Grupy deny nie mają prawa dostępu do modułu (w moim przypadku konkretnej akcji kontrolera lub całego kontrolera), chociaż mają grupy uprawnione do jego przeglądania. Filtrem zajmuje się klasa ACL.Class.php

http://framework.vgroup.pl/expose-26bd1a93...f73da9723bf.htm

Zbieranie grup usera i przekazanie do klasy ACL to zadanie klasy Access:

http://framework.vgroup.pl/expose-f42de72a...51760e82bd4.htm

Całość dołącza się do FrontControllera. Przykladowa konfiguracja:

  1. <?php
  2. $aConfig['NewsAdmin_Vcontroller'] = array
  3. (
  4.  
  5. 'edit_Action' => array
  6. (
  7. 'access' => array
  8. (
  9. 'allow' => array('admin', 'moderator'),
  10. 'deny' => array('paused'),
  11. )
  12. )
  13. )
  14. ?>


Grupa "paused" to tymczasowo zbanowani userzy, to Ci, którzy na przykład zalogowali się źle więcej niż 3 razy ale wkońcu im się udało.

Taki przyklad (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam, Athlan (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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 - 19:27