160 lines
5.0 KiB
PHP
Executable File
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'
|
|
]);
|
|
}
|
|
?>
|