Próbuje rozgryźć w jaki sposób działa autoryzacja (logowanie w "FOSUserBundle"). Kontroler SecurityController.php wykorzystuje w tym celu trzy akcje: loginAction, renderLogin, checkAction.
Akcja "loginAction" to właściwie przygotowanie to wyświetlenia formularza z użyciem renderLogin - nigdzie tutaj nie ma konkretów; szukam linijek, które przedstawią mi bezpośrednie działanie autoryzacji (tj: walidacja pól formularza, ewentualne zwrócenie błędów walidacji, sam proces logowania (poprawna, błędna autoryzacja).
Routing formularza (parametr "action" w formularzu) kieruje na akcje "checkAction" - choć wydaje mi się ona trochę bezużyteczna (?), ponieważ rzucamy od razu wyjątkiem. Mam skonfigurowany security.yml gdzie parametr "form_login" kieruje według ustawień:
Kod
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
Jednak niewiele mi mówi samo hasło "provider" - więc tego kroku dalej nie zagłębiałem, więc jestem w kropce. Wydaje mi się, że cały ten moduł/vendor opiera się na eventach - i w przypadku wykrycia danej akcji (rejestracja, logowanie, zapomniałem hasła, itd). Folder EventListener posiada plik AuthenticationListener.php, który posiada akcje authenticate, ale nie mogę nigdzie w kontrolerach/plikach konfiguracynych znaleźć wywołania ani tego eventu.
Więc podsumowując:
1) Pliki konfiguracyjne, parametr "provider" - za co dokładnie odpowiada? Parametr, który określa jaka klasa, bundle będzie używana dla danego modułu (?) - w tym przypadku "form_login" ?
2) Najważniejsze: w którym momencie jest wywoływana akcja/funkcja authenticate z EventListenera?