Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Uprawnienia uzytkowników
mczlowiek
post 2.10.2008, 08:51:22
Post #1





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 26.05.2008

Ostrzeżenie: (10%)
X----


Witam, tworze stronę w której obok adminstratorów bedą zwykli uzytkownicy.
Zastanawiam sie jak nadać (jak zrobić) uprawnienia.

Strona sklada się z 4 działów : Dział1, dzaiał2, dzial3, dział4.

Dział4 składa sie także z 4 poddzialów: dział4A, dział4B, dział4C i dział4D

Jeśli chodzi o administratorów to powiedzmy admin1 - ma dostęp do wszystkiego, admin 2 ma dostęp do działu 1 i działu 2, admin3 ma dostęp tylko do jednego z działów (powiedzmy dział4).

Użytkownicy mają automatycznie dostęp tylko do działu1, natomiast dostępd do pozostalych działów przydziela administrator.

I teraz moje pytanie , czy uzytkowników i administratorow umieśćić w jednej tabeli, czy w oddzielnych - jak zrobić tabelę aby można bylo nadawać takie uuprawnienia?

Prosze o pomoc
Go to the top of the page
+Quote Post
Cienki1980
post 2.10.2008, 09:08:12
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Możesz zrobić to na jednej tabeli ale jak dla mnie byłoby to mało elastyczne rozwiązanie. Ja bym kombinował coś w stylu:
tabela_1 : uzytkownicy

tabela_2 : moduly

tabela_3 : uprawnienia ... jako że powyższe dwie tabele nie potrzebują opisu to podam tylko to co w trzeciej:
id_user | id_modul

Jeżeli dla danego użytkownika jest rekord to znaczy że ma dostęp do modułu określonego w id_modul jeżeli rekordu brak dostępu również brak.


--------------------
404
Go to the top of the page
+Quote Post
potreb
post 2.10.2008, 09:10:58
Post #3





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Właśnie robię podobny system.

Przykładowo mam moduły:
news, pages, email

W tabeli mam zapisane te moduły w tabeli modules:

id, nazwamodulu, nazwafolderu, grupydostepu (1,2,3)

Wchodząc do jakiegoś modułu jeżeli została przypisane tylko jedynka, do admina będą mieli dostęp tylko admini, jeżeli 1,2 tylko admini i moderatorzy itd.

Może jeszcze ktoś inne ci coś lepszego zaproponuje.

No i cienkiego sposób też jest dobry, albo i bardziej elastyczny winksmiley.jpg

Ten post edytował potreb 2.10.2008, 09:12:56


--------------------

Go to the top of the page
+Quote Post
mczlowiek
post 2.10.2008, 09:15:09
Post #4





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 26.05.2008

Ostrzeżenie: (10%)
X----


a może ktoś ma jakiś przykład... ?

Cytat(Cienki1980 @ 2.10.2008, 10:08:12 ) *
tabela_1 : uzytkownicy

tabela_2 : moduly

tabela_3 : uprawnienia ... jako że powyższe dwie tabele nie potrzebują opisu to podam tylko to co w trzeciej:
id_user | id_modul

Jeżeli dla danego użytkownika jest rekord to znaczy że ma dostęp do modułu określonego w id_modul jeżeli rekordu brak dostępu również brak.


A co w momecnie jak dany uzytkownik będzie miał dostęp do kilku modułów?
Go to the top of the page
+Quote Post
Cienki1980
post 2.10.2008, 09:20:40
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(mczlowiek @ 2.10.2008, 10:15:09 ) *
a może ktoś ma jakiś przykład... ?
A co w momecnie jak dany uzytkownik będzie miał dostęp do kilku modułów?


zakładając że admin_1 ma id_user=1

id_user | id_modul
1 | 1
1 | 2
itd.


--------------------
404
Go to the top of the page
+Quote Post
mczlowiek
post 2.10.2008, 09:27:04
Post #6





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 26.05.2008

Ostrzeżenie: (10%)
X----


masz jakiś przykład? byłbym bardzo wdzięczny
Go to the top of the page
+Quote Post
Cienki1980
post 2.10.2008, 09:30:31
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(mczlowiek @ 2.10.2008, 10:27:04 ) *
masz jakiś przykład? byłbym bardzo wdzięczny

Nie do końca wiem jakiego przykładu oczekujesz ?

