Copy init.php.in to init.php Set database username, password Set $GoogleClientID and $GoogleClientSecret To get those: * Navigate to the Google Cloud Console. https://cloud.google.com/console * Click on the Create Project button on top of the page, enter the following values and then click on the Create button. * Once the project has been created, open the APIs & auth group (left navigation pannel) and then click on Consent screen and set it up (this is just for what is shown to the user, values not important) * Open the APIs & auth group in the left pannel (if it's not already open) and click on Credentials. * Click on the CREATE NEW CLIENT ID button, enter/tick the following values and then click on the Create Client ID button. Application type: Web Application Authorized Javascript origins: http://crash.replex.org Authorized redirect URI: http://crash.replex.org/process_login.php (replace with appropriate links. imporant bit is url to process_login.php) You will now have Client ID and Client secret
103 lines
2.9 KiB
PHP
103 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* GoogleLogin.php
|
|
* Helper for implementation of Google Oath2
|
|
*
|
|
* Description
|
|
* @package Replex Crash Processor
|
|
* @author Latif Khalifa <latifer@streamgrid.net>
|
|
* @copyright Copyright © 2012-2014, Latif Khalifa
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files
|
|
* (the "Software"), to deal in the Software without restriction, including
|
|
* without limitation the rights to use, copy, modify, merge, publish,
|
|
* distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
* persons to whom the Software is furnished to do so, subject to the
|
|
* following conditions:
|
|
*
|
|
* - The above copyright notice and this permission notice shall be included
|
|
* in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
|
|
class GoogleLogin
|
|
{
|
|
static $client = null;
|
|
static $clientID;
|
|
static $clientSecret;
|
|
static $scope = "openid email";
|
|
static $accessToken;
|
|
|
|
static function init($clientID, $clientSecret)
|
|
{
|
|
self::$clientID = $clientID;
|
|
self::$clientSecret = $clientSecret;
|
|
}
|
|
|
|
static function getClient()
|
|
{
|
|
if (self::$client == null)
|
|
{
|
|
$client = new Google_Client();
|
|
$client->setClientId(self::$clientID);
|
|
$client->setClientSecret(self::$clientSecret);
|
|
$client->setRedirectUri(URL_ROOT . "/process_login.php" );
|
|
$client->setScopes("email");
|
|
self::$client = $client;
|
|
}
|
|
|
|
return self::$client;
|
|
}
|
|
|
|
static function loginURL()
|
|
{
|
|
$client = self::getClient();
|
|
return $client->createAuthUrl();
|
|
}
|
|
|
|
static function verifyLogin($code)
|
|
{
|
|
try
|
|
{
|
|
$client = self::getClient();
|
|
$client->authenticate($code);
|
|
self::$accessToken = $client->getAccessToken();
|
|
return true;
|
|
}
|
|
catch (Exception $e)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static function getAttribs()
|
|
{
|
|
$client = self::getClient();
|
|
$attr = $client->verifyIdToken()->getAttributes();
|
|
return $attr["payload"];
|
|
}
|
|
|
|
static function userID()
|
|
{
|
|
$attr = self::getAttribs();
|
|
return $attr["sub"];
|
|
}
|
|
|
|
static function userEmail()
|
|
{
|
|
$attr = self::getAttribs();
|
|
return $attr["email"];
|
|
}
|
|
|
|
|
|
} |