Arsitektur Database dan Model
Sistem Haflah dibangun dengan paradigma Relasional Database menggunakan ORM Eloquent di Laravel. Berikut penjelasan relasi (Relationships) antar Model / Tabel utama di dalam sistem ini.
1. Sistem Autentikasi & Otorisasi (RBAC)
- Model
Role(roles): Tabel master hak akses (Superadmin, Admin, Operator, Walikelas, Guest). Memiliki fieldis_staff(boolean) untuk membedakan antara staff (login ke/admin/login) dan tamu (login ke/login). - Model
User(users):belongsTo(Role::class). Pengguna utama yang bisa melakukan autentikasi sistem. Data autentikasi tamu pun menggunakan tabel ini dengan role_id mengarah ke Guest. Memiliki nomor handphone yang diformat unik sebagai username untuk tamu. - Tabel
role_permissions: Konfigurasi toggle "On/Off" untuk mengatur apakah role tertentu dapat melakukan tindakan tertentu (sepertievent.view,event.edit). Data di-cache oleh Model User viaCache::rememberguna performa tinggi.
2. Modul Event & Registrasi
- Model
Event(events): Pusat dari segala aktivitas. Acara yang dibuat memiliki status enum (draft,scheduled,active,completed). - Model
Guest(guests):belongsTo(User::class). Profil detail dari seorang tamu, mencakup relasinya ke event (Many-to-Many via pivot tabel atau langsung dikaitkan). Data tamu bisa berasal dari sistem eksternal atau di-import. - Model
AttendanceLog(attendance_logs): Menyimpan riwayat check-in (Scanner). Memiliki relasibelongsTo(Event::class)danbelongsTo(User::class, 'guest_id'). Rekaman mencatat waktu kedatangan.
3. Manajemen Konten
- Model
Post(posts): Tabel untuk menyimpan Berita / Artikel. Memiliki slug otomatis untuk SEO-friendly URL. - Model
Gallery(galleries) &GalleryPhoto(gallery_photos): One-to-Many. Sebuah Album (Gallery) menampung banyak Foto. Jika Gallery diisievent_id, ia bersifat Private (hanya tamu event tersebut yang melihat di portal). Jika Null, bersifat Public (tampil di Halaman Depan). - Model
Banner&Video: Komponen sederhana dengan sortingsort_orderdan visibilitasis_active.
4. Konvensi Validasi Basis Data
- Setiap input form wajib divalidasi oleh Request Validator pada Controller (atau Livewire Rules).
- Penghapusan tabel induk yang berelasi memiliki
onDelete('cascade')atau dibatasionDelete('restrict')(Constraint) jika mengharuskan perlindungan data, contoh: Role tidak bisa dihapus jika masih ada User yang menggunakannya. - Semua password disimpan dalam bentuk
hashed(Bcrypt) dan file upload disimpan di dalam diskstorage/app/public/dengan symlink (php artisan storage:link).