<?php

declare(strict_types=1);

namespace Config;

use CodeIgniter\Config\BaseConfig;

/**
 * Pemetaan fitur admin CI4 ke grup Ion Auth (nama grup, case-insensitive).
 * Selaras `application/modules/admin/config/ci_bootstrap.php` — `page_auth` + useful_links.
 *
 * Daftar kosong = semua admin yang sudah login (filter authadmin) boleh mengakses.
 *
 * Grup `supervisor`: akses seperti HRD pada fitur terdaftar, tetapi data dibatasi ke cabang
 * (`pegawai.kantor` sama dengan kantor pada baris pegawai pemegang token admin).
 *
 * Login `admin_auth_source` = `pegawai` (username/password sama aplikasi mobile, tanpa baris
 * `admin_users` terhubung lewat `id_pegawai` + grup): hanya fitur di
 * {@see self::$pegawaiPanelFeatures}. Bila pegawai punya akun Ion terhubung, login mobile
 * memakai sesi `admin_users` + grup (supervisor, HRD, …) seperti login admin biasa.
 */
class AdminAccess extends BaseConfig
{
    /**
     * Fitur panel web yang boleh untuk login pegawai saja (bukan akun Ion `admin_users`).
     *
     * @var list<string>
     */
    public array $pegawaiPanelFeatures = [
        'dashboard',
        'apk_link',
    ];

    /**
     * Kunci fitur (dipakai `canAccess('...')` dan controller).
     *
     * @var array<string, list<string>>
     */
    public array $features = [
        /** Referensi form pegawai (jabatan, unit, dll.) — semua sesi admin panel */
        'references'  => [],
        'dashboard'   => [],
        'presensi'    => [],
        /** Management jadwal (master jam kerja) — hanya webmaster & HRD */
        'presensi_jadwal' => ['webmaster', 'hrd'],
        /** Hari libur perusahaan — hanya webmaster & HRD */
        'presensi_libur'  => ['webmaster', 'hrd'],
        /** Master kantor, unit, jabatan, golongan, berita — hanya webmaster & HRD */
        'perusahaan'  => ['webmaster', 'hrd'],
        /** Tambah pegawai (form create + API create) — hanya webmaster & HRD */
        'pegawai_tambah' => ['webmaster', 'hrd'],
        'pegawai'     => ['webmaster', 'hrd', 'supervisor'],
        'cuti'        => ['webmaster', 'hrd', 'supervisor'],
        'laporan'     => ['webmaster', 'hrd', 'supervisor'],
        'panel'       => ['webmaster'],
        'utilitas'    => ['webmaster'],
        /** Link APK sidebar — sama `useful_links` CI3 */
        'apk_link'    => [
            'webmaster',
            'penyelenggara',
            'operator_cabang',
            'operator_ranting',
            'operator_sekolah',
            'admin_soal',
            'operator_soal',
        ],
    ];
}
