![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Witam,
napisałem sobie prościutki moduł do obsługi uprawnień i chciałbym się nim z Wami podzielić. Poniżej przedstawiam wszystkie wymagane pliki oraz przykład użycia z wykorzystaniem kontroli dostępu do akcji kontrolera. Równie dobrze moduł może zostać wykorzystany do kontroli dostępu do innych zasobów. application/modules/authorization/libraries/Authorization.php
application/modules/authorization/hooks/authorization_hook.php
application/modules/authorization/controllers/authorization.php
W tym momencie warto zauwazyć, iż kontroler rozszerza moją klasę Main_Controller_Core, która natomiast rozszerza Template_Core. application/modules/authorization/views/authorization/error_401.php
Całą konfigurację należy zawrzeć w konfigu dla aplikacji tj. application/config/authorization.php
Powyższy kod definiuje 2 typy użytkowników: administratora oraz użytkownika zwykłego. Administrator ma wszelkie uprawnienia ('*' => true), natomiast w przypadku użytkownika sprawa wygląda inaczej. Początkowo odbierane są mu wszystkie uprawnienia. Następnie nadawane są uprawnienia dla wszystkich akcji kontrolera "authentication", po czym odbierana jest mu możliwość wykonania akcji "logout". W efekcie użytkownik będzie mógł się jedynie zalogować ![]() Poza powyższymi krokami należy również aktywować hooki oraz dodać moduł autoryzacji w konfigu aplikacji. Od razu uprzedzam, że skrypt nie obsługuje dziedziczenia uprawnień. Można to jednak osiągnąć np. poprzez array_merge() podczas definiowania uprawnień. Zademonstrowałem wykorzystanie klasy na przykładzie kontroli dostępu do akcji. Jednak równie dobrze można ją wykorzystać do kontroli wewnątrz samych akcji. Przykładowo: application/config/authorization.php
application/controllers/jakiskontroler.php
Zaletą korzystania z instance() jest to, że zwraca ona główny obiekt Authorization. Główny czyli ten dotyczący aktualnie zalogowanego użytkownika. Można jednak, o czym pisałem wcześniej, na bieżąco tworzyć obiekty autoryzacyjne: application/controllers/jakiskontroler.php
Proszę o opinie. pion Ten post edytował phpion 1.12.2008, 17:12:07 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
moim zdaniem troche źle to jest rozwiązane. Nie znam kohany, ale ja sprawdzałbym uprawnienia na poziomie wczytywania akcji (kontrolera). Jeśli nie ma uprawnień przekierowujesz ruch do akcji (kontrolera) Error_403
![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
moim zdaniem troche źle to jest rozwiązane. Nie znam kohany, ale ja sprawdzałbym uprawnienia na poziomie wczytywania akcji (kontrolera). Jeśli nie ma uprawnień przekierowujesz ruch do akcji (kontrolera) Error_403 ![]() Hmmm, no przecież jest to zautomatyzowane poprzez użycie hook'a.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 113 Pomógł: 19 Dołączył: 2.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo fajna i w miare prosta do zastosowania biblioteka, wlasnie nie dawno pisałem podobny modul. Dla mnie np brakowałoby rozdzielenia rodzaju dostępu, chodzi mi o: read, write, del.
Fajnie, że tak szczegółowo to opisales. Może zyskasz kilku zwolenników Kohany ![]() pozdr EDIT: Istotnie mozna i tak. Ten post edytował kbsucha 1.12.2008, 17:43:27 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Bardzo fajna i w miare prosta do zastosowania biblioteka, wlasnie nie dawno pisałem podobny modul. Dla mnie np brakowałoby rozdzielenia rodzaju dostępu, chodzi mi o: read, write, del. Fajnie, że tak szczegółowo to opisales. Może zyskasz kilku zwolenników Kohany ![]() pozdr Dzięki za przychylną opinię. Nie do końca rozumiem o co Ci chodzi z tym "rozdzieleniem rodzaju dostępu". Możesz przecież zrobić tak:
lub po prostu:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 12:53 |