95 lines
2.9 KiB
PHP
95 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* FavMasToKey - Callback OAuth pour 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'état est valide (protection CSRF)
|
|
if (!isset($_GET['state']) || !isset($_SESSION['oauth_state']) || $_GET['state'] !== $_SESSION['oauth_state']) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Paramètre d\'état invalide. Veuillez réessayer.'
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
// Vérifier si le code d'autorisation est présent
|
|
if (!isset($_GET['code']) || empty($_GET['code'])) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Aucun code d\'autorisation reçu. L\'authentification a échoué ou a été annulée.'
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
// Récupérer l'instance Misskey depuis la session
|
|
if (!isset($_SESSION['misskey_instance']) || empty($_SESSION['misskey_instance'])) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Instance Misskey non définie. Veuillez recommencer.'
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
// Récupérer le client_secret depuis la session
|
|
if (!isset($_SESSION['misskey_client_secret']) || empty($_SESSION['misskey_client_secret'])) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Informations d\'application manquantes. Veuillez recommencer.'
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
$instance = $_SESSION['misskey_instance'];
|
|
$code = $_GET['code'];
|
|
$client_secret = $_SESSION['misskey_client_secret'];
|
|
|
|
// Récupérer le client_id depuis les données d'application
|
|
if (!isset($app_data['instances'][$instance]) || !isset($app_data['instances'][$instance]['client_id'])) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Informations d\'application introuvables pour ' . $instance . '. Veuillez recommencer.'
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
$client_id = $app_data['instances'][$instance]['client_id'];
|
|
|
|
// Échanger le code contre un token d'accès
|
|
$exchange_result = exchange_oauth_code($instance, $code, $client_id, $client_secret);
|
|
|
|
if (!$exchange_result['success']) {
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'danger',
|
|
'text' => 'Erreur lors de l\'échange du code d\'autorisation: ' . $exchange_result['message']
|
|
];
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
// Stocker le token dans la session
|
|
$_SESSION['misskey_token'] = $exchange_result['access_token'];
|
|
|
|
// Nettoyer les données temporaires de la session
|
|
unset($_SESSION['oauth_state']);
|
|
unset($_SESSION['misskey_client_secret']);
|
|
|
|
// Ajouter un message de succès
|
|
$_SESSION['messages'][] = [
|
|
'type' => 'success',
|
|
'text' => 'Connecté avec succès à ' . $instance . '.'
|
|
];
|
|
|
|
// Rediriger vers la page de migration (étape 3)
|
|
header('Location: index.php#step3'); |