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!"); }
/** * @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'); }