getProfile(); if (! empty($profile)) { $this->userInfo = new GoogleUserProvider($profile); return true; } return false; } /** * Set Code * * @access public * @param string $code * @return GoogleAuth */ public function setCode($code) { $this->code = $code; return $this; } /** * Get user object * * @access public * @return GoogleUserProvider */ public function getUser() { return $this->userInfo; } /** * Get configured OAuth2 service * * @access public * @return \Kanboard\Core\Http\OAuth2 */ public function getService() { if (empty($this->service)) { $this->service = $this->oauth->createService( GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, $this->helper->url->to('oauth', 'google', array(), '', true), 'https://accounts.google.com/o/oauth2/auth', 'https://accounts.google.com/o/oauth2/token', array('https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile') ); } return $this->service; } /** * Get Google profile * * @access private * @return array */ private function getProfile() { $this->getService()->getAccessToken($this->code); return $this->httpClient->getJson( 'https://www.googleapis.com/oauth2/v1/userinfo', array($this->getService()->getAuthorizationHeader()) ); } /** * Unlink user * * @access public * @param integer $userId * @return bool */ public function unlink($userId) { return $this->user->update(array('id' => $userId, 'google_id' => '')); } }