Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uprawnienia
Forum PHP.pl > Forum > PHP
kicaj
Zastanawiam sie jak zbudowac dosyc rozbudowany system uprawnien uzytkownikow, przegladalem tematy tutaj na forum, ale zaden nie rozwiazal mojego problemu do konca. Wiec tak:

Poszczegolny uzytkownik moze np.
Kod
Artykuly

1. dodawac artykuly

1.1. tylko w jednej kategorii

1.2. tylko w kilku kategoriach

1.3. dodawac w dowolnej kategorii

1.4. nie moze dodwac artykulu

2. usuwac artykuly

2.1. tylko w okreslonej kategorii

2.2. tylko w kilku okreslonych kategoriach

2.3. we wszystkich kategoriach

2.4. nie moze usuwac zadnego

3. zmieniac artykyly

3.1. tylko w okreslonej kategorii

3.2. tylko w kilku okreslonych kategoriach

3.3. we wszystkich kategoriach

3.4. nie moze zmieniac zadnego

Problem tkwi w prawie kazdym dziale, to samo bedzie w np. Newsach, Forum itp.

PRZYKLADY:
User nr 1 moze:
Dodawac artyuky tylko w jednej kategori, usuwac w 3 kategoriach, a zmieniac we wszystkich,
a User nr 2 moze:
Dodawac artykuly tylko w 2 kategoriach, nie może usuwac żadnego, a zmieniac moze tylko w 1 kategorii.

Jak to rozwiazac to dosc (jak na mnie) zaawansowane prawa uzytkowników?
BzikOS
Przeniesione z php Pocz.
kicaj
Kod
x | Dzial

--|----------

1 | Artykuly

2 | Newsy

3 | Forum





 y | Funckja

----|------------

x.1 | dodawanie

x.2 | usuwanie

x.3 | zmienianie





   z | Poddzial

------|----------

x.y.1 | Sport

x.y.2 | Muzyka

x.y.3 | Szkola

x.y.4 | Film





Przyklady (tabela: glowna role odgrywa kolumna `prawa`, pozostałe napisałem jakby mnie ktos niezrozumial co zawiera `prawa`):





       | Prawa       | Dzial    | Funckja    | Poddzial/y

--------|-------------|----------|------------|-------------------------

       | 1.1.1,3     | Artykyly | Dodawanie  | Sport, Szkola

User 1 | 1.3.1,2     | Artykuly | Zmienianie | Sport, Muzyka

       | 2.2.2       | Newsy    | Usuwanie   | Muzyka

--------|-------------|----------|------------|-------------------------

User 2 | 2.2.2,3     | Newsy    | Usuwanie   | Muzyka, Szkola

       | 2.1.1,2,4   | Newsy    | Dodawanie  | Sport, Muzyka, Film


Zrobie to tak. Mniejwiecej tongue.gif

Minusami tej "konstrukcji" sa:
- nie kazdy `poddzial` pasuje do `dzialu`
- gdy usuniety zostanie np. poddzial nr 4 to musimy doscyc ciezkim sposobem odszukac gdzie jaki user go uzywal w kolumie `prawa`

Jak macie lepszy pomysl to czekam!
patrycjusz
http://phpgacl.sourceforge.net/ nie jest moze najpiekniejsze, ale zalety ma i jest bardzo latwe do implementacji w rozwiazaniach tworzonych w oparciu o MVC
kicaj
Znalazlem troche czasu by wrocic do tego tematu.
Wyciagnalem dane uztytkownia `User 1` z powyzszej tabeli:
  1. <?php
  2. $dzial = array( 1 => &#092;"Artykyly\", 2 => \"Newsy\", ... );
  3.  
  4. // Prawa uzytkownika `User 1`
  5. // W taki sposob beda wyciagane dane z bazy
  6. // Znak `:` odziela tzw. wiersze
  7. $prawa = &#092;"1.1.1,3:1.3.1,2:2.2.2\";
  8.  
  9. $prawa = explode( ':', $prawa);
  10.  
  11. for( $i = 0; $i <= count( $prawa ) - 1; $i++ )
  12. {
  13.     // dział: 1 = artykuly, 2 = newsy, itd
  14.     if( eregi( '^1', $prawa[$i] ) )
  15.     {
  16.         echo $prawa[$i] . &#092;" <br /> \";
  17.         
  18.         // funkcje: 1 = dodawanie, 2 = usuwanie, 3 = zmienianie/edytowanie
  19.         $rozbij = explode( '.', $prawa[$i] );
  20.         
  21.         echo &#092;"<b>Dzial: </b> \" . $rozbij[0] . \" <br /> \";         // dzial
  22.         echo &#092;"&nbsp;<b>Funckja: </b> \" . $rozbij[1] . \" <br /> \"; // funkcje
  23.              
  24.         $kat = explode( ',', $rozbij[2] );
  25.  
  26.         echo &#092;"&nbsp; <b>Kategorie: </b>\";
  27.         for( $k = 0; $k <= count( $kat ) - 1; $k++ )
  28.         {
  29.             if($k != count( $kat ) && $k != 0 ) //likwidowanie zbednych literek `i` :)
  30.             {
  31.                 echo &#092;" i \";
  32.             }
  33.             
  34.             echo $kat[$k];
  35.         }
  36.             
  37.         echo &#092;" <br /><br /> \";
  38.  
  39.     }
  40. }
  41. ?>


articles.class.php to: dzial = 1
metody w tej klasie:
dodawanie to 1
usuwanie to 2
zmienianie to 3

news.class.php to: dzial = 2
itd z kazda klasa

Zapis 1.1.1,3 jest rowny: w klasie Articles (pierwszy argument) dodaj (drugi argument) artykuly w kategoriach 1 i 3 (argumenty rozdzielane przecinkami smile.gif

Troche to zamieszane ale bedzie zaawansowane (jak dla mnie) smile.gif smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.