/** * Signs in the user (obtain a token). */ public function actionSignIn() { if ($this->login->hasToken()) { $this->forward('signInRedirect'); } $this->login->askPermissions($this->link('//signInBacklink'), function ($url) { $this->redirectUrl($url); }); }
public function __construct(Github\OAuth\Login $login, Github\Api $api, Nette\Http\Session $session) { $session = $session->getSection('milo.github.nette-extension.user'); if ($login->hasToken()) { $token = $login->getToken(); $hash = sha1($token->getValue()); if ($session->hash !== $hash) { $info = $this->defaults; $user = $api->decode($api->get('/user')); $info['id'] = $user->id; $info['login'] = $user->login; $info['name'] = $user->name; $info['avatarUrl'] = $user->avatar_url; if ($token->hasScope('user:email')) { $emails = $api->decode($api->get('/user/emails')); foreach ($emails as $email) { $info['email'] = $email->email; if ($email->primary) { break; } } } $session->info = $info; $session->hash = $hash; } $this->isLoggedIn = TRUE; } else { $session->remove(); $session->info = $this->defaults; } $this->info = $session->info; }