Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Rozwiązania dot. grup użytkowników
acztery
post 28.12.2006, 17:24:10
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
Dandelion
post 29.12.2006, 01:10:14
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 29.12.2006, 15:32:00
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


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
cadavre
post 29.12.2006, 15:48:22
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... tongue.gif


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
AxZx
post 29.12.2006, 15:56:09
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


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Ociu
post 29.12.2006, 16:12:37
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 29.12.2006, 16:54:22
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.


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
Turgon
post 29.12.2006, 18:37:23
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.


--------------------
Jah Music Is On My Mind !
Go to the top of the page
+Quote Post
acztery
post 29.12.2006, 21:18:27
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 30.12.2006, 01:18:28
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 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. smile.gif

Ten post edytował cadavre 30.12.2006, 01:19:31


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
Speedy
post 3.01.2007, 18:04:50
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.


--------------------
Sygnatura niezgodna z regulaminem.
Go to the top of the page
+Quote Post
cadavre
post 3.01.2007, 18:44:30
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...


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
Athlan
post 17.01.2007, 22:28:17
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 smile.gif pozdrawiam, Athlan smile.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.04.2024 - 11:03