113 lines
4.7 KiB
PHP
113 lines
4.7 KiB
PHP
<?php
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\Exception;
|
|
|
|
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();
|
|
$mail = new PHPMailer(true);
|
|
|
|
try {
|
|
// Paramètres du serveur SMTP
|
|
$mail->isSMTP(); // Utiliser SMTP
|
|
$mail->Host = 'outlook.office365.com'; // Serveur SMTP Exchange
|
|
$mail->SMTPAuth = true; // Activer l'authentification SMTP
|
|
$mail->Username = 'smtp@e59.fr'; // Nom d'utilisateur SMTP
|
|
$mail->Password = 'WTFdoto5678TFWT'; // Mot de passe SMTP
|
|
$mail->SMTPSecure = 'tls'; // Activer le cryptage TLS
|
|
$mail->Port = 587; // Port TCP pour TLS
|
|
|
|
// Destinataires
|
|
$mail->setFrom('service-adhesions@e59.fr', 'Adhesions');
|
|
$mail->addAddress('communication@e59.fr', 'E59-UVSQ'); // Port TCP à se connecter (tls = 587, ssl = 465)
|
|
|
|
// Vous pouvez ajouter d'autres destinataires en utilisant $mail->addAddress()
|
|
// $mail->addAddress('autre-destinataire@example.com');
|
|
// Vous pouvez aussi ajouter des destinataires en copie (CC) ou en copie cachée (BCC)
|
|
// $mail->addCC('cc@example.com');
|
|
// $mail->addBCC('bcc@example.com');
|
|
|
|
// Pièces jointes (si nécessaire)
|
|
// $mail->addAttachment('/path/to/file.pdf'); // Ajouter un fichier joint
|
|
|
|
// Contenu de l'email
|
|
$mail->isHTML(true); // Activer le format HTML pour l'email
|
|
$mail->Subject = 'Nouvel Utilisateur';
|
|
$mail->Body = $name . ' a cree un compte sur e59.fr';
|
|
$mail->AltBody = $name . ' a cree un compte sur e59.fr';
|
|
|
|
// Envoyer l'email
|
|
$mail->send();
|
|
} catch (Exception $e) {
|
|
error_log("Erreur de Mailer: {$mail->ErrorInfo}");
|
|
}
|
|
|
|
// 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();
|
|
}
|
|
?>
|