Podałem Ci z jakiej struktury tabel bym skorzystał oraz jak są wpisy do tabeli uprawnienia robione. Teraz od Ciebie zależy jak to wykorzystasz i jak zaimplementujesz.


--------------------
404
Go to the top of the page
+Quote Post
mczlowiek
post 2.10.2008, 09:49:12
Post #8





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 26.05.2008

Ostrzeżenie: (10%)
X----


czyli podsumowywując:

mamy tak:

DZIAŁ1
DZIAŁ2
DZIAŁ3
DZIAŁ4
----Dział4a
----Dział4b
----dział4c
----dział4d

w modułach robię sobie takie same nazwy (przykładowo) jak te wyżej, np
dział1_odczyt
dział1_zapis
itd

czy poprawne bedzie jesli do modułów dodam moduł administratorzy, tak żeby uzytkownik , który nim nie jest w momencie kliknięcia na link do panleu mogl otrzymać informacje, że nim nie jest i nie ma dostępu

Widzisz to tak mniej więcej?
Go to the top of the page
+Quote Post
potreb
post 2.10.2008, 09:51:09
Post #9





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


  1. <?php
  2. $sql = mysql_query("SELECT * FROM user WHERE name='$name' AND pass='$pass'");
  3. $row = mysql_fetch_row($sql);
  4. define('UserRights', $row[3]);
  5.  
  6. //pliki modulów
  7. $sql = mysql_query("SELECT rights FROM modules");
  8. $row = mysql_fetch_row($sql);
  9. if(UserRights==$row[2]) {
  10. echo "masz dostep";
  11. } else {
  12. echo "brak dostępu";
  13. die();
  14. }
  15. ?>


Prosty przykład, takie naprowadzenie, aczkolwiek zbudowanie takiego systemu wymaga trochę nakładu pracy. Proponuje najpierw stworzyć tabele a później tworzyć skrypt.

Co do twojego przykładu to jest okey, napisz skrypt i jakoś ci pomożemy.

Ten post edytował potreb 2.10.2008, 09:53:11


--------------------

Go to the top of the page
+Quote Post
Pilsener
post 2.10.2008, 11:29:30
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Taki system uprawnień... ja mam tak:
id_zasobu||user_login||flaga

Jest jeszcze problem drzewa - gdy mam tak jak w powyższym:

Cytat
DZIAŁ1
DZIAŁ2
DZIAŁ3
DZIAŁ4
----Dział4a
----Dział4b
----dział4c
----dział4d


- to przykładowo:
dział4||misiek||0 - zabroniony dostęp do działu4 i wszystkich poniżej
dział4||misiek||1 - dostęp do działu 4, ale nie do działów niżej
dział4||misiek||2 - dostęp do działu 4 i działów niżej
dział4||misiek||4 - dostęp do działów niżej i edycja działu 4
- można też łączyć:
dział4||misiek||2
dział4b||misiek||4
dział4c||misiek||0 - dostęp do działu 4 i poddziałów, jednak zabroniony dostęp do działu 4c plus edycja działu 4b

- są problemy typu:
dział4||misiek||0
dział4a||misiek||4 - do działu wyżej dostęp zabroniony, ale do tego niżej nie

Nie wiem czy dobrze robię, ale nic lepszego jak na razie nie wymyśliłem smile.gif
Go to the top of the page
+Quote Post
mczlowiek
post 15.10.2008, 07:10:08
Post #11





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 26.05.2008

Ostrzeżenie: (10%)
X----


Nadal męczę się nad uprawnieniami...

Ale ostatnio wymysliłem coś takiego, że można np w tabeli użytkoników dodać pola odpowiedzialne za dostęp do określonych działów, ich edycji itp...

Co o tym myslicie?

TABELA: USERS

user_id
imie
nazwisko
nick
dzial1_viev
dzial1_edit
dzial2_viev
dzial2_edit
...

Standardowo dostęp do dzialow bedzie zablokowany (Wartośc domyślna 0 ), lecz można zmienić mu uprawnienia w panelu (1)

Co sądzicie o takim ukladzie>?
Go to the top of the page
+Quote Post
drPayton
post 15.10.2008, 09:12:14
Post #12





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


A ja proponuję ACL z wykorzystaniem biblioteki Zend'a: http://framework.zend.com/manual/en/zend.acl.html
Dokumentacja precyzyjnie wyjaśnia temat, co do przechowywania - obiekt zend_acl serializujemy i wrzucamy do bazy smile.gif
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: 24.07.2025 - 15:30