createForm(RoleType::class); return $this->render('admin/roles.html.twig', [ 'form' => $form->createView(), ]); } /** * Add a role to current user as submitted in a form */ #[Route('/admin/role/add', name: 'admin_roles_add')] public function addRole(Request $request, UserEntityRepository $userRepository, EntityManagerInterface $em, TokenStorageInterface $tokenStorage): Response { // get role from request and add to current user's roles and save to db $npub = $this->getUser()->getUserIdentifier(); $form = $this->createForm(RoleType::class); $form->handleRequest($request); if (!$form->isSubmitted() || !$form->isValid()) { return $this->render('admin/roles.html.twig', [ 'form' => $form->createView(), ]); } $role = $form->get('role')->getData(); $user = $userRepository->findOneBy(['npub' => $npub]); $user->addRole($role); $em->persist($user); $em->flush(); // regenerate token with new roles // Refresh the user token after update $token = $tokenStorage->getToken(); if ($token) { $token->setUser($user); $tokenStorage->setToken($token); } // add a flash message $this->addFlash('success', 'Role added to user'); return $this->render('admin/roles.html.twig', [ 'form' => $form->createView(), ]); } }