<?php /** * FavMasToKey - Authentification OAuth avec Misskey */ // Définir la constante pour inclure les fichiers define('FAVMASTOKEY', true); // Inclure les fichiers requis require_once 'includes/config.php'; require_once 'includes/functions.php'; // Vérifier si l'instance est fournie if (!isset($_GET['instance']) || empty($_GET['instance'])) { $_SESSION['messages'][] = [ 'type' => 'danger', 'text' => 'Aucune instance Misskey spécifiée.' ]; header('Location: index.php'); exit; } // Récupérer l'instance $instance = trim($_GET['instance']); // Supprimer le protocole et les slash de fin si présents $instance = preg_replace('/^https?:\/\//', '', $instance); $instance = rtrim($instance, '/'); // Vérifier que l'instance semble valide if (!preg_match('/^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $instance)) { $_SESSION['messages'][] = [ 'type' => 'danger', 'text' => 'L\'URL de l\'instance Misskey semble invalide.' ]; header('Location: index.php'); exit; } // Stocker l'instance dans la session $_SESSION['misskey_instance'] = $instance; // Vérifier si cette instance est déjà enregistrée $client_id = null; $client_secret = null; if (isset($app_data['instances'][$instance])) { $client_id = $app_data['instances'][$instance]['client_id']; $client_secret = $app_data['instances'][$instance]['client_secret']; } else { // L'application n'est pas encore enregistrée, on l'enregistre $registration = register_misskey_app($instance); if ($registration['success']) { // Enregistrement réussi, stocker les informations $client_id = $registration['client_id']; $client_secret = $registration['client_secret']; // Sauvegarder dans le fichier de données $app_data['instances'][$instance] = [ 'client_id' => $client_id, 'client_secret' => $client_secret, 'registered_at' => time() ]; save_app_data(); } else { // Échec de l'enregistrement $_SESSION['messages'][] = [ 'type' => 'danger', 'text' => 'Erreur lors de l\'enregistrement de l\'application sur ' . $instance . ': ' . $registration['message'] ]; header('Location: index.php'); exit; } } // Stocker le client_secret dans la session pour l'utiliser plus tard $_SESSION['misskey_client_secret'] = $client_secret; // Générer l'URL d'autorisation try { // Générer l'URL avec le client_id obtenu $auth_url = generate_oauth_url($instance, $client_id); // Rediriger vers l'URL d'autorisation header('Location: ' . $auth_url); exit; } catch (Exception $e) { $_SESSION['messages'][] = [ 'type' => 'danger', 'text' => 'Erreur lors de la préparation de l\'authentification: ' . $e->getMessage() ]; header('Location: index.php'); exit; }