![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie,
Borykam się z pewnym problemem, chciałbym sobie to jakoś w głowie ułożyć zanim przejdę do pisania kodu. Mam strone zabezpieczoną logowaniem itp. chciałbym sobie na niej stworzyć moduł uprawnień, tak bym głowny administrator mógł nadawać i zmieniać uprawnienia dla danych użytkowników ( grup do których należą ). Otóż mam napisane w jednym pliku np class.user metody : dodawanie, usuwanie, edycja. W czym tkwi największy problem w jaki sposób mogę dynamicznie zmieniać jako administrator te uprawnienia w kodzie wynikowym ( widocznym przez administratora było by to proste, ale nie bardzo wiem jak to zapisać i gdzie umieścić. A jak wyżej wynika nie chce robić tego na sztywno bo można walnąć if( użytnownik nie jest w tej grupie) echo nie masz uprawnien; else : Uprawnienia : - dodawnia grupa 1 - lista rozwijana z widocznością wszystkich grup - usuwanie grupa 1 - edycja grupa 2 PS: podobne uprawnienia są na forach, że jedni użytkownicy widzą dany temat a inni nie. Ten post edytował Micchaleq 9.06.2011, 23:19:40 -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat W czym tkwi największy problem w jaki sposób mogę dynamicznie zmieniać jako administrator te uprawnienia w kodzie wynikowym ( widocznym przez administratora było by to proste, ale nie bardzo wiem jak to zapisać i gdzie umieścić. Wydaje mi się ,że najlepszym rozwiązaniem byłoby zbudowanie osobnej strony administratora z wbudowanymi polami wyszukiwania,edycji i zmiany statusu danego użytkownika. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Najprostsza metoda jest zastosowanie w tabeli users dodatkowego pola np. privilages. Tam wstawiasz cyfry np. 1- admin, 2 -moderator, 3 - vip, 4 - user itd. Przy logowaniu zapisujesz przywilej danego usera do sesji a potem to juz tylko ifami sprawdzasz albo switchem:
Ot cała filozofia ![]() EDIT: Chociaż jak teraz jeszcze raz przeczytałem Twój post to chyba jednak nie wiem o co Ci dokładnie chodzi. Ten post edytował sadistic_son 9.06.2011, 23:54:01 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 3 Dołączył: 22.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
yy chodzi ci o sam zapis uprawnień w którym miejscu i jak to zrobić? i potem zmianę?
w bazie danych "login" "hasło" i 3 kolumna "nr uprawnień" potem przy logowaniu pobiera login hasło i nr uprawnienia i zapisuje go do jakiejś zmiennej globalnej. jest to opisane z pewnością w książce z serii WROX PHP i MySql od podstaw tylko po co jak wszystko już wiesz ![]() PS Chyba że pytałeś o coś innego Ten post edytował Robert3d 10.06.2011, 03:26:52 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 483 Pomógł: 50 Dołączył: 15.03.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ja bym zrobił to tak
1. w bazie trzymałbym spis modułów : id / nazwa / ścieżka url albo ścieżka do pliku 2. stworzył bym grupy id / nazwa 3. w uzytkownikach stworzyłbym dodatkowe pole "grupa" 4. stworzył system uprawnień do grup grupa_id / modul_id Wtedy ustawiasz dostęp grupą, a użytkowników przypisujesz do grup ... -------------------- Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas === po prostu kocham ją :D haha |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chyba nie napisałem tego do końca jasno,
Mam już użytkowników oraz grupy w które są oni podzieleni. To co wyżej kolega napisał chyba nie zda egzaminu ponieważ tak jak napisałem w class user mam 3 metody dodawania, edycji usówania ( z tą klasą to podałem przykład, bo może być to np klasa dodawania newsów na stronę ) Po wejściu w panel adminia ( gdzie już musi być wiadomo czy ten użytkownik ma jakiekolwiek uprawnienia ) przez użytkownika kowalskiego chce by mógł widzieć tylko to na co zezwolił mu administrator i tak by jak kowalski zacznie rozrabiać głowny admin w każdej chwili odebrał mu prawo do robienia głupstw. Ewentualnie zastanawiałem się jeszcze nad wysyłaniem do przeglądarki get i dodanie do bazy danych wszystkie moduły, ale wydaje mi się, że nie sprawdzę które moduły będzie mógł przeglądać dany użytkownik. I nie chodzi mi o to jak nadać uprawnienia bo zamierzam to robić tak : jeżeli użytkownik jest w danej grupie i ten moduł ma dla niego jakieś uprawnienia to wyświetlam uprawnienia. Sam sens że nie wiem jak zorganizować te uprawnienia modułów a na sztywno nie chce tego przypisywać. bo zawsze mógłbym dać id($g.username != 2) echo nie masz uprawnień; // zamiast tej 2 musi jakoś pobierać informacje Ten post edytował Micchaleq 10.06.2011, 08:09:40 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 483 Pomógł: 50 Dołączył: 15.03.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Mam już użytkowników oraz grupy w które są oni podzieleni. Jeśli to masz to , to pytanie jak jest zrobiony podział na grupy? przechowujesz dane w bazie ? Cytat To co wyżej kolega napisał chyba nie zda egzaminu ponieważ tak jak napisałem w class user mam 3 metody dodawania, edycji usówania ( z tą klasą to podałem przykład, bo może być to np klasa dodawania newsów na stronę ) Tego w ogóle nie rozumiem? Class user wg mojego rozumowania powinna się odnosić TYLKO I WYŁĄCZNIE do zarządzania użytkownikami, jesli tak jest to w czym problem dopisać przypisania do grup. Ale z tego co wnioskuje, choć troszkę zawile to napisałeś u Ciebie class user = zarządzanie nowościami w której masz 3 metody odnośnie edycji ich - dobrze rozumiem? Jeśli tak to przemyśl troszkę zasade działania twojego systemu bo uważam, że nie jest ona dobrze przemyślana w takim wypadku byś musiał to na sztywno zrobić -------------------- Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas === po prostu kocham ją :D haha |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 186 Pomógł: 4 Dołączył: 13.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
może wyjaśnie w ogóle co to jest. Napisałem strone internetową do forum phpbb, gdzie mam już użytkowników i podział ich na grupy więc tym się nie zajmuje. Dokładnie mam klase player gdzie przechowuje metody, dodawania gracza, usuwania, edycji oraz wyświetlania wszystkich graczy. Strona aktualnie korzysta tylko z wyświetl gracza. Aktualnie jeszcze nie mam ale zostanie stworzona zakładka panel gdzie będzie można właśnie edytować stronę przez grupy uzytkowników. I tu zaczynają się schody tak bym mógł zmieniać im prawa i tak by widzieli tylko to co mogą robić. Teraz wpadłem na pewien pomysł, gdzie w parametrach metody podawałbym dodatkową wartość ( $level ) i w grupach ( w bazie danych ) mógłbym wówczas dodać pole level i jeżeli by te 2 parametry były takie same to wtedy można korzystać z funkcji. A wartość level mogłaby być zapisywana w pliku albo w ogóle w bazie danych. Tyle tylko że każda z metod musiała by mieć osobną wartość w bazie danych. Ewentualnie mógłbym chyba pozmieniać troche jak kolega wyżej mówił metody w klasach i zamienić je na usówanie, edycje i dodwanie, ale nie jest to też do końca dobre bo jeżeli jakaś grupa miała by dostęp do edycji to musiała by móc wszystko usuwać albo coś tam innego. Chodzi mi raczej o coś takiego jak w panelu w konfiguracji ustawnień aby było widać : Dodawanie newsów - wybierz grupe Edycja Playerów - grupa 1 dodawanie playerów - grupa 4 Tylko nie jest to do końca takie rozwiązanie chyba jak oczekuje. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 483 Pomógł: 50 Dołączył: 15.03.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W takim razie byś mógł rozbudować pomysł który dałem wcześniej:
Masz grupy i moduły każdy z modułów ma osobne funkcje (które definiujesz sobie np 1 - dodawanie, 2 - usuwanie, 3 - edycja ) Przypisujesz sobie przykładowo tak Grupa | modul | ogolne_zezwolenie | zezwolenie do konkretnych funkcji przykładowo do grupy nr 1 i modułu nowości mam takie wpisy grupa = 1, modul = nowosci , ogolne_zezwolenie = tak , zezwolenie do konkretnych funkcji: przechował bym to np w tablicy w serialize wiec przykładowo array(1=> true, 2=>false, 3=> true); i tak samo robisz do reszty modulow i grup w kodzie sprawdzasz if($grupa['ogolne_zezowlenie'] == 'tak ) -> zezwalasz na działanie z modułu, później bierzesz unserialize do zezwoleń grupy, i pozwalasz im robić tylko i wyłącznie to co na co maja zezwolenia. nie wiem , może źle myślę ale wydaje mi się to najprostrza a zarazem w miare sensowna opcja. Ten post edytował Hpsi+ 10.06.2011, 09:54:25 -------------------- Daiquiri: T1 = (dx/dt * s)^hpsi
Daiquiri: gdzie T1 - Twój czas przybycia na miejsce, dx/dt - prędkość, s droga Daiquiri: brb trzeba by to poprawić T1 - Czas jaki Ci to zajmie Daiquiri: Zatem T - czas dotarcia p T1 + T2 gdzie T2 = aktualny czas === po prostu kocham ją :D haha |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pytanie... Na jakim poziomie rozdrobnienia uprawnień chcesz "utknąć"? Czy wszyscy użytkownicy w danej grupie mają te same uprawnienia, czy przewidujesz sytuację, gdy jakiś użytkownik choć ma to samo co inni, może jeszcze coś innego?
Przypuśćmy masz grupę player ale z jakichś powodów kilku userów ma pośród nich mieć uprawnienie do czegoś, czego inni nie mogą, ale nie jest to na tyle ważne, by nadawać im grupę moda, który ma o wiele większe uprawnienia. Przypuśćmy mają oni mieć dostęp do określonego podforum, normalnie niewidocznego dla innych. Jeśli tak to zastosowałbym ACL zhierarchizowany z dziedziczeniem i kontrolą na poziomie zasobów. Przykładowo dla danego użytkownika o ciut wyższych uprawnieniach utworzyłbym grupę, która dziedziczyła by po użytkowniku wszystkie uprawnienia, ale dodatkowo określałbym (choćby checkboxami) dodatkowe uprawnienia jak choćby do odczytu określonego subforum. Pewnym problemem jest zapis tabeli uprawnień wtedy, by było to w miarę uniwersalne. Musiałbyś bowiem wprowadzić oznaczenia dla określonych modułów lub funkcji i dodatkowo potem ich elementów oraz uprawnień. Bo co Ci z tego, że ktoś ma prawo do odczytu tematów publicznych na forum, skoro może dostać prawo do odczytu JEDNEGO tematu z forum, do którego nie ma nikt dostępu, a tym samym ma mieć możliwośc jego obejrzenia, mimo faktu iż do samego podforum nie ma uprawnień. W efekcie musi się mu wygenerować link do podforum ale wewnątrz jedynie jeden link. Lub też jeden dodatkowy panel na forum gdzie będa wrzucone wszystkie tematy, do których ma dodatkowe uprawnienia. Wszystko zależy od koncepcji więc... -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:18 |