/** * Load * * @param ObjectManager $manager */ public function load(ObjectManager $manager) { $metadata = $manager->getClassMetaData('Unifik\\SystemBundle\\Entity\\Role'); $metadata->setIdGeneratorType(ClassMetadata::GENERATOR_TYPE_NONE); $role = new Role(); $role->setId(1); $role->setRole('ROLE_BACKEND_ADMIN'); $roleFr = new RoleTranslation(); $roleFr->setLocale($manager->merge($this->getReference('locale-fr'))->getCode()); $roleFr->setName('Administrateur'); $roleFr->setTranslatable($role); $roleEn = new RoleTranslation(); $roleEn->setLocale($manager->merge($this->getReference('locale-en'))->getCode()); $roleEn->setName('Administrator'); $roleEn->setTranslatable($role); $manager->persist($role); $manager->persist($roleFr); $manager->persist($roleEn); $role = new Role(); $role->setId(2); $role->setRole('ROLE_BACKEND_ACCESS'); $roleFr = new RoleTranslation(); $roleFr->setLocale($manager->merge($this->getReference('locale-fr'))->getCode()); $roleFr->setName('Accès Admin'); $roleFr->setTranslatable($role); $roleEn = new RoleTranslation(); $roleEn->setLocale($manager->merge($this->getReference('locale-en'))->getCode()); $roleEn->setName('Backend Access'); $roleEn->setTranslatable($role); $manager->persist($role); $manager->persist($roleFr); $manager->persist($roleEn); $role = new Role(); $role->setId(3); $role->setRole('ROLE_DEVELOPER'); $roleFr = new RoleTranslation(); $roleFr->setLocale($manager->merge($this->getReference('locale-fr'))->getCode()); $roleFr->setName('Développeur'); $roleFr->setTranslatable($role); $roleEn = new RoleTranslation(); $roleEn->setLocale($manager->merge($this->getReference('locale-en'))->getCode()); $roleEn->setName('Developer'); $roleEn->setTranslatable($role); $manager->persist($role); $manager->persist($roleFr); $manager->persist($roleEn); $manager->flush(); $this->addReference('role-admin', $role); }
/** * Displays a form to edit an existing User entity. * * @param integer $id The ID of the User to edit * @param Request $request The Request * * @return RedirectResponse|Response */ public function editAction($id, Request $request) { $user = $this->getEm()->getRepository('UnifikSystemBundle:User')->find($id); if (!$user) { $user = new User(); $user->setContainer($this->container); } $this->pushNavigationElement($user); $form = $this->createForm(new UserType(), $user, array('validation_groups' => $user->getId() ? 'edit' : 'new', 'self_edit' => $user == $this->getUser(), 'developer' => $this->isDeveloper)); if ($request->getMethod() == 'POST') { $previousEncodedPassword = $user->getPassword(); $form->submit($request); if ($form->isValid()) { // All Users are automatically granted the ROLE_BACKEND_ACCESS Role $backendAccessRole = $this->getEm()->getRepository('UnifikSystemBundle:Role')->findOneBy(array('role' => 'ROLE_BACKEND_ACCESS')); if (!$backendAccessRole) { $backendAccessRole = new Role(); $backendAccessRole->setRole('ROLE_BACKEND_ACCESS'); $this->getEm()->persist($backendAccessRole); } $user->addRole($backendAccessRole); // New password set if ($form->get('password')->getData()) { $encoder = $this->get('security.encoder_factory')->getEncoder($user); $encodedPassword = $encoder->encodePassword($user->getPassword(), $user->getSalt()); } else { $encodedPassword = $previousEncodedPassword; } $user->setPassword($encodedPassword); // Forcing the selected locale by the user if ($locale = $user->getLocale()) { $request->setLocale($locale); } $this->getEm()->persist($user); $this->getEm()->flush(); $this->addFlashSuccess($this->get('translator')->trans('%entity% has been saved.', array('%entity%' => $user))); if ($request->request->has('save')) { return $this->redirect($this->generateUrl('unifik_system_backend_user')); } return $this->redirect($this->generateUrl('unifik_system_backend_user_edit', array('id' => $user->getId()))); } else { $this->addFlashError('Some fields are invalid.'); } } return $this->render('UnifikSystemBundle:Backend/User/User:edit.html.twig', array('user' => $user, 'form' => $form->createView())); }
/** * Find users that have the specified role * * @param Role $role * * @return ArrayCollection|QueryBuilder */ public function findByRole($role) { $queryBuilder = $this->createQueryBuilder('u')->select('u')->innerJoin('u.roles', 'r')->where('r.id = :role_id')->setParameter('role_id', $role->getId())->orderBy('u.lastname', 'ASC'); return $this->processQuery($queryBuilder); }