['Parameter bank', 'sliders', 'GWM, kas, PUAB, suku bunga kredit, biaya, pajak, dan konvensi hari bunga.'],
'produk' => ['Rate tabungan & giro', 'wallet', 'Rate bunga SIMANJA, SIMPEDA, dan Giro Umum per kelompok nominal sesuai ALCO.'],
'deposito' => ['Rate deposito', 'grid', 'Rate deposito pembanding per kelompok nominal dan jangka waktu sesuai ALCO.'],
'cashback' => ['Porsi cashback', 'pie', 'Pembagian spread antara nasabah dan bank, serta jangka waktu yang mendapat cashback.'],
'pengguna' => ['Pengguna admin', 'users', 'Kelola akun yang dapat mengubah parameter.'],
'riwayat' => ['Riwayat perubahan', 'history', 'Siapa mengubah apa dan kapan.'],
];
$tab = input_str($_GET['tab'] ?? 'parameter');
if (!isset($tabs[$tab])) {
$tab = 'parameter';
}
// A reset or initial password must be replaced before anything else.
if ($me['must_change']) {
$tab = 'pengguna';
}
$failed = null; // ['errors' => [...], 'draft' => [...]] when a POST did not validate
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
csrf_check();
$action = input_str($_POST['action'] ?? '');
$handlers = [
'save_settings' => fn() => action_save_settings(),
'save_products' => fn() => action_save_products(),
'save_deposito' => fn() => action_save_deposito(),
'save_cashback' => fn() => action_save_cashback(),
'reset_defaults' => fn() => action_reset_defaults(),
'user_create' => fn() => action_user_create($me),
'user_toggle' => fn() => action_user_toggle($me),
'user_password' => fn() => action_user_password($me),
'user_role' => fn() => action_user_role($me),
'user_reset_otp' => fn() => action_user_reset_otp($me),
'own_password' => fn() => action_own_password($me),
];
if ($me['must_change'] && $action !== 'own_password') {
$action = '';
}
if (isset($handlers[$action])) {
$failed = $handlers[$action]();
}
}
$params = load_params();
$flash = flash();
$errors = $failed['errors'] ?? [];
$draft = $failed['draft'] ?? null;
$hasPreview = in_array($tab, ['parameter', 'produk', 'deposito', 'cashback'], true);
function field_error(array $errors, string $key): string
{
return isset($errors[$key]) ? '
' . icon('alert') . '' . e($errors[$key]) . '
' : '';
}
?>
= e($tabs[$tab][0]) ?> ยท Admin SERUBI
= theme_boot_script() ?>
Lewati ke konten
= e($tabs[$tab][0]) ?>
= e($tabs[$tab][2]) ?>
Terakhir diubah = e(fmt_datetime($params['updatedAt'])) ?>= $params['updatedBy'] ? ' oleh @' . e($params['updatedBy']) : '' ?>
= icon('key') ?>Password akun Anda baru dibuat atau di-reset. Ganti password di bawah sebelum memakai menu lain.
= icon($flash['type'] === 'ok' ? 'check' : 'info') ?>= e($flash['message']) ?>
= icon('alert') ?>Perubahan belum disimpan. Periksa isian yang ditandai.
= icon('info') ?>Ada perubahan yang belum disimpan.