Lectures/admin/api/story-access.php

59 lines
1.6 KiB
PHP

<?php
require_once '../../includes/config.php';
require_once '../../includes/auth.php';
require_once '../../includes/stories.php';
// Vérification de l'authentification
if (!Auth::check()) {
http_response_code(401);
exit(json_encode(['success' => false, 'error' => 'Non autorisé']));
}
// Seul un administrateur peut modifier les autorisations d'accès
if (!Auth::isAdmin() && !Auth::hasAdminRole()) {
http_response_code(403);
exit(json_encode(['success' => false, 'error' => 'Accès refusé']));
}
// Vérification de la méthode HTTP
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit(json_encode(['success' => false, 'error' => 'Méthode non autorisée']));
}
// Récupération et validation des données
$input = json_decode(file_get_contents('php://input'), true);
$storyId = $input['storyId'] ?? null;
$access = $input['access'] ?? [];
if (!$storyId) {
http_response_code(400);
exit(json_encode(['success' => false, 'error' => 'ID du roman manquant']));
}
try {
// Récupération du roman
$story = Stories::get($storyId);
if (!$story) {
throw new Exception('Roman non trouvé');
}
// Mise à jour de la liste d'accès
$story['access'] = $access;
// Sauvegarde des modifications
Stories::save($story);
// Réponse de succès
echo json_encode([
'success' => true,
'message' => 'Autorisations d\'accès mises à jour avec succès'
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => 'Erreur : ' . $e->getMessage()
]);
}