Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php/mysql - system uprawnień
Forum PHP.pl > Forum > Bazy danych > MySQL
japolak
witajcie

ostatnio zastanawiam sie nad zmiana kontroli dostępu do poszczególnych funkcjonalności mojego systemu.

Powiedzmy, że interesuje mnie sprecyzowanie dostępu użytkowników w zależności od posiadanej rangi / poziomu dostępu do wykonania jakiej czynności:

coś na przykładzie:
mam kilka rodzajów typów wiadomosci: np artykuły, filmy, zdjęcia itd:
dla każdego typu występuje możliwość: dodaj, edytuj, usuń, publikuj, edytuj po publikacji, usuń po publikacji,

tak jak w tabeli:


jak to wykonać?

myślałem nad stworzeniem tabeli: access z polami: ranga, type, dodaj, edit_wlasne_przed_publikacja, edit_wlane_po publikacji, edit_cudze_przed_publikacja,edit_cudze_po_publikacji - --- itd. (wszystkie pola z tabeli powyzej)
tabela: user która juz ma pola: user, ranga

w tabeli access: kolumny od dodaj do publikacja zawierały by wartos 0,1 (flaga)

przy logowaniu użytkownika do serwisu - zapisuje range i wszystkie flagi dostępu do jakiejś zmiennej sesyjnej (access)

nastepnie tworze klase access z odpowiednimi regułami która będzie miala za zadanie sprawdzenia dostępu użytkownika do danej funkcjonalnosci..

i na końcu przy docelowej stronie - przed wyświetleniem danej ikonki (z mozliwoscia zmiany czyli usun , dodaj itp) sprawdzam dostęp czy użytkownik w ogóle ma do niej dostęp.











nospor
Tabele:

tabela TYP_DANYCH
ID
NAZWA

tabela RANGA
ID
NAZWA

tabela DOSTEP
ID_TYP_DANYCH
ID_RANGA
PRAWA - typu smallint unsigned. Bedziesz tu zapisywal prawa jako wartosci bitowe. Tu masz arta
http://nospor.pl/opcje-dwuwartosciowe-przechowywanie.html

Mozesz zrezygnowac z wartosci bitowych, ale wowczas dochodzi tabela
tabela PRAWA
ID
NAZWA

oraz zmienia sie tabela DOSTEP
ID_TYP_DANYCH
ID_RANGA
ID_PRAWA


Obydwa rozwiazania umozliwiaja dobrą uniwersalnosc, gdy np. dojdą prawa.
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.