getRoles(); $previousHotelCodes = $user->getHotelCodes(); $form = $this->createForm(UserType::class, $user, ['hx_post' => $request->getRequestUri()]); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($this->locksOutSelf($user)) { $form->get('roles')->addError(new FormError('Du kannst dir die Rolle Administration nicht selbst entziehen.')); return $this->render('admin/user/modal_edit.html.twig', [ 'user' => $user, 'form' => $form, 'syncedRoles' => Role::syncedOnly($user->getRoles()), ]); } $this->entityManager->flush(); $this->addFlash('success', 'Der Benutzeraccount wurde aktualisiert'); $this->logger->info('Updated user permissions', [ 'email' => $user->getEmail(), 'previousRoles' => $previousRoles, 'roles' => $user->getRoles(), 'previousHotelCodes' => $previousHotelCodes, 'hotelCodes' => $user->getHotelCodes(), ]); return new HxRedirectResponse($this->getReturnUrl($request, 'app_admin_user')); } return $this->render('admin/user/modal_edit.html.twig', [ 'user' => $user, 'form' => $form, 'syncedRoles' => Role::syncedOnly($user->getRoles()), ]); } private function locksOutSelf(User $user): bool { return $user === $this->getUser() && false === \in_array(Role::ADMIN, $user->getRoles(), true); } }