PHPackages                             yllumi/wmpanel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. yllumi/wmpanel

ActiveComposer-plugin[Utility &amp; Helpers](/categories/utility)

yllumi/wmpanel
==============

Webman plugin yllumi/wmpanel

1.3.2(2mo ago)069MITPHP

Since Apr 13Pushed 1mo agoCompare

[ Source](https://github.com/yllumi/wmpanel)[ Packagist](https://packagist.org/packages/yllumi/wmpanel)[ RSS](/packages/yllumi-wmpanel/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (5)Dependencies (14)Versions (25)Used By (0)

yllumi/wmpanel
==============

[](#yllumiwmpanel)

Panel administrasi siap pakai untuk framework [Webman](https://www.workerman.net/webman). Menyediakan autentikasi, manajemen pengguna, role &amp; privilege berbasis YAML, dynamic entry CRUD, manajemen menu, pengaturan aplikasi, Redis browser, dan email sender—semua terintegrasi dalam satu package.

**Package ini tidak dilanjutkan. Silakan lihat package baru untuk fitur serupa ini di **
--------------------------------------------------------------------------------------------------------------------------

[](#package-ini-tidak-dilanjutkan-silakan-lihat-package-baru-untuk-fitur-serupa-ini-di-httpsgithubcomyllumisayagi)

Daftar Isi
----------

[](#daftar-isi)

- [Fitur](#fitur)
- [Persyaratan](#persyaratan)
- [Instalasi](#instalasi)
- [Konfigurasi Awal](#konfigurasi-awal)
- [Fitur &amp; Penggunaan](#fitur--penggunaan)
    - [Autentikasi](#autentikasi)
    - [Manajemen User](#manajemen-user)
    - [Manajemen Role](#manajemen-role)
    - [Manajemen Privilege](#manajemen-privilege)
    - [Manajemen Menu Panel](#manajemen-menu-panel)
    - [Pengaturan Aplikasi (Settings)](#pengaturan-aplikasi-settings)
    - [Dynamic Entry CRUD](#dynamic-entry-crud)
    - [Redis Browser](#redis-browser)
    - [Email Sender](#email-sender)
    - [FormBuilder](#formbuilder)
    - [Attribute RequirePrivilege](#attribute-requireprivilege)
- [Perintah CLI (Console Commands)](#perintah-cli-console-commands)
- [Struktur Database](#struktur-database)
- [Lisensi](#lisensi)

---

Fitur
-----

[](#fitur)

FiturDeskripsi**Autentikasi**Login, logout, lupa password, reset password, registrasi (opsional)**Manajemen User**CRUD user dengan filter status &amp; pencarian**Manajemen Role**CRUD role untuk pengelompokan hak akses**Manajemen Privilege**Definisi &amp; pengelolaan privilege berbasis file YAML**Manajemen Menu**Konfigurasi sidebar menu panel secara dinamis via UI**Settings**Pengaturan aplikasi, tema, emailer, dan plugin via YAML + UI**Dynamic Entry CRUD**CRUD generik berbasis schema YAML per plugin**Redis Browser**Melihat, membuat, mengedit, dan menghapus key Redis**Email Sender**Pengiriman email via PHPMailer dengan template OTP bawaan**FormBuilder**Pembuat form dinamis dari array/YAML dengan berbagai tipe field**AuthMiddleware**Proteksi otomatis route `/panel/*` + pengecekan privilege via PHP Attribute---

Persyaratan
-----------

[](#persyaratan)

- PHP &gt;= 8.1
- [Webman Framework](https://www.workerman.net/webman)
- MySQL / MariaDB
- Redis (opsional, untuk fitur Redis Browser &amp; cache)
- Composer

---

Instalasi
---------

[](#instalasi)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require yllumi/wmpanel
```

### 2. Jalankan Perintah Install

[](#2-jalankan-perintah-install)

Perintah berikut akan menjalankan migrasi database, seeder awal, dan mempublikasikan file konfigurasi ke project:

```
php webman wmpanel:install
```

Proses ini akan:

- Membuat tabel-tabel yang dibutuhkan (`mein_users`, `mein_roles`, `mein_privileges`, `mein_settings`, dll.)
- Menyalin file konfigurasi ke `config/plugin/panel/`
- Menyalin file menu &amp; privilege ke `config/plugin/panel/`

### 3. Buat User Admin Pertama

[](#3-buat-user-admin-pertama)

```
php webman wmpanel:user:create
```

Ikuti prompt interaktif untuk mengisi nama, username, email, dan password. Anda juga bisa memberikan argumen langsung:

```
php webman wmpanel:user:create "Admin" "admin" "admin@example.com" "password123" --role=1
```

### 4. Akses Panel

[](#4-akses-panel)

Buka browser dan navigasi ke:

```
http://localhost:8787/panel

```

---

Konfigurasi Awal
----------------

[](#konfigurasi-awal)

File konfigurasi utama setelah instalasi berada di `config/plugin/panel/`:

```
config/plugin/panel/
├── menu.yml        # Konfigurasi menu sidebar
├── privileges.yml  # Definisi privilege sistem

```

Konfigurasi aplikasi dasar ada di `config/plugin/panel/app.php`:

```
return [
    'enable' => true,
    'debug'  => true,
    'site_title' => 'HeroicAdmin',
    'enable_registration' => false, // Aktifkan melalui env: app.enable_registration=true
];
```

Untuk mengaktifkan registrasi pengguna, tambahkan pada file `.env`:

```
app.enable_registration=true
```

---

Fitur &amp; Penggunaan
----------------------

[](#fitur--penggunaan)

### Autentikasi

[](#autentikasi)

Panel secara otomatis memproteksi semua route `/panel/*` melalui `AuthMiddleware`. Pengguna yang belum login akan diarahkan ke halaman login.

**Route Autentikasi:**

MethodURLFungsiGET`/panel/auth/login`Halaman loginPOST`/panel/auth/login`Proses loginGET`/panel/auth/logout`LogoutGET`/panel/auth/forgot`Halaman lupa passwordPOST`/panel/auth/forgot`Kirim link reset passwordGET`/panel/auth/reset`Halaman reset passwordPOST`/panel/auth/reset`Proses reset passwordPOST`/panel/auth/register`Proses registrasi (jika diaktifkan)**Alur Login:**

1. User memasukkan username/email dan password.
2. Password diverifikasi menggunakan Phpass (bcrypt-compatible).
3. Data user disimpan ke session setelah berhasil login.

---

### Manajemen User

[](#manajemen-user)

Kelola pengguna sistem melalui antarmuka CRUD lengkap dengan filter dan pencarian.

**Route:**

MethodURLFungsiGET`/panel/user`Daftar userGET`/panel/user/data`Data JSON (pagination + search)GET`/panel/user/create`Form tambah userPOST`/panel/user/store`Simpan user baruGET`/panel/user/edit`Form edit userPOST`/panel/user/update`Update userPOST`/panel/user/delete`Hapus user**Fitur:**

- Filter berdasarkan status (active, inactive, all)
- Pencarian berdasarkan nama, username, email, atau nomor telepon
- Assign role kepada user
- Proteksi aksi dengan privilege (`user.read`, `user.write`, `user.delete`)

---

### Manajemen Role

[](#manajemen-role)

Kelola role/grup pengguna yang dapat ditetapkan pada setiap user.

**Route:**

MethodURLFungsiGET`/panel/role`Daftar roleGET`/panel/role/data`Data JSONGET`/panel/role/create`Form tambah rolePOST`/panel/role/store`Simpan role baruGET`/panel/role/edit`Form edit rolePOST`/panel/role/update`Update rolePOST`/panel/role/delete`Hapus role**Fitur:**

- Setiap role dapat memiliki kumpulan privilege
- Diproteksi dengan privilege `role.read`, `role.write`, `role.delete`, `role.set_privilege`

---

### Manajemen Privilege

[](#manajemen-privilege)

Privilege didefinisikan dalam file YAML dan dapat dikelola melalui UI panel.

**File:** `config/plugin/panel/privileges.yml`

```
dashboard:
  - { read: 'Read dashboard data' }
  - { set_widget: 'Customize dashboard widgets' }

user:
  - { read: 'Read user data' }
  - { write: 'Write modification of user data' }
  - { delete: 'Delete user records' }
  - { set_role: 'Assign roles to users' }

role:
  - { read: 'Read role data' }
  - { write: 'Write modification of role data' }
  - { delete: 'Delete role records' }
  - { set_privilege: 'Assign privileges to roles' }
```

Format privilege menggunakan notasi `feature.action` (contoh: `user.read`, `role.write`).

**Route:**

MethodURLFungsiGET`/panel/privilege`Daftar privilegeGET`/panel/privilege/data`Data JSONGET`/panel/privilege/features`Daftar fiturGET`/panel/privilege/create`Form tambah privilegePOST`/panel/privilege/store`Simpan privilegeGET`/panel/privilege/edit`Form edit privilegePOST`/panel/privilege/update`Update privilegePOST`/panel/privilege/delete`Hapus privilege**Pengecekan privilege di kode:**

```
// Cek apakah user boleh melakukan aksi
if (isAllow('user.write')) {
    // user memiliki izin
}
```

---

### Manajemen Menu Panel

[](#manajemen-menu-panel)

Konfigurasi sidebar menu panel secara dinamis melalui UI tanpa perlu edit file secara manual.

**File:** `config/plugin/panel/menu.yml`

```
- id: menu_69d223a8a20be8
  label: Dashboard
  module: dashboard
  icon: 'bi bi-grid-fill'
  url: /panel
  privilege: dashboard.read
  children: {}

- id: menu_abc123
  label: Pengguna
  module: user
  icon: 'bi bi-lock-fill'
  url: '#'
  privilege: user.read
  children:
    - id: menu_abc124
      label: Users
      url: /panel/user
      privilege: user.read
    - id: menu_abc125
      label: Roles
      url: /panel/role
      privilege: role.read
```

**Route:**

MethodURLFungsiGET`/panel/panelmenu`Kelola menuPOST`/panel/panelmenu/store`Tambah menu baruGET`/panel/panelmenu/edit`Edit menuPOST`/panel/panelmenu/update`Update menuPOST`/panel/panelmenu/delete`Hapus menuPOST`/panel/panelmenu/reorder`Ubah urutan menu**Mendapatkan daftar menu di view:**

```
$menus = sidebarMenus(); // global helper function
```

---

### Pengaturan Aplikasi (Settings)

[](#pengaturan-aplikasi-settings)

Pengaturan dikonfigurasi via file YAML dan dikelola melalui antarmuka UI panel. Setiap group setting didefinisikan dalam file `.yml` terpisah di `src/settings/`.

**Group Setting Bawaan:**

SlugFileDeskripsi`theme``theme.yml`Tema frontend &amp; admin, warna, background`emailer``emailer.yml`Konfigurasi SMTP untuk pengiriman email`app``app.yml`Logo, warna tema, navbar, bottom menu`plugin``plugin.yml`Modul aktif dan entry yang dinonaktifkan**Contoh `theme.yml`:**

```
name: Theme
slug: theme
menu_position: 20
setting:
  main_theme:
    field: main_theme
    label: Frontend Theme
    form: select
    default: mobilekit
    options:
      mobilekit: mobilekit
      magazine: magazine
  admin_bgcolor:
    field: admin_bgcolor
    label: Admin Background Color
    form: color
    default: "#52BCD3"
```

**Tipe form yang didukung:** `text`, `number`, `email`, `color`, `image`, `select`, `switcher`, `code`, `mask`

**Route:**

MethodURLFungsiGET`/panel/setting`Halaman pengaturanGET`/panel/setting/data`Data JSON pengaturanPOST`/panel/setting/save`Simpan pengaturan---

### Dynamic Entry CRUD

[](#dynamic-entry-crud)

Fitur paling fleksibel dari wmpanel—memungkinkan pembuatan CRUD lengkap hanya dengan mendefinisikan schema dalam file YAML tanpa menulis controller baru.

**Cara Membuat Entry Baru:**

1. Buat file schema di `plugin/{nama_plugin}/app/entry/{slug}.yml`:

```
name: Mahasiswa
table: mahasiswas
fields:
  - field: name
    label: Nama Lengkap
    type: text
    searchable: true
    table_display: true
  - field: nim
    label: NIM
    type: text
    searchable: true
    table_display: true
  - field: jurusan_id
    label: Jurusan
    type: select
    table_display: true
    relation:
      table: jurusans
      value: id
      display: nama_jurusan
  - field: tanggal_lahir
    label: Tanggal Lahir
    type: date
  - field: foto
    label: Foto
    type: image
```

2. Akses CRUD melalui URL:

```
GET  /panel/entry/mahasiswa          → Daftar
GET  /panel/entry/mahasiswa/data     → Data JSON
GET  /panel/entry/mahasiswa/create   → Form tambah
POST /panel/entry/mahasiswa/store    → Simpan
GET  /panel/entry/mahasiswa/edit     → Form edit
POST /panel/entry/mahasiswa/update   → Update
POST /panel/entry/mahasiswa/delete   → Hapus

```

**Tipe Field yang Didukung:**

- `text`, `number`, `email`, `textarea`
- `select` (dengan relasi tabel)
- `date`, `image`, `color`
- `checkbox`, `radio`, `switcher`
- `mask`, `code`

**Fitur Relasi Otomatis:**

Ketika field memiliki `relation`, sistem akan otomatis melakukan LEFT JOIN saat menampilkan data:

```
- field: role_id
  label: Role
  type: select
  relation:
    table: mein_roles
    value: id
    display: role_name
```

---

### Redis Browser

[](#redis-browser)

Antarmuka web untuk mengelola Redis key langsung dari panel admin.

**Route:**

MethodURLFungsiGET`/panel/redis`Halaman Redis browserGET`/panel/redis/keys?pattern=*`Daftar key dengan filter patternGET`/panel/redis/get?key=xxx`Ambil nilai &amp; TTL keyPOST`/panel/redis/set`Buat/update keyPOST`/panel/redis/delete`Hapus keyPOST`/panel/redis/rename`Rename keyPOST`/panel/redis/flush`Flush semua key**Tipe data Redis yang didukung:** `string`, `list`, `set`, `zset`, `hash`

**Contoh penggunaan API (JSON body untuk set key):**

```
{
  "key": "app:config",
  "type": "string",
  "value": "hello world",
  "ttl": 3600
}
```

---

### Email Sender

[](#email-sender)

Library untuk mengirim email menggunakan PHPMailer dengan konfigurasi SMTP dari panel settings.

**Penggunaan Dasar:**

```
use Yllumi\Wmpanel\libraries\EmailSender;

$sender = new EmailSender();

// Kirim ke satu penerima
$sender->sendEmail('user@example.com', 'Subject', 'Isi email HTML');

// Kirim ke beberapa penerima
$sender->sendEmail(
    ['user1@example.com' => 'User Satu', 'user2@example.com' => 'User Dua'],
    'Subject',
    'Isi email HTML'
);
```

**Template OTP Bawaan:**

```
use Yllumi\Wmpanel\libraries\EmailSender;

$html = EmailSender::otpTemplate('Nama User', '123456', 'Nama Aplikasi');

$sender = new EmailSender();
$sender->sendEmail('user@example.com', 'Kode OTP Anda', $html);
```

**Konfigurasi SMTP** diambil dari environment variable atau settings panel:

```
mail.smtp_host=smtp.gmail.com
mail.smtp_port=465
mail.smtp_username=user@gmail.com
mail.smtp_password=app_password
mail.from_address=no-reply@example.com
mail.from_name=Nama Aplikasi
```

---

### FormBuilder

[](#formbuilder)

Library untuk membuat form HTML dinamis dari array atau schema YAML.

**Penggunaan Basic:**

```
use Yllumi\Wmpanel\libraries\FormBuilder\FormBuilder;

$form = new FormBuilder();
$html = $form->schemaArray([
    ['name' => 'nama', 'type' => 'text', 'label' => 'Nama Lengkap'],
    ['name' => 'email', 'type' => 'email', 'label' => 'Email'],
    ['name' => 'role', 'type' => 'select', 'label' => 'Role', 'options' => [
        1 => 'Admin',
        2 => 'User',
    ]],
])->render($currentValues);
```

**Tipe Field yang Tersedia:**

TypeDeskripsi`text`Input teks biasa`number`Input angka`email`Input email`textarea`Input teks panjang`select`Dropdown pilihan`radio`Pilihan radio button`checkbox`Checkbox`switcher`Toggle switch`date`Date picker`color`Color picker`image`Upload gambar`mask`Input dengan mask (misal: password, telepon)`code`Code editor (mendukung mode CSS, YAML, dll.)---

### Attribute RequirePrivilege

[](#attribute-requireprivilege)

PHP 8 Attribute untuk deklaratif meng-guard method controller berdasarkan privilege. `AuthMiddleware` akan secara otomatis membaca attribute ini.

**Penggunaan:**

```
use Yllumi\Wmpanel\attributes\RequirePrivilege;

class ProductController extends AdminController
{
    // Guard dengan satu privilege
    #[RequirePrivilege('product.read')]
    public function index(Request $request) { ... }

    // Guard dengan beberapa privilege (semua harus terpenuhi)
    #[RequirePrivilege('product.write')]
    #[RequirePrivilege('inventory.manage')]
    public function store(Request $request) { ... }

    // Dengan whitelist user_id yang selalu diloloskan
    #[RequirePrivilege('report.export', whitelistIds: [1, 2])]
    public function export(Request $request) { ... }
}
```

Jika user tidak memiliki privilege yang dibutuhkan, akan dikembalikan halaman 404.

---

Perintah CLI (Console Commands)
-------------------------------

[](#perintah-cli-console-commands)

PerintahDeskripsi`php webman wmpanel:install`Instalasi plugin: jalankan migrasi &amp; publish file konfigurasi`php webman wmpanel:user:create`Buat user baru secara interaktif`php webman wmpanel:update`Update plugin ke versi terbaru`php webman make:migration NamaMigrasi`Buat file migrasi baru menggunakan Phinx`php webman migrate`Jalankan semua migrasi yang belum dijalankan`php webman migrate:rollback`Rollback migrasi terakhir`php webman db:seed`Jalankan database seeder**Contoh membuat user via argumen:**

```
php webman wmpanel:user:create "Budi Santoso" "budi" "budi@example.com" "secret123" \
  --role=1 \
  --phone="081234567890" \
  --status=active
```

**Contoh membuat migrasi:**

```
php webman make:migration CreateProductsTable
# File migrasi akan dibuat di database/migrations/
```

---

Struktur Database
-----------------

[](#struktur-database)

Tabel utama yang dibuat oleh wmpanel:

TabelDeskripsi`mein_users`Data pengguna (id, name, username, email, password, phone, status, role\_id)`mein_roles`Data role (id, role\_name, description)`mein_privileges`Mapping privilege per role (role\_id, feature, privilege)`mein_settings`Key-value store untuk konfigurasi aplikasi (group, field, value)---

Lisensi
-------

[](#lisensi)

MIT License. Lihat file [LICENSE](LICENSE) untuk detail.

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance88

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

24

Last Release

70d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/41c986b90f05292c5ea899027cc9809e14bc6b35cf7341509bed987b06e736ab?d=identicon)[yllumi](/maintainers/yllumi)

---

Top Contributors

[![yllumi](https://avatars.githubusercontent.com/u/404671?v=4)](https://github.com/yllumi "yllumi (28 commits)")

### Embed Badge

![Health badge](/badges/yllumi-wmpanel/health.svg)

```
[![Health](https://phpackages.com/badges/yllumi-wmpanel/health.svg)](https://phpackages.com/packages/yllumi-wmpanel)
```

###  Alternatives

[saithink/saiadmin

webman plugin

28411.6k1](/packages/saithink-saiadmin)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[leantime/leantime

Open source project management system for non-project managers. Simple like Trello, powerful like Jira. Built with neurodiversity in mind.

10.2k4.0k](/packages/leantime-leantime)[lullabot/drainpipe

An automated build tool to allow projects to have a set standardized operations scripts.

43785.5k4](/packages/lullabot-drainpipe)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
