Exemple #1
0
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getContainer();
     /** @var MailerService $mailer */
     $mailer = $container->get('jlaso.mailer_service');
     $envir = $container->get('kernel')->getEnvironment();
     $email = $input->getArgument('email');
     $user = new User();
     $user->setEmail($email);
     $send = $mailer->sendWelcomeMessage($user);
     $output->writeln($send);
     $output->writeln(" done!");
 }
Exemple #2
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!");
 }
Exemple #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,
     //        );
 }
 /**
  * @Route("/user/do-github-login", name="do_github_login")
  */
 public function doGithubLoginAction()
 {
     $this->init();
     $request = $this->getRequest();
     $client_secret = 'd945ef6df389f0fa5d95eb638fd74fccf623d218';
     if ($code = $request->get('code')) {
         $data = sprintf('client_id=%s&client_secret=%s&code=%s', self::CLIENT_ID, $client_secret, urlencode($code));
         $ch = curl_init('https://github.com/login/oauth/access_token');
         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         $response = curl_exec($ch);
         preg_match('/access_token=([0-9a-f]+)/', $response, $out);
         curl_close($ch);
         //ld($response);
         sleep(1);
         if (isset($out[1])) {
             $access_token = $out[1];
             /**
             * {
             "login": "******",
             "id": 1332197,
             "avatar_url": "https://gravatar.com/avatar/05294fb8badbde3c6999bae2c0024165?d=https%3A%2F%2Fidenticons.github.com%2Fce92b9ab89941caa47947924ac110d1f.png&r=x",
             "gravatar_id": "05294fb8badbde3c6999bae2c0024165",
             "url": "https://api.github.com/users/jlaso",
             "html_url": "https://github.com/jlaso",
             "followers_url": "https://api.github.com/users/jlaso/followers",
             "following_url": "https://api.github.com/users/jlaso/following{/other_user}",
             "gists_url": "https://api.github.com/users/jlaso/gists{/gist_id}",
             "starred_url": "https://api.github.com/users/jlaso/starred{/owner}{/repo}",
             "subscriptions_url": "https://api.github.com/users/jlaso/subscriptions",
             "organizations_url": "https://api.github.com/users/jlaso/orgs",
             "repos_url": "https://api.github.com/users/jlaso/repos",
             "events_url": "https://api.github.com/users/jlaso/events{/privacy}",
             "received_events_url": "https://api.github.com/users/jlaso/received_events",
             "type": "User",
             "site_admin": false,
             "name": "Joseluis Laso",
             "company": "Joseluislaso",
             "blog": "http://www.joseluislaso.es",
             "location": "Valencia",
             "email": "*****@*****.**",
             "hireable": true,
             "bio": "Web developper apasionate, with PHP, jQuery, jQuerymobile, Symfony, Doctrine, Slim, CSS3, HTML5 ...",
             "public_repos": 57,
             "public_gists": 2,
             "followers": 2,
             "following": 16,
             "created_at": "2012-01-15T20:51:17Z",
             "updated_at": "2014-01-24T13:24:19Z"
             }
             */
             $data = $this->getDataFromGitHub($access_token);
             if (!count($data)) {
                 $this->addNoticeFlash('error.github_connect_not_possible');
                 $this->redirect($this->generateUrl('user_login'));
             }
             //ld($data); sleep(4);
             try {
                 $login = $data['login'];
                 $avatar_url = $data['avatar_url'];
                 $user = $this->getUserRepository()->findOneBy(array('username' => $login));
                 $email = isset($data['email']) ? $data['email'] : $login . '*****@*****.**';
                 if (!$user instanceof User) {
                     $user = $this->getUserRepository()->findOneBy(array('email' => $email));
                 }
                 if (!$user instanceof User) {
                     $user = new User();
                     $user->setEmail($email);
                     $user->setName(isset($data['name']) ? $data['name'] : 'unknown');
                     $user->setActive(true);
                     $user->setPassword(uniqid());
                     $user->setUsername($login);
                     $user->addRole('ROLE_TRANSLATOR');
                     $user->setAvatarUrl($avatar_url);
                     $this->em->persist($user);
                     $this->em->flush();
                 }
                 $this->loginAs($user);
                 //return new Response('OK');
                 return $this->redirect($this->generateUrl('user_index'));
             } catch (\Exception $e) {
                 print $e->getMessage();
                 var_dump($data);
             }
         } else {
             var_dump($response);
         }
     }
     return new Response('OK');
 }