• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
223 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 (214,470 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ź 217 wizyt
pytanie zadane 29 marca 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 16 września 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 13 marca 2018 w PHP przez MiguelSantos Początkujący (270 p.)

93,164 zapytań

142,175 odpowiedzi

321,926 komentarzy

62,491 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 682p. - dia-Chann
  2. 670p. - CC PL
  3. 669p. - Łukasz Piwowar
  4. 656p. - Łukasz Eckert
  5. 567p. - ssynowiec
  6. 453p. - Marcin Putra
  7. 428p. - rafalszastok
  8. 423p. - Michal Drewniak
  9. 423p. - Adrian Wieprzkowicz
  10. 418p. - rucin93
  11. 415p. - Mikbac
  12. 410p. - Piotr Aleksandrowicz
  13. 408p. - ksalekk
  14. 402p. - Mariusz Fornal
  15. 401p. - Dawid128
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...