Lompat ke konten
dokumentasi.id
Commit b472665
v1
Star1,3 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

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-78). 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-51).

Setelah paket terpasang, penyiapan dikerjakan oleh satu perintah, badaso:setup. Perintah itu didaftarkan bersama lima perintah lain di registerConsoleCommands (src/Providers/BadasoServiceProvider.php:118-126). Sebelum perintah dijalankan, BADASO_LICENSE_KEY harus sudah diisi di .env (CONTRIBUTING.md:41-42), karena config membacanya sebagai badaso.license_key (src/Config/badaso.php:38).

Urutan kerja badaso:setup

Signature perintah adalah badaso:setup {--force=false} dengan deskripsi Setup Badaso (src/Commands/BadasoSetup.php:19-33). Metode handle memanggil 14 langkah secara berurutan, dan setiap langkah berdiri sendiri tanpa pembatalan bila langkah lain gagal (src/Commands/BadasoSetup.php:53-71).

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.
Fig. 1: Siklus satu pemanggilan badaso:setupPerintah badaso:setup menulis .env, package.json, dan vite.config.js, memublikasikan config lewat vendor:publish, lalu mengubah config/auth.php.
#Metode di handleYang diubahRujukan
1addingBadasoEnvmenambah kunci .env yang belum adasrc/Commands/BadasoSetup.php:386-422
2updatePackageJsonmenyuntik dependency ke package.json, lalu mencetak package.json updatedsrc/Commands/BadasoSetup.php:82-140
3updateVitemenambahkan blok import di akhir vite.config.jssrc/Commands/BadasoSetup.php:152-170
4publishBadasoProvidervendor:publish --tag=Badasosrc/Commands/BadasoSetup.php:255-265
5publishLaravelBackupProvider--provider=Spatie\Backup\BackupServiceProvidersrc/Commands/BadasoSetup.php:267-279
6publishLaravelActivityLogProvider--provider=Spatie\Activitylog\ActivitylogServiceProvider --tag=configsrc/Commands/BadasoSetup.php:281-293
7publishLaravelFileManagervendor:publish --tag=lfm_publicsrc/Commands/BadasoSetup.php:295-304
8publishLaravelAnalytics--provider=Spatie\Analytics\AnalyticsServiceProvidersrc/Commands/BadasoSetup.php:424-435
9publicFileFirebaseServiceWorkermenulis ulang public/firebase-messaging-sw.jssrc/Commands/BadasoSetup.php:306-309
10addingBadasoAuthConfigmenetapkan providers.users ke model User Badaso di config/auth.phpsrc/Commands/BadasoSetup.php:311-332
11generateSwaggerl5-swagger:generate di dalam try/catchsrc/Commands/BadasoSetup.php:73-80
12addPluginsLaravelInputVitemenyisipkan input Badaso ke array pluginssrc/Commands/BadasoSetup.php:172-195
13addPluginsVueVitemenyisipkan vue(), viteStaticCopy, dan EnvironmentPluginsrc/Commands/BadasoSetup.php:197-225
14addResolveConfigVueVitemenyisipkan blok resolve.aliassrc/Commands/BadasoSetup.php:227-253

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-116).

⚠️ Opsi --force=false memberi nilai default string 'false', sedangkan nilai null muncul ketika opsi diberikan tanpa nilai; keduanya diuji pada satu ekspresi yang menghasilkan $this->force (src/Commands/BadasoSetup.php:55). Nilai itu diteruskan ke vendor:publish sebagai --force (src/Commands/BadasoSetup.php:255-265), 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-416). Daftar kunci beserta nilai awalnya berasal dari envListUpload (src/Commands/BadasoSetup.php:334-384).

KunciNilai awalRujukan
BADASO_AUTH_TOKEN_LIFETIMEkosongsrc/Commands/BadasoSetup.php:337
VITE_BADASO_MAINTENANCEfalsesrc/Commands/BadasoSetup.php:339
VITE_DEFAULT_MENUgeneralsrc/Commands/BadasoSetup.php:341
VITE_BADASO_MENU${VITE_DEFAULT_MENU}src/Commands/BadasoSetup.php:342
VITE_ADMIN_PANEL_ROUTE_PREFIXbadaso-dashboardsrc/Commands/BadasoSetup.php:343
VITE_BADASO_SECRET_LOGIN_PREFIXbadaso-secret-loginsrc/Commands/BadasoSetup.php:344
VITE_API_ROUTE_PREFIXbadaso-apisrc/Commands/BadasoSetup.php:345
VITE_LOG_VIEWER_ROUTE"log-viewer"src/Commands/BadasoSetup.php:346
FILESYSTEM_DRIVERpublicsrc/Commands/BadasoSetup.php:356
VITE_API_DOCUMENTATION_ANNOTATION_ROUTEapi-annotationsrc/Commands/BadasoSetup.php:374
VITE_API_DOCUMENTATION_ROUTEapi-docssrc/Commands/BadasoSetup.php:375
BADASO_TABLE_PREFIXbadaso_src/Commands/BadasoSetup.php:376
OCTANE_SERVERswoolesrc/Commands/BadasoSetup.php:377
REDIS_CLIENTpredissrc/Commands/BadasoSetup.php:378

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-405).

