/** * @Route("/user-upload-avatar", name="user_upload_avatar") */ public function userUploadAvatarAction(Request $request) { $session = $request->getSession(); $this->init(); $directory = dirname($this->get('kernel')->getRootDir()) . '/web/uploads'; $name = sprintf("avatar-%06d.png", $this->user->getId()); foreach ($request->files as $file) { $file->move($directory, $name); break; } $avatar = "/uploads/" . $name; ImageTools::resizeImage($directory . '/' . $name, 100, 100, array('action' => ImageTools::COPY_ORIG_DEST)); $this->user->setAvatarUrl($avatar); $this->em->persist($this->user); $this->em->flush($this->user); return $this->redirect($this->generateUrl('user_profile')); }
/** * @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'); }