• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logowanie użytkowników różnych kategorii | Symfony 3.4 i Doctrine 2

VPS Starter Arubacloud
0 głosów
174 wizyt
pytanie zadane 18 października 2018 w PHP przez Tom K Nowicjusz (190 p.)

Cześć,

Tworzę aplikację w Symfony 3.4 i Doctrine 2 i napotkałem pewien problem. Otóż podzieliłem użytkowników na różne kategorie i każdy ma swoją Entity. Kiedy użytkownik chce się zalogować za pomocą formularza zawierającego nick oraz hasło muszę sprawdzić każde entity (de facto tabelę w bazie danych). Problem polega na tym, że nie chcę robić tego ręcznie, bo mogę dodać różne typy użytkowników w przyszłości, a nie chcę za każdym razem modyfikować klasy, która dokonuje sprawdzenia. Jak najlepiej rozwiązać ten problem?

Rozwiązania które przyszły mi na myśl, oraz komentarze odnośnie koncepcji działania klas odpowiedzialnych za obsługę operacji na użytkownikach zawarłem w komentarzach kodu. Najlepiej moim zdaniem przeanalizować jego działanie zaczynając od metody kontrolera registerAction() w pliku UsersController.php, gdyż jest ona (pomijając pewne poprawki) ukończona i dodałem tam obszerne komentarze. Dopiero potem proponuję przejść do kontrolera loginAction().

Proszę bardziej doświadczonych kolegów koderów o sugestie i zarazem jestem bardzo ciekaw Waszych opinii i pomysłów.

Jestem początkującym koderem i jest to moja pierwsza aplikacja w symfony i doctrine. Będę więc bardzo wdzięczny za uwagi dotyczące nie tylko problemu z logowaniem, ale też samego kodu, organizacji klas, oceny pomysłu na zarządzanie użytkownikami, i wszelkich innych uwag jakie przyjdą Wam do głowy.

Zastanawiam się też jaki typ powiązania łączy klasę UsersManager z UserManagerComponent. Czy jest to kompozycja, czy agregacja?

Zamieszczam link do repozytorium na github zawierający omawianą część aplikacji:
https://github.com/Tomasz-Kolasa/UsersManager

Serdecznie pozdrawiam wszystkie życzliwe osoby i z góry dziękuję za pomoc i uwagi!

1 odpowiedź

+1 głos
odpowiedź 18 października 2018 przez Ehlert Ekspert (212,630 p.)
wybrane 18 października 2018 przez Tom K
 
Najlepsza

Skoro użytkownicy to kilka encji, toto wykorzystaj discriminator. Wyodrębnij wspólne cechy do jednej klasy.

Na Twoim miejscu nie realizowałbym sam logowania. Symfony udostępnia mnóstwo opcji: Security, firewall. Możesz skorzystać z Fosuserbundle. Masz możliwość również napisania customowych guardów, userproviderów itp itd. Ale tego typu akcje na pewno nie w kontrolerach.

Ostatnia rada to komentarze. Porzuć je na rzecz dokumentacji. Oczywiście w języku ang. W necie masz mnóstwo przykładów.

komentarz 18 października 2018 przez Tom K Nowicjusz (190 p.)
Cześć,

Dzięki za szybką odpowiedź, w najbliższym czasie zapoznam się z sugerowanymi tematami.

Co do logowania to nie miałem zamiaru realizować go w kontrolerze. Wnioskuję, że nie widziałeś kodu.

Komentarze były w angielskim, ale zmieniłem na Polski przed wrzuceniem na forum. To mój pierwszy post więc nie wiem co lepsze. Poczytam też o dokumentacji. Przyznam jednak że do tej pory o nie myślałem o jej prowadzeniu. Uznałem że na potrzeby kilku klas i forum komentarze wystarczą.

Jeszcze raz dzięki za odpowiedź, Twoje uwagi i sugestie są dla mnie bardzo cenne.
komentarz 24 października 2018 przez Tom K Nowicjusz (190 p.)

@Ehlert,  discriminator jak najbardziej fajna sprawa, ale w moim przypadku raczej nie przyda mi się posiadanie kilku encji użytkowników jeśli pójdę w rozwiązanie z Fosuserbundle, ponieważ Fosuserbundle wspiera tylko jedną encję User. Próbowałem użyć PUGXMultiUser Bundle, ale okazało się, że nie jest już wspierane i nie działa z Symfony 3.4. Chyba pozostaje mi tylko zrezygnować z FOSUserBundle jeśli zamierzam mieć różne kategorie użytkowników, chyba że masz inny pomysł?...

Podobne pytania

0 głosów
1 odpowiedź 192 wizyt
pytanie zadane 29 marca 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 16 września 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 13 marca 2018 w PHP przez MiguelSantos Początkujący (270 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...