e59-website/html/login/google-callback.php
2024-08-31 18:13:01 +00:00

81 lines
3.1 KiB
PHP
Executable File

<?php
require '../../include/variables.php';
require '../../include/init.php';
require("../../include/main-functions.php");
require './vendor/autoload.php'; // Chemin vers le fichier autoload généré par Composer
$client = new Google_Client();
$client->setClientId('492430091865-vtggls1qrvs2snmeidp12gupsm964f4b.apps.googleusercontent.com');
$client->setClientSecret('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');
$client->setRedirectUri('https://e59.fr/login/google-callback.php');
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$client->setAccessToken($token['access_token']);
// Get user profile information
$oauth2 = new Google_Service_Oauth2($client);
$userinfo = $oauth2->userinfo->get();
$email = $userinfo->email;
$name = $userinfo->name;
// Convertir en minuscule et retirer les caractères spéciaux et les espaces
$username = strtolower($name);
$username = preg_replace('/[^a-z0-9]/', '', $username);
// Établir la connexion à la base de données
$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);
// Vérifiez si l'utilisateur existe dans la base de données par email
$sqlRequest = "SELECT ID, username, display_name, role, accreditation FROM users WHERE email = :email";
$request = $pdo->prepare($sqlRequest);
$request->bindParam(":email", $email);
$request->execute();
$result = $request->fetchAll(PDO::FETCH_ASSOC);
if ($result) {
// L'utilisateur existe, connectez-le
session_start();
$_SESSION['userID'] = $result[0]['ID'];
$_SESSION['userName'] = $result[0]['username'];
$_SESSION['userDisplayName'] = $result[0]['display_name'];
$_SESSION['userRole'] = $result[0]['role'];
$_SESSION['userAccreditation'] = $result[0]['accreditation'];
} else {
// L'utilisateur n'existe pas, créez-le
$sqlInsert = "INSERT INTO users (username, email, display_name, role) VALUES (:username, :email, :display_name, 1)";
$insert = $pdo->prepare($sqlInsert);
$insert->bindParam(":username", $username);
$insert->bindParam(":email", $email);
$insert->bindParam(":display_name", $name);
$insert->execute();
$from = "no-reply@e59.fr";
$fromName = "Association E59";
$to = "communication@e59.fr";
$subject = "Nouvel utilisateur";
$body = "$name a créé un compte sur e59.fr";
$altbody = "$name a créé un compte sur e59.fr";
sendMail($from, $fromName, $to, $subject, $body, $altbody);
// Récupérez l'ID du nouvel utilisateur
$userID = $pdo->lastInsertId();
// Connectez l'utilisateur
session_start();
$_SESSION['userID'] = $userID;
$_SESSION['userName'] = $username;
$_SESSION['userDisplayName'] = $name;
$_SESSION['userRole'] = 'user';
$_SESSION['userAccreditation'] = null;
}
// Redirection vers la page d'accueil ou une autre page
header('Location: /');
exit();
} else {
header('Location: /login');
exit();
}
?>