97 lines
2.9 KiB
PHP
97 lines
2.9 KiB
PHP
<?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;
|
|
} |