コード例 #1
0
 /**
  * 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);
 }
コード例 #2
0
 /**
  * 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()));
 }
コード例 #3
0
 /**
  * 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);
 }