Files
wevads-platform/scripts/api_permissions.php
2026-02-26 04:53:11 +01:00

160 lines
5.0 KiB
PHP
Executable File

<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
session_start();
// Simuler des rôles utilisateurs
$roles = [
'admin' => [
'can_manage_servers' => true,
'can_manage_domains' => true,
'can_manage_users' => true,
'can_view_reports' => true,
'can_manage_settings' => true
],
'manager' => [
'can_manage_servers' => true,
'can_manage_domains' => true,
'can_manage_users' => false,
'can_view_reports' => true,
'can_manage_settings' => false
],
'user' => [
'can_manage_servers' => false,
'can_manage_domains' => false,
'can_manage_users' => false,
'can_view_reports' => true,
'can_manage_settings' => false
]
];
$action = $_GET['action'] ?? 'check';
switch ($action) {
case 'check':
$user_role = $_SESSION['user_role'] ?? 'user';
$page = $_GET['page'] ?? '';
if (isset($roles[$user_role])) {
$permissions = $roles[$user_role];
// Vérifier l'accès à une page spécifique
$page_access = [
'mta-servers' => $permissions['can_manage_servers'],
'domains' => $permissions['can_manage_domains'],
'users' => $permissions['can_manage_users'],
'reports' => $permissions['can_view_reports'],
'settings' => $permissions['can_manage_settings']
];
echo json_encode([
'status' => 'success',
'user_role' => $user_role,
'permissions' => $permissions,
'page_access' => $page_access,
'has_access' => isset($page_access[$page]) ? $page_access[$page] : true
]);
} else {
echo json_encode([
'status' => 'error',
'message' => 'Invalid user role'
]);
}
break;
case 'menu':
$user_role = $_SESSION['user_role'] ?? 'user';
// Menu basé sur les permissions
$menu_items = [
[
'title' => 'Dashboard',
'url' => '/',
'icon' => 'dashboard',
'visible' => true
],
[
'title' => 'Servers Management',
'url' => '/mta-servers.html',
'icon' => 'server',
'visible' => in_array($user_role, ['admin', 'manager']),
'submenu' => [
['title' => 'All Servers', 'url' => '/mta-servers.html'],
['title' => 'Create Server', 'url' => '/mta-create.html'],
['title' => 'VMTA Manager', 'url' => '/vmta-manager.html']
]
],
[
'title' => 'Domains',
'url' => '/domains.html',
'icon' => 'domain',
'visible' => in_array($user_role, ['admin', 'manager'])
],
[
'title' => 'Campaigns',
'url' => '/campaigns.html',
'icon' => 'campaign',
'visible' => true
],
[
'title' => 'Reports',
'url' => '/reports.html',
'icon' => 'analytics',
'visible' => true
],
[
'title' => 'Tools',
'url' => '#',
'icon' => 'tools',
'visible' => true,
'submenu' => [
['title' => 'DNS Checker', 'url' => '/tools/dns-checker.html'],
['title' => 'Email Verifier', 'url' => '/tools/email-verifier.html'],
['title' => 'Spam Test', 'url' => '/tools/spam-test.html'],
['title' => 'Blacklist Check', 'url' => '/tools/blacklist-check.html']
]
],
[
'title' => 'Settings',
'url' => '/settings.html',
'icon' => 'settings',
'visible' => $user_role === 'admin'
]
];
// Filtrer les items visibles
$visible_menu = array_filter($menu_items, fn($item) => $item['visible']);
echo json_encode([
'status' => 'success',
'user_role' => $user_role,
'menu_items' => array_values($visible_menu)
]);
break;
case 'set_role':
$role = $_GET['role'] ?? 'user';
if (in_array($role, ['admin', 'manager', 'user'])) {
$_SESSION['user_role'] = $role;
echo json_encode([
'status' => 'success',
'message' => 'Role updated to ' . $role
]);
} else {
echo json_encode([
'status' => 'error',
'message' => 'Invalid role'
]);
}
break;
default:
echo json_encode([
'status' => 'error',
'message' => 'Action not recognized'
]);
}
?>