<?php
// auth_helper.php

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

/**
 * Cek apakah user sudah login.
 * Jika belum, redirect ke halaman login.
 */
function requireLogin()
{
    if (!isset($_SESSION['user_id'])) {
        header('Location: login.php');
        exit;
    }
}

/**
 * Cek apakah user memiliki salah satu role yang diizinkan.
 * @param array|string $allowed_roles Role atau array role yang diizinkan
 * @return bool True jika diizinkan
 */
function hasRole($allowed_roles)
{
    if (!isset($_SESSION['role'])) {
        return false;
    }

    if (is_string($allowed_roles)) {
        return $_SESSION['role'] === $allowed_roles;
    }

    if (is_array($allowed_roles)) {
        return in_array($_SESSION['role'], $allowed_roles);
    }

    return false;
}

/**
 * Pastikan user memiliki role tertentu. Jika tidak, redirect atau stop.
 */
function requireRole($allowed_roles)
{
    requireLogin();
    if (!hasRole($allowed_roles)) {
        // Bisa redirect ke dashboard atau tampilkan error 403
        echo "<div style='padding:20px; text-align:center; color:red;'>
                <h2>Akses Ditolak!</h2>
                <p>Anda tidak memiliki izin untuk mengakses halaman ini.</p>
                <a href='dashboard.php'>Kembali ke Dashboard</a>
              </div>";
        exit;
    }
}

/**
 * Helper untuk menampilkan nama role yang lebih user-friendly
 */
function getRoleName($role)
{
    switch ($role) {
        case 'admin_paroki':
            return 'Admin Paroki';
        case 'ketua_wilayah':
            return 'Ketua Wilayah';
        case 'ketua_kub':
            return 'Ketua KUB';
        case 'anggota_kub':
            return 'Anggota KUB';
        default:
            return ucfirst($role);
    }
}
?>
