mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-19 07:12:26 +02:00
Feature/merge 3 0 develop (#298)
* merging 3.0 into develop * N°5102 - Allow to send emails (eg. notifications) using GSuite SMTP and OAuth * migration to iTop 3.1 Co-authored-by: Eric Espie <eric.espie@combodo.com>
This commit is contained in:
35
lib/league/oauth2-google/examples/index.php
Normal file
35
lib/league/oauth2-google/examples/index.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
$provider = require __DIR__ . '/provider.php';
|
||||
|
||||
if (!empty($_GET['error'])) {
|
||||
|
||||
// Got an error, probably user denied access
|
||||
exit('Got error: ' . htmlspecialchars($_GET['error'], ENT_QUOTES, 'UTF-8'));
|
||||
|
||||
} elseif (empty($_GET['code'])) {
|
||||
|
||||
// If we don't have an authorization code then get one
|
||||
$authUrl = $provider->getAuthorizationUrl();
|
||||
$_SESSION['oauth2state'] = $provider->getState();
|
||||
header('Location: ' . $authUrl);
|
||||
exit;
|
||||
|
||||
} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
|
||||
|
||||
// State is invalid, possible CSRF attack in progress
|
||||
unset($_SESSION['oauth2state']);
|
||||
exit('Invalid state');
|
||||
|
||||
} else {
|
||||
|
||||
// Try to get an access token (using the authorization code grant)
|
||||
$token = $provider->getAccessToken('authorization_code', [
|
||||
'code' => $_GET['code']
|
||||
]);
|
||||
|
||||
$_SESSION['token'] = serialize($token);
|
||||
|
||||
// Optional: Now you have a token you can look up a users profile data
|
||||
header('Location: /user.php');
|
||||
}
|
||||
24
lib/league/oauth2-google/examples/provider.php
Normal file
24
lib/league/oauth2-google/examples/provider.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use League\OAuth2\Client\Provider\Google;
|
||||
|
||||
// Replace these with your token settings
|
||||
// Create a project at https://console.developers.google.com/
|
||||
$clientId = 'your-client-id';
|
||||
$clientSecret = 'your-client-secret';
|
||||
|
||||
// Change this if you are not using the built-in PHP server
|
||||
$redirectUri = 'http://localhost:8080/';
|
||||
|
||||
// Start the session
|
||||
session_start();
|
||||
|
||||
// Initialize the provider
|
||||
$provider = new Google(compact('clientId', 'clientSecret', 'redirectUri'));
|
||||
|
||||
// No HTML for demo, prevents any attempt at XSS
|
||||
header('Content-Type', 'text/plain');
|
||||
|
||||
return $provider;
|
||||
7
lib/league/oauth2-google/examples/reset.php
Normal file
7
lib/league/oauth2-google/examples/reset.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$provider = require __DIR__ . '/provider.php';
|
||||
|
||||
unset($_SESSION['token'], $_SESSION['state']);
|
||||
|
||||
header('Location: /');
|
||||
3
lib/league/oauth2-google/examples/server.sh
Normal file
3
lib/league/oauth2-google/examples/server.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
php -S localhost:8080
|
||||
39
lib/league/oauth2-google/examples/user.php
Normal file
39
lib/league/oauth2-google/examples/user.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
$provider = require __DIR__ . '/provider.php';
|
||||
|
||||
if (isset($_GET['logout']) && 1 == $_GET['logout']) {
|
||||
unset($_SESSION['token']);
|
||||
}
|
||||
|
||||
if (!empty($_SESSION['token'])) {
|
||||
$token = unserialize($_SESSION['token']);
|
||||
}
|
||||
|
||||
if (empty($token)) {
|
||||
header('Location: /');
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
// We got an access token, let's now get the user's details
|
||||
$userDetails = $provider->getResourceOwner($token);
|
||||
|
||||
// Use these details to create a new profile
|
||||
printf('Hello %s!<br/>', $userDetails->getFirstname());
|
||||
} catch (Exception $e) {
|
||||
// Failed to get user details
|
||||
exit('Something went wrong: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
// Use this to interact with an API on the users behalf
|
||||
echo "Token is: <tt>", $token->getToken(), "</tt><br/>";
|
||||
|
||||
// Use this to get a new access token if the old one expires
|
||||
echo "Refresh token is: <tt>", $token->getRefreshToken(), "</tt><br/>";
|
||||
|
||||
// Number of seconds until the access token will expire, and need refreshing
|
||||
echo "Expires at ", date('r', $token->getExpires()), "<br/>";
|
||||
|
||||
// Allow the user to logout
|
||||
echo '<a href="?logout=1">Logout</a><br/>';
|
||||
Reference in New Issue
Block a user