afjl
18.02.2013, 11:27:24
Posiadam prostą klasę ACL, uruchamiam ją w kontrolerze, w nim też sprawdzam dostępność zasobu na podstawie ustalonych w niech reguł itd.
Jednak jak zarządzać regułami np. gdybym chciał edytować je z poziomu jakiegoś panelu? reguły mam zapisywać dla każdego kontrolera w pliku/bazie? Czy jest na to jakiś wzorzec bądź coś co konkretnie określa takie działanie?
Zakładając że z poziomu panelu admina, chciałbym zmienić dostęp moderatorowi co jakiejś sekcji, to przecież nie będę edytował pliku kontrolera...
Sephirus
18.02.2013, 11:33:26
Jeśli to ma być w formie takiego CMS bądź podobnej i masz do tego panel to najlepiej umieść reguły w bazie danych. Zrób odpowiednią tabelkę na przykład:
id | rola | zasób
I potem przy każdym requeście ładuj ją i ustawiaj w ACL odpowiedni reguły wg tego co w bazie. Nie powinno być z tym problemu.
W samym panelu możesz wówczas posługując się Reflection oraz listowaniem kontrolerów w katalogu zrobić fajny interfejsik do edycji i dodawania dostępów danym zasobom (o ile dobrze zrozumiałem w Twoim kontekście to dane akcje kontrolerów) wybranym rolom.
EDIT: oczywiście tą tabelkę a raczej jej rekordy cache'owałbym gdzieś (może to być jakiś plik w formie tabeli PHP itp.) aby niepotrzebnie nie odpytywać o to zawsze bazy.