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(); } ?>