Langkah .env di CONTRIBUTING masih memakai prefiks MIX_, misalnya MIX_DEFAULT_MENU dan MIX_ADMIN_PANEL_ROUTE_PREFIX (CONTRIBUTING.md:104-129), sedangkan envListUpload menulis kunci VITE_* dan config membacanya kembali lewat env('VITE_ADMIN_PANEL_ROUTE_PREFIX', 'badaso-dashboard') (src/Config/badaso.php:33-35). 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-145).

PenandaFungsiSisipanRujukan
BadasoupdateViteimport viteStaticCopy, @vitejs/plugin-vue2, vite-plugin-environmentsrc/Commands/BadasoSetup.php:152-170
Badaso InputaddPluginsLaravelInputViteentri vendor/badaso/core/src/resources/badaso/app.js dan vendor/badaso/core/src/resources/badaso/assets/scss/style.scsssrc/Commands/BadasoSetup.php:172-195
vueScriptaddPluginsVueVitevue(), viteStaticCopy({ targets: [...] }), EnvironmentPlugin({ BUILD: 'web' })src/Commands/BadasoSetup.php:197-225
resolve BadasoCssaddResolveConfigVueViteblok resolve: { alias: [...] } setelah defineConfig({src/Commands/BadasoSetup.php:227-253

updateVite menambahkan blok import lewat $this->file->append sehingga import ditulis di akhir berkas (src/Commands/BadasoSetup.php:166-167). 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-193).

updatePackageJson menambahkan axios, lodash, postcss, sass, dan vite-plugin-static-copy ke devDependencies (src/Commands/BadasoSetup.php:87-91), serta paket frontend seperti vue, vue-router, vuex, vuesax, @vitejs/plugin-vue2, dan vite-plugin-environment ke dependencies (src/Commands/BadasoSetup.php:96-134).

Publikasi config dan aset

boot mendaftarkan empat tag vendor:publish (src/Providers/BadasoServiceProvider.php:51-71).

TagIsiRujukan
Badasoconfig (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_modelssrc/Providers/BadasoServiceProvider.php:51-71
BadasoConfighanya berkas configsrc/Providers/BadasoServiceProvider.php:73-83
BadasoSeederSeeder/Configurations, Seeder/CRUD, Seeder/ManualGenerate ke database/seeders/Badasosrc/Providers/BadasoServiceProvider.php:85-89
BadasoResourceresources/customization, Images/badaso-images, resources/views/vendorsrc/Providers/BadasoServiceProvider.php:91-96

Migration dan data awal

boot memanggil loadMigrationsFrom(__DIR__.'/../Migrations'), sehingga seluruh migrasi Badaso ikut dijalankan oleh php artisan migrate (src/Providers/BadasoServiceProvider.php:45). Setiap migrasi memakai prefix dari config('badaso.database.prefix'), misalnya untuk tabel users (src/Migrations/2020_11_12_000000_create_badaso_users_table.php:16). Prefix itu berasal dari BADASO_TABLE_PREFIX dengan default badaso_ (src/Config/badaso.php:39-41).

Setelah badaso:setup, CONTRIBUTING menjalankan tiga perintah berurutan: composer dump-autoload, php artisan migrate, lalu php artisan db:seed --class=BadasoSeeder (CONTRIBUTING.md:97-102). Kelas BadasoSeeder berada di namespace Database\Seeders\Badaso karena direktori seeder dipublikasikan ke database/seeders/Badaso (src/Seeder/Configurations/BadasoSeeder.php:1-22, src/Providers/BadasoServiceProvider.php:85-89).

run memanggil enam seeder berurutan: RolesSeeder, PermissionsSeeder, RolePermissionsSeeder, MenusSeeder, FixedMenuItemSeeder, dan ConfigurationsSeeder (src/Seeder/Configurations/BadasoSeeder.php:14-22). RolesSeeder mengisi role administrator dan customer (src/Seeder/Configurations/RolesSeeder.php:22-31). ConfigurationsSeeder mengisi group adminPanel dengan kunci seperti adminPanelTitle (src/Seeder/Configurations/ConfigurationsSeeder.php:22-52). 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.
Fig. 2: Alur setup dari Composer sampai dashboardPerintah 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-35). CONTRIBUTING menyebut default dashboard untuk prefiks yang sama (CONTRIBUTING.md:119-121); nilai yang dipakai kode adalah nilai pada src/Config/badaso.php:33-35.

Akun admin pertama

Setelah data awal masuk, akun admin dibuat dengan php artisan badaso:admin [email protected] --create (CONTRIBUTING.md:165-168). Perintah badaso:admin menerima opsi create, name, username, password, dan confirm_password (src/Commands/AdminCommand.php:31-40). 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-327). Bila langkah ini gagal, perintah mencetak Failed adding badaso auth config lalu melanjutkan langkah berikutnya (src/Commands/BadasoSetup.php:329-331). Config bawaan memakai guard sanctum (src/Config/badaso.php:10-12), sedangkan CONTRIBUTING.md masih mendokumentasikan guard badaso_guard dengan driver jwt (CONTRIBUTING.md:134-162). 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-22). 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-89). Berkas ditulis lewat file_put_contents tanpa memeriksa berkas lama (src/Commands/BadasoTestSetup.php:91).

⚠️ badaso-test:setup menimpa phpunit.xml yang sudah ada tanpa konfirmasi (src/Commands/BadasoTestSetup.php:91). Alur CI yang memakai berkas ini dibahas di Pengujian dan CI.