<?php

require_once(dirname(__DIR__) . '/init.php');

// Güvenli session başlat
m_secure_session_start();

// Admin kontrolü
if (!m_admin_check()) {
    m_redirect(ADMIN_URL . '/login');
}

// Session güvenlik kontrolü
m_validate_session_security();


// Not: CSRF token üretimi artık init.php içinde merkezi yapılıyor.

if (m_a_g('admin_lang') != '') {
    m_set_session('admin_lang', m_a_g('admin_lang'));
    m_redirect($_SERVER['HTTP_REFERER']);
}
$url = isset($_GET['url']) ? $_GET['url'] : '';
$segments = explode('/', $url);

$action = isset($segments[2]) ? $segments[2] : '';
if ($action != 'preview'){
    require_once('template/header.php');
}
if ($url == '' or $url == '/') {
    require_once('model/dashboard.php');
} else {
$model = isset($segments[1]) ? $segments[1] : '';
// Modül erişim kontrolü (her zaman)
if ($model !== ''){
    // Modül açık mı (bazı sistem sayfaları hariç tutmak isterseniz buraya ekleyin)
    if (!function_exists('module_is_enabled') || !module_is_enabled($model)){
        http_response_code(403);
        header("Location: /admin/hata.php");
        exit();
    }
    // İzin kontrolü (view gerekli)
    if (function_exists('can')){
        if (!can('view', $model)){
            if (function_exists('m_set_session')){
                m_set_session('formSuccess', false);
                m_set_session('error_message', lang('security_violation', [], 'Bu işlem için yetkiniz yok.'));
            }
            $back = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ADMIN_URL;
            header("Location: ".$back);
            exit();
        }
    }
}
    if ($model == 'logout'){
        m_secure_logout();
        m_redirect(ADMIN_URL.'/login');
    }
    if ($model == 'test_session'){
        require_once('test_session.php');
        exit();
    }
    if ($model == 'test_rate_limiting'){
	require_once('test_rate_limiting.php');
	exit();
}

if ($model == 'security_dashboard'){
	require_once('security_dashboard.php');
	exit();
}
    if ($model == 'profile'){
        require_once('model/profile.php');
    } elseif (m_model_check($model)) {
        switch ($model) {
            case $model:
                if ($action == 'lists') {
                    require_once('model/' . $model . '/lists.php');
                } elseif ($action == 'create') {
                    if (function_exists('can') && !can('create', $model)){
                        if (function_exists('m_set_session')){ m_set_session('formSuccess', false); m_set_session('error_message', lang('security_violation', [], 'Bu işlem için yetkiniz yok.')); }
                        $back = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ADMIN_URL; header('Location: '.$back); exit();
                    }
                    require_once('model/' . $model . '/create.php');
                } elseif ($action == 'edit') {
                    if (function_exists('can') && !can('edit', $model)){
                        if (function_exists('m_set_session')){ m_set_session('formSuccess', false); m_set_session('error_message', lang('security_violation', [], 'Bu işlem için yetkiniz yok.')); }
                        $back = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ADMIN_URL; header('Location: '.$back); exit();
                    }
                    require_once('model/' . $model . '/edit.php');;
                } elseif ($action == 'preview') {
                    require_once('model/' . $model . '/preview.php');;
                    exit();
                }elseif ($action == 'delete') {
                    if (function_exists('can') && !can('delete', $model)){
                        if (function_exists('m_set_session')){ m_set_session('formSuccess', false); m_set_session('error_message', lang('security_violation', [], 'Bu işlem için yetkiniz yok.')); }
                        $back = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ADMIN_URL; header('Location: '.$back); exit();
                    }
                    if ($model == 'languages' or $model == 'menu' or $model == 'admins'){
                        require_once('model/' . $model . '/delete.php');;

                    }else{
                        require_once('controller/delete.php');;
                    }
                }elseif ($action == 'activate' && $model == 'themes') {
                    require_once('controller/theme_activate.php');
                }elseif ($action == 'preview' && $model == 'themes') {
                    require_once('model/' . $model . '/preview.php');

                }  else {
                    http_response_code(404);
                    header("Location: /admin/hata.php");
                    exit();
                }
                break;

            default:
                http_response_code(404);
                header("Location: /admin/hata.php");
                break;
        }
    } elseif ($model != 'profile') {
        http_response_code(404);
        header("Location: /admin/hata.php");
        exit();
    }
}

require_once('template/footer.php');


