[Symfony]Tworzenie własnej funkcji w @Security |
[Symfony]Tworzenie własnej funkcji w @Security |
20.09.2018, 13:05:50
Post
#1
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 29.03.2012 Ostrzeżenie: (0%) |
Witam. Chciałem się zapytać czy jest możliwe dodanie nowej funkcji do klasy Security. Chodzi mi o utworzenie funkcji podobnej do is_granted() z tym że ma ona sprawdzać czy ranga użytkownika o danym id ma dostęp do danej metody kontrolera. Znalazłem artykuły jak tworzyć własne adnotacje lecz nie znalazłem nic na temat mojego problemu. Oczywiście mógłbym utworzyć metodę w kontrolerze, która sprawdzałaby id rangi użytkownika lecz zależy mi na estetyce i chciałbym aby to wszystko znalazło się w PHP DOC.
|
|
|
25.09.2018, 00:19:45
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) |
Jeśli zależy Ci na estetyce to zapomnij, że coś takiego jak adnotacje (jeśli wpływają na działanie aplikacji, konfigurują cokolwiek itp.) w ogóle istnieje.
Ten post edytował Damonsson 25.09.2018, 00:20:10 |
|
|
25.09.2018, 09:56:18
Post
#3
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 22.10.2009 Skąd: Siędzę Ostrzeżenie: (0%) |
Oczywiscie... Musisz napisac class ktora dziedziczy po Security. W tej klasie dodajesz swoja method do sprawdzenia czy user ma dostep do ackji controllera.
Zostaje nadpisanie config symfony zeby Container wywowal twoja classe zamiast default... no i phpunit ;D |
|
|
25.09.2018, 16:37:00
Post
#4
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) |
Nie wiem dokładnie co chcesz osiągnąć, ale może uda się to zrobić za pomocą votersów ?
|
|
|
27.09.2018, 10:03:14
Post
#5
|
|
Grupa: Zarejestrowani Postów: 129 Pomógł: 13 Dołączył: 29.03.2012 Ostrzeżenie: (0%) |
Dzięki za pomoc. Athabus zrobilem to przy pomocy Voterów i raczej nie będzie potrzebne inne rozwiązanie. Jest mi to potrzebne do ustalania dostępu do danej akcji dla id grupy użytkownika z bazy danych ( administrator ma dostęp do wszystkich akcji, moderator do wybranych itd.) i administrowania dostępem poprzez bazę danych. Dodatkowo udało mi się stworzyć dodawanie indywidualnych uprawnień do akcji dla danego użytkownika. Jutro postaram się wrzucić moje rozwiązanie.
Poniżej udostępniam voter sprawdzający uprawnienia do akcji dla rangi użytkownika oraz uprawnienia do akcji dla id użytkownika. Voter operuje na dwóch tabelach. Jeżeli nie zostanie znalezione id rangi użytkownika w jednej tabeli to szuka id uprawnionego użytkownika w drugiej tabeli.
poniżej fragmenty repozytorium, odpowiedzialne za wyszukiwanie id rangi lub id użytkownika, dla którego mają zostać przyznane uprawnienia do akcji: PageroutesRepository.php:
Wszytko działa tylko, że problem pojawi się w momencie, gdy będę chciał zmienić nazwę stałej wywołującej określone działanie votera. Wtedy będę musiał ją zmienić we wszystkich akcjach, w których doczepiłem adnotację @security. Oczywiście nie będzie problemem wyedytowanie tych nazw ale jak będę miał 200 lub więcej akcji to zajmie to trochę czasu |
|
|
30.09.2018, 08:35:03
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 270 Pomógł: 184 Dołączył: 7.10.2012 Skąd: Warszawa Ostrzeżenie: (0%) |
Nie koniecznie , mozesz stworzyc mape nazw ktora bedzie konfigurowalna i wtedy dasz np
[ edit => [ edit1,edit2 ] ] Wtedy w klasie votera jestes w stanie to ogarnac i nie musisz wszedzie zmieniac |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 20:14 |