Files
bij/app/Config/AdminAccess.php
2026-04-21 05:59:39 +07:00

70 lines
2.5 KiB
PHP

<?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',
],
];
}