3
Instalasi dan Setup
Badaso dipasang sebagai paket Composer di dalam proyek Laravel. composer.json menandai paket ini bertipe library dan mendaftarkan Uasoft\Badaso\Providers\BadasoServiceProvider pada extra.laravel.providers, sehingga Laravel memuat provider itu otomatis (composer.json:72-781). Dependensi runtime yang ikut terpasang mencakup laravel/sanctum, darkaonline/l5-swagger, spatie/laravel-backup, spatie/laravel-activitylog, unisharp/laravel-filemanager, dan laravel/octane (composer.json:26-512).
Setelah paket terpasang, penyiapan dikerjakan oleh satu perintah, badaso:setup. Perintah itu didaftarkan bersama lima perintah lain di registerConsoleCommands (src/Providers/BadasoServiceProvider.php:118-1263). Sebelum perintah dijalankan, BADASO_LICENSE_KEY harus sudah diisi di .env (CONTRIBUTING.md:41-424), karena config membacanya sebagai badaso.license_key (src/Config/badaso.php:385).
Urutan kerja badaso:setup
Signature perintah adalah badaso:setup {--force=false} dengan deskripsi Setup Badaso (src/Commands/BadasoSetup.php:19-336). Metode handle memanggil 14 langkah secara berurutan, dan setiap langkah berdiri sendiri tanpa pembatalan bila langkah lain gagal (src/Commands/BadasoSetup.php:53-717).
sequenceDiagram
autonumber
participant CLI as Artisan CLI
participant Setup as BadasoSetup
participant Env as .env
participant Pkg as package.json
participant Vite as vite.config.js
participant Publish as vendor:publish
participant Auth as config/auth.php
CLI->>Setup: badaso:setup {--force=false}
Setup->>Env: addingBadasoEnv
Setup->>Pkg: updatePackageJson
Setup->>Vite: updateVite
Setup->>Publish: publishBadasoProvider tag Badaso
Setup->>Publish: publishLaravelBackupProvider
Setup->>Publish: publishLaravelActivityLogProvider tag config
Setup->>Publish: publishLaravelFileManager tag lfm_public
Setup->>Publish: publishLaravelAnalytics
Setup->>Publish: publicFileFirebaseServiceWorker
Setup->>Auth: addingBadasoAuthConfig
Setup->>Publish: generateSwagger l5-swagger:generate
Setup->>Vite: addPluginsLaravelInputVite
Setup->>Vite: addPluginsVueVite
Setup->>Vite: addResolveConfigVueVite
%% fig: Siklus satu pemanggilan badaso:setup
%% desc: Perintah badaso:setup menulis .env, package.json, dan vite.config.js, memublikasikan config lewat vendor:publish, lalu mengubah config/auth.php.| # | Metode di handle | Yang diubah | Rujukan |
|---|---|---|---|
| 1 | addingBadasoEnv | menambah kunci .env yang belum ada | src/Commands/BadasoSetup.php:386-4228 |
| 2 | updatePackageJson | menyuntik dependency ke package.json, lalu mencetak package.json updated | src/Commands/BadasoSetup.php:82-1409 |
| 3 | updateVite | menambahkan blok import di akhir vite.config.js | src/Commands/BadasoSetup.php:152-17010 |
| 4 | publishBadasoProvider | vendor:publish --tag=Badaso | src/Commands/BadasoSetup.php:255-26511 |
| 5 | publishLaravelBackupProvider | --provider=Spatie\Backup\BackupServiceProvider | src/Commands/BadasoSetup.php:267-27912 |
| 6 | publishLaravelActivityLogProvider | --provider=Spatie\Activitylog\ActivitylogServiceProvider --tag=config | src/Commands/BadasoSetup.php:281-29313 |
| 7 | publishLaravelFileManager | vendor:publish --tag=lfm_public | src/Commands/BadasoSetup.php:295-30414 |
| 8 | publishLaravelAnalytics | --provider=Spatie\Analytics\AnalyticsServiceProvider | src/Commands/BadasoSetup.php:424-43515 |
| 9 | publicFileFirebaseServiceWorker | menulis ulang public/firebase-messaging-sw.js | src/Commands/BadasoSetup.php:306-30916 |
| 10 | addingBadasoAuthConfig | menetapkan providers.users ke model User Badaso di config/auth.php | src/Commands/BadasoSetup.php:311-33217 |
| 11 | generateSwagger | l5-swagger:generate di dalam try/catch | src/Commands/BadasoSetup.php:73-8018 |
| 12 | addPluginsLaravelInputVite | menyisipkan input Badaso ke array plugins | src/Commands/BadasoSetup.php:172-19519 |
| 13 | addPluginsVueVite | menyisipkan vue(), viteStaticCopy, dan EnvironmentPlugin | src/Commands/BadasoSetup.php:197-22520 |
| 14 | addResolveConfigVueVite | menyisipkan blok resolve.alias | src/Commands/BadasoSetup.php:227-25321 |
Langkah 9 menghapus public/firebase-messaging-sw.js lebih dulu bila berkas itu sudah ada, lalu menulis versi baru (src/Helpers/Firebase/FirebasePublishFile.php:107-11622).
⚠️ Opsi
--force=falsememberi nilai default string'false', sedangkan nilainullmuncul ketika opsi diberikan tanpa nilai; keduanya diuji pada satu ekspresi yang menghasilkan$this->force(src/Commands/BadasoSetup.php:5523). Nilai itu diteruskan kevendor:publishsebagai--force(src/Commands/BadasoSetup.php:255-26511), sehingga config yang sudah disunting dapat tertimpa.
Kunci .env yang ditambahkan
addingBadasoEnv membaca base_path('.env'), melewati baris komentar dan baris kosong, lalu menambahkan pasangan kunci-nilai yang belum ditemukan (src/Commands/BadasoSetup.php:396-41624). Daftar kunci beserta nilai awalnya berasal dari envListUpload (src/Commands/BadasoSetup.php:334-38425).
| Kunci | Nilai awal | Rujukan |
|---|---|---|
BADASO_AUTH_TOKEN_LIFETIME | kosong | src/Commands/BadasoSetup.php:33726 |
VITE_BADASO_MAINTENANCE | false | src/Commands/BadasoSetup.php:33927 |
VITE_DEFAULT_MENU | general | src/Commands/BadasoSetup.php:34128 |
VITE_BADASO_MENU | ${VITE_DEFAULT_MENU} | src/Commands/BadasoSetup.php:34229 |
VITE_ADMIN_PANEL_ROUTE_PREFIX | badaso-dashboard | src/Commands/BadasoSetup.php:34330 |
VITE_BADASO_SECRET_LOGIN_PREFIX | badaso-secret-login | src/Commands/BadasoSetup.php:34431 |
VITE_API_ROUTE_PREFIX | badaso-api | src/Commands/BadasoSetup.php:34532 |
VITE_LOG_VIEWER_ROUTE | "log-viewer" | src/Commands/BadasoSetup.php:34633 |
FILESYSTEM_DRIVER | public | src/Commands/BadasoSetup.php:35634 |
VITE_API_DOCUMENTATION_ANNOTATION_ROUTE | api-annotation | src/Commands/BadasoSetup.php:37435 |
VITE_API_DOCUMENTATION_ROUTE | api-docs | src/Commands/BadasoSetup.php:37536 |
BADASO_TABLE_PREFIX | badaso_ | src/Commands/BadasoSetup.php:37637 |
OCTANE_SERVER | swoole | src/Commands/BadasoSetup.php:37738 |
REDIS_CLIENT | predis | src/Commands/BadasoSetup.php:37839 |
Pencocokan kunci memakai strstr($val_env_file, $key_add_env), jadi kunci yang hanya muncul sebagai potongan baris lain juga dianggap sudah ada dan tidak ditulis ulang (src/Commands/BadasoSetup.php:401-40540).
Langkah .env di CONTRIBUTING masih memakai prefiks MIX_, misalnya MIX_DEFAULT_MENU dan MIX_ADMIN_PANEL_ROUTE_PREFIX (CONTRIBUTING.md:104-12941), sedangkan envListUpload menulis kunci VITE_* dan config membacanya kembali lewat env('VITE_ADMIN_PANEL_ROUTE_PREFIX', 'badaso-dashboard') (src/Config/badaso.php:33-3542). Kunci yang berlaku pada kode ini adalah kunci VITE_*.
Konfigurasi Vite
Empat langkah menyentuh vite.config.js. Setiap fungsi dijaga oleh checkExist, yang hanya mengembalikan true bila berkas ada dan belum memuat penanda tertentu (src/Commands/BadasoSetup.php:142-14543).
| Penanda | Fungsi | Sisipan | Rujukan |
|---|---|---|---|
Badaso | updateVite | import viteStaticCopy, @vitejs/plugin-vue2, vite-plugin-environment | src/Commands/BadasoSetup.php:152-17010 |
Badaso Input | addPluginsLaravelInputVite | entri vendor/badaso/core/src/resources/badaso/app.js dan vendor/badaso/core/src/resources/badaso/assets/scss/style.scss | src/Commands/BadasoSetup.php:172-19519 |
vueScript | addPluginsVueVite | vue(), viteStaticCopy({ targets: [...] }), EnvironmentPlugin({ BUILD: 'web' }) | src/Commands/BadasoSetup.php:197-22520 |
resolve BadasoCss | addResolveConfigVueVite | blok resolve: { alias: [...] } setelah defineConfig({ | src/Commands/BadasoSetup.php:227-25321 |
updateVite menambahkan blok import lewat $this->file->append sehingga import ditulis di akhir berkas (src/Commands/BadasoSetup.php:166-16744). Seluruh penyisipan memakai strpos dan substr pada isi berkas, bukan parser JavaScript, sehingga penanda yang hilang membuat langkah dilewati tanpa pesan error (src/Commands/BadasoSetup.php:178-19345).
updatePackageJson menambahkan axios, lodash, postcss, sass, dan vite-plugin-static-copy ke devDependencies (src/Commands/BadasoSetup.php:87-9146), serta paket frontend seperti vue, vue-router, vuex, vuesax, @vitejs/plugin-vue2, dan vite-plugin-environment ke dependencies (src/Commands/BadasoSetup.php:96-13447).
Publikasi config dan aset
boot mendaftarkan empat tag vendor:publish (src/Providers/BadasoServiceProvider.php:51-7148).
| Tag | Isi | Rujukan |
|---|---|---|
Badaso | config (badaso.php, log-viewer.php, backup.php, lfm.php, firebase.php, l5-swagger.php, badaso-hidden-tables.php, badaso-watch-tables.php, analytics.php, sanctum.php, octane.php), direktori seeder, gambar, customization, lang, dan swagger_models | src/Providers/BadasoServiceProvider.php:51-7148 |
BadasoConfig | hanya berkas config | src/Providers/BadasoServiceProvider.php:73-8349 |
BadasoSeeder | Seeder/Configurations, Seeder/CRUD, Seeder/ManualGenerate ke database/seeders/Badaso | src/Providers/BadasoServiceProvider.php:85-8950 |
BadasoResource | resources/customization, Images/badaso-images, resources/views/vendor | src/Providers/BadasoServiceProvider.php:91-9651 |
Migration dan data awal
boot memanggil loadMigrationsFrom(__DIR__.'/../Migrations'), sehingga seluruh migrasi Badaso ikut dijalankan oleh php artisan migrate (src/Providers/BadasoServiceProvider.php:4552). Setiap migrasi memakai prefix dari config('badaso.database.prefix'), misalnya untuk tabel users (src/Migrations/2020_11_12_000000_create_badaso_users_table.php:1653). Prefix itu berasal dari BADASO_TABLE_PREFIX dengan default badaso_ (src/Config/badaso.php:39-4154).
Setelah badaso:setup, CONTRIBUTING menjalankan tiga perintah berurutan: composer dump-autoload, php artisan migrate, lalu php artisan db:seed --class=BadasoSeeder (CONTRIBUTING.md:97-10255). Kelas BadasoSeeder berada di namespace Database\Seeders\Badaso karena direktori seeder dipublikasikan ke database/seeders/Badaso (src/Seeder/Configurations/BadasoSeeder.php:1-2256, src/Providers/BadasoServiceProvider.php:85-8950).
run memanggil enam seeder berurutan: RolesSeeder, PermissionsSeeder, RolePermissionsSeeder, MenusSeeder, FixedMenuItemSeeder, dan ConfigurationsSeeder (src/Seeder/Configurations/BadasoSeeder.php:14-2257). RolesSeeder mengisi role administrator dan customer (src/Seeder/Configurations/RolesSeeder.php:22-3158). ConfigurationsSeeder mengisi group adminPanel dengan kunci seperti adminPanelTitle (src/Seeder/Configurations/ConfigurationsSeeder.php:22-5259). Rincian tiap tabel dibahas di Manajemen User, Role, dan Permission dan Menu dan Konfigurasi Aplikasi.
Alur sampai dashboard siap diakses
graph LR
A["composer install"] --> B["php artisan badaso:setup"]
B --> C["composer dump-autoload"]
C --> D["php artisan migrate"]
D --> E["php artisan db:seed --class=BadasoSeeder"]
E --> F["php artisan badaso:admin email --create"]
F --> G["npm install"]
G --> H["npm run watch atau npm run prod"]
H --> I["dashboard /{VITE_ADMIN_PANEL_ROUTE_PREFIX}"]
B --> J["kunci .env dan config di config/"]
D --> K[("tabel berprefix badaso_")]
E --> L[("role, permission, menu, configuration")]
style A fill:#f59e0b,color:#000
style B fill:#f59e0b,color:#000
style C fill:#2d7d46,color:#fff
style D fill:#336791,color:#fff
style E fill:#336791,color:#fff
style F fill:#2d7d46,color:#fff
style G fill:#2d7d46,color:#fff
style H fill:#2d7d46,color:#fff
style I fill:#8b5cf6,color:#fff
style J fill:#f59e0b,color:#000
style K fill:#336791,color:#fff
style L fill:#336791,color:#fff
%% fig: Alur setup dari Composer sampai dashboard
%% desc: Perintah berurutan menyiapkan config, tabel, data awal, akun admin, dan aset frontend sebelum dashboard dapat diakses.Alamat dashboard dibentuk dari VITE_ADMIN_PANEL_ROUTE_PREFIX dengan nilai default badaso-dashboard (src/Config/badaso.php:33-3542). CONTRIBUTING menyebut default dashboard untuk prefiks yang sama (CONTRIBUTING.md:119-12160); nilai yang dipakai kode adalah nilai pada src/Config/badaso.php:33-3542.
Akun admin pertama
Setelah data awal masuk, akun admin dibuat dengan php artisan badaso:admin [email protected] --create (CONTRIBUTING.md:165-16861). Perintah badaso:admin menerima opsi create, name, username, password, dan confirm_password (src/Commands/AdminCommand.php:31-4062). Bila password dan konfirmasi berbeda, perintah mencetak Passwords don't match lalu berhenti (src/Commands/AdminCommand.php:136-141). Setelah user disimpan, perintah mengambil atau membuat role administrator lalu menambah satu baris UserRole (src/Commands/AdminCommand.php:145-158). Bila berhasil, perintah mencetak The user now has full access to your site. (src/Commands/AdminCommand.php:65). Wewenang role dibahas di Manajemen User, Role, dan Permission.
Guard autentikasi
addingBadasoAuthConfig menulis ulang config/auth.php dan mengganti providers.users dengan model Uasoft\Badaso\Models\User (src/Commands/BadasoSetup.php:317-32766). Bila langkah ini gagal, perintah mencetak Failed adding badaso auth config lalu melanjutkan langkah berikutnya (src/Commands/BadasoSetup.php:329-33167). Config bawaan memakai guard sanctum (src/Config/badaso.php:10-1268), sedangkan CONTRIBUTING.md masih mendokumentasikan guard badaso_guard dengan driver jwt (CONTRIBUTING.md:134-16269). Mekanisme autentikasi dijelaskan di Autentikasi dan Otorisasi.
Setup pengujian
Perintah badaso-test:setup menulis berkas phpunit.xml di base_path() (src/Commands/BadasoTestSetup.php:15-2270). Isi XML memuat dua testsuite, Unit dan Feature, yang masing-masing menjalankan direktori ./tests/... dan ./vendor/badaso/core/tests/...; blok coverage yang mengarah ke direktori ./vendor/badaso/core/src/...; serta <server> seperti APP_ENV=testing dan CACHE_DRIVER=array (src/Commands/BadasoTestSetup.php:43-8971). Berkas ditulis lewat file_put_contents tanpa memeriksa berkas lama (src/Commands/BadasoTestSetup.php:9172).
⚠️
badaso-test:setupmenimpaphpunit.xmlyang sudah ada tanpa konfirmasi (src/Commands/BadasoTestSetup.php:9172). Alur CI yang memakai berkas ini dibahas di Pengujian dan CI.