Esempio n. 1
0
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getContainer();
     /** @var EntityManager $em */
     $em = $container->get('doctrine')->getManager();
     // Create first user
     $user = new User();
     $user->setEmail('*****@*****.**');
     $user->setName('Admin Tradukoj');
     $user->setActive(true);
     $user->addRole(User::ROLE_ADMIN);
     $user->setPassword('Tradukoj$1234');
     /** @var EncoderFactory $encoderFactory */
     $encoderFactory = $container->get('security.encoder_factory');
     $encoder = $encoderFactory->getEncoder($user);
     $user->setPassword($encoder->encodePassword($user->getPassword(), $user->getSalt()));
     $em->persist($user);
     $em->flush();
     $usersColl = new ArrayCollection();
     $usersColl->add($user);
     // create first project
     $project = new Project();
     $project->setName('tradukoj');
     $project->setApiKey('tradukoj.com');
     $project->setApiSecret('Tradukoj$1234');
     $project->setManagedLocales('en,es');
     $project->setProject('tradukoj');
     //$project->setUsers($usersColl);
     $permission = new Permission();
     $permission->setUser($user);
     $permission->setProject($project);
     $permission->addPermission(Permission::OWNER);
     // Give permission to write in all languages
     $permission->addPermission(Permission::WRITE_PERM, '*');
     $em->persist($permission);
     $em->persist($project);
     $em->flush();
     $output->writeln(" done!");
 }
Esempio n. 2
0
 /**
  * Create new Project
  *
  * @Route("/new-project", name="new_project")
  * @Template()
  */
 public function newProjectAction(Request $request)
 {
     $this->init();
     $project = new Project();
     $form = $this->createForm(new NewProjectType(), $project);
     if ($request->isMethod('POST')) {
         $form->bind($request);
         if ($form->isValid()) {
             $permission = new Permission();
             $permission->setUser($this->user);
             $permission->setProject($project);
             $permission->addPermission(Permission::OWNER);
             // Give permission to write in all languages
             $permission->addPermission(Permission::WRITE_PERM, '*');
             $this->em->persist($permission);
             $this->em->persist($project);
             $this->em->flush();
             /** @var MailerService $mailer */
             $mailer = $this->get('jlaso.mailer_service');
             try {
                 $send = $mailer->sendNewProjectMessage($project, $this->user);
             } catch (\Exception $e) {
                 if ($this->get('kernel')->getEnvironment() == 'prod') {
                     // ?
                 }
             }
             return $this->redirect($this->generateUrl('user_index'));
         }
     }
     return array('error' => null, 'form' => $form->createView(), 'project' => $project);
 }
Esempio n. 3
0
 /**
  * @Route("/add-user/{projectId}", name="users_add_new_user")
  * @Template()
  * @ParamConverter("project", class="TranslationsBundle:Project", options={"id" = "projectId"})
  */
 public function newUserAction(Project $project, Request $request)
 {
     $session = $request->getSession();
     $this->init();
     /** @var Permission $permission */
     $permission = $this->translationsManager->getPermissionForUserAndProject($this->user, $project);
     if (!$permission || $permission->getPermissions(Permission::GENERAL_KEY) != Permission::OWNER) {
         throw new AclException($this->translator->trans('error.acl.not_enough_permissions_to_manage_this_project'));
     }
     $email = $request->get('email');
     $user = $this->getUserRepository()->findOneBy(array('email' => $email));
     if (!$user) {
         $user = new User();
         $user->setEmail($email);
         //            //$user->set
         /** @var MailerService $mailer */
         $mailer = $this->get('jlaso.mailer_service');
         try {
             $send = $mailer->sendWelcomeMessage($user);
         } catch (\Exception $e) {
         }
         if (is_string($send)) {
             $this->addNoticeFlash($send);
         } else {
             $this->addNoticeFlash('user.permissions.user_invited');
         }
     } else {
         $managedLocales = explode(',', $project->getManagedLocales());
         /** @var Permission[] $permissions */
         $permissions = $this->getPermissionRepository()->findBy(array('project' => $project));
         $usersData = array();
         $alreadyExists = false;
         foreach ($permissions as $perm) {
             $currentUser = $perm->getUser();
             $usersData[] = array('id' => $currentUser->getId(), 'name' => $currentUser->getName(), 'email' => $currentUser->getEmail(), 'createdAt' => $currentUser->getCreatedAt(), 'active' => $currentUser->getActive(), 'permissions' => $this->expandPermissions($managedLocales, $perm->getPermissions()));
             if ($currentUser->getEmail() == $email) {
                 $this->addNoticeFlash('user.permissions.user_already_exists');
                 $alreadyExists = true;
             }
         }
         if (!$alreadyExists) {
             $permission = new Permission();
             $permission->setUser($user);
             $permission->setProject($project);
             $permission->addPermission(Permission::COLLABORATOR);
             // Give permission to write in all languages
             $permission->addPermission(Permission::READ_PERM, '*');
             $this->em->persist($permission);
             $this->em->flush();
         }
     }
     // ldd($usersData, $permission->getPermissions());
     return $this->redirect($this->generateUrl('users_index', array('projectId' => $project->getId())));
     //        return array(
     //            'action'         => 'users',
     //            'project'        => $project,
     //            'permissions'    => $permission->getPermissions(),
     //            'users'          => $usersData,
     //            'managedLocales' => $managedLocales,
     //        );
 }