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

question-closed Symfony 4 - Rejestracja użytkownika -> przydzielenie roli ROLE_USER

Object Storage Arubacloud
+1 głos
282 wizyt
pytanie zadane 21 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
zamknięte 22 kwietnia 2019 przez hiper007

Witam!

Dokonuje rejestracji nowego użytkownika. Wszystko działa poprawnie ;) ale chciałbym, żeby podczas rejestracji do bazy w kolumnie "roles" dodał się rola ROLE_USER. Oczywiście jako pole ukryte:

->add('roles',HiddenType::class,
                 ['data' => 'ROLE_USER'])

w Encji:

Wyskakuje błąd:

Jak musiałbym zapisać 'data' w impucie , żeby rola dodała się do bazy. W postaci tablicy, ale w jaki sposób zapisana?? 

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

+1 głos
odpowiedź 22 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)
wybrane 22 kwietnia 2019 przez hiper007
 
Najlepsza

Po pierwsze treści błędów oraz kod wstawiaj w odpowiedni sposób to znaczy: kod w bloczkach z odpowiednim highlightem składni, a błędy w cytatach.

Co do problemu. Twoja logika zaczyna wyciekać na front. Role to druga rzecz po hasłach o której front powinien mieć jak najmniejszą wiedzę. Niech formularz stworzy użytkownika a tematy takie jak encode hasła, nadawanie roli ograj sam po prawidłowym submicie.

Najlepszym rozwiązaniem dla problemów tego typu jest separowanie formularzy od encji. Tzn. tworzysz klasę UserFormData i to do niej dostosowujesz formularz. Następnie jak wszystko jest ok to mapujesz wartości na encję usera i zapis do bazy.

komentarz 22 kwietnia 2019 przez hiper007 Stary wyjadacz (11,270 p.)

Dzięki ;)

/**
	* @Route("/register", name="app_register")
	*/
	public function registerAction(Request $request, UserPasswordEncoderInterface $passwordEncoder, EntityManagerInterface $em)
	{

		$form=$this->createForm(UserRegistrationFormType::class);

		$form->handleRequest($request);
		if($form->isSubmitted() && $form->isValid()) {

			/**@var User $user */
			$user = $form->getData();
			$user -> setPassword($passwordEncoder->encodePassword($user, $form['plainPassword']->getData()));
			$user -> setRoles(array('ROLE_USER'));

			if($form['Agree']->getData() === true)
			{

				$user->setAgree();
			}	

			$em->persist($user);
			$em->flush();

			$this->addFlash('success','Nowy Użytkownik dodany do bazy!');

			return $this->redirectToRoute('home');

		}

Wystarczyło dodać:

$user -> setRoles(array('ROLE_USER'));

i śmiga jak powinno ;) Jak by ktoś miał ten sam problem...

1
komentarz 22 kwietnia 2019 przez Ehlert Ekspert (212,670 p.)

setRole warto wydzielić do serwisu, żeby nie wykonywać logiki w kontrolerze.

Podobne pytania

0 głosów
2 odpowiedzi 361 wizyt
pytanie zadane 15 kwietnia 2019 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
–1 głos
1 odpowiedź 174 wizyt
pytanie zadane 10 stycznia 2020 w PHP przez niezalogowany
0 głosów
1 odpowiedź 318 wizyt
pytanie zadane 17 września 2019 w PHP przez michh123 Bywalec (2,790 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...