Memahami Alur Konsep Role Spatie Laravel



Suatu hari saya mempelajari desain dari sebuah database aplikasi yang menggunakan laravel, dimana dalam prosesnya saya sedikit heran dengan desain database yang digunakan, hal yang membuat saya heran adalah cara aplikasi membaca role, karena dalam database untuk login user, nilai role sama sekali tidak didefinisikan. Karena saya sering sekali mendefinisikan nama role secara eksplisit pada login user tabel untuk aplikasi php native. Bagi saya yang baru mengenal Laravel, lalu harus ikut terlibat dalam proses modifikasi dan penambahan fitur, mempeljari desain databasenya cukup merepotkan.


Dalam perjalannya programmer lain memberi tahu bahwa proses role dalam aplikasi dibuat oleh library yang bernama Spatie, tetapi dia tidak memberi tahu bagaimana metode membaca atau dimana role – role tersebut disimpan.


Untuk Package Anda bisa membaca sendiri dokumentasi dan penjelasan dari library atau paket yang dapat digunakan pada framework laravel, karena saya disini hanya menjelaskan secara pengalaman yang mungkin bisa saja salah.


Konsep Penyimpanan Role dan Permissions Spatie Laravel

Saya mencoba mempelajari bagimana proses package tersebut menyimpan role didalam database, pada desain database aplikasi yang ada, terdapat beberapa tabel yang saya pikir merupakan bagian dari proses untuk menyimpan dan membaca.


Penjelasan saya mungkin bisa salah, karena saya hanya mempelajari dari data yang tersimpan bukan dari dokumentasi spatie. Setidaknya ada 5 tabel database yang bekerja dalam mengantur role dan permission

  1. roles
    Tabel ini menampun nama role dan jenis guard name, dalam implementasinya guard name ternyata digunakan untuk membedakan akes untuk route api dan web, sehingga dalam desain database yang saya baca, sebuah jenis role mungkin perlu ditambahkan dua jenis guard name yaitu web dan api

  2. roles_has_permission
    Tabel ini menampung dua jenis field (permiisons_id dan role_id) yang berelasi kedua tabel permissions dan roles, dimana permission_id berelasi ke tabel permissions dan role_id ke tabel roles.

  3. permissions
    Tabel permissions ini setidaknya berisi tiga field penting didalamnya yaitu id, name dan guard_name. Id merupakan refrensi untuk disimpan pada tabel role_has_permissions kemudian field name berisi nama permission dan terakhir guard_name berisi jenis guard_name yang boleh mengakses permission

  4. model_has_role
    Tabel ini berisi tiga field yaitu role_id, model_type, method_id. Field role_id berelasi dengan tabel role yang berisi nama role dan jenis guard name, kemudian ada model_type, bagian ini saya belum mengerti, lalu ada method_id, saya berpikir bahwa method id merupakan id user yang terdapat pada tabel user

  5. model_has_permissions
    Bagian ini saya tidak mengerti tapi sepertinya merupakan bagian dari ruang lingkup kerja spatie

Dari desain database diatas maka saya menyimpulkan bahwa ketika role akan dibaca pada user maka akan ada alur query dengan gambaran sederhana seperti berikut

  1. Tabel model_has_role (model_id) akan dicocokan dengan id pada tabel user

  2. kemudian untuk dapat membaca rolenya, id pada tabel role akan dicocokan dengan role_id pada tabel model_has_role sehingga bisa terbacalah nama dari tabel role

  3. Bisa disimpulkan proses pembacaan role adalah dengan cara mencocokan id user yang terdapat pada tabel model_has_roles dengan tabel user, terkahir dibacalah nama role


Menampilkan Role User yang Telah Ditambahkan oleh Spatie Laravel


Dalam proses modifikasi sistem web yang dibangun menggunakan laravel saya menemukan masalah dimana saya kesulitan untuk menampilkan nama role pada halaman datatables, sehingga selalu muncul pesan seperti berikut

membaca dan menampilkan role


Karena memang saya sama sekali belum mengetahui bagaimana sintaks – sintak query yang bisa dilakukan dalam laravel, maka saya coba mencari kode – kode yang berhubungan dengan role dimana teori alur kerja pada Konsep Penyimpanan Role dan Permissions Spatie Laravel merupakan kesimpulan dari potongan query yang terdapat pada model, sehingga query pada model yang saya miliki di Controller perlu dimodifikasi menjadi seperti berikut agar dapat membaca role



<?php 
$adminmaster_query = AdminMasterModel::select([
            'admin_master.id AS id',
            'admin_master.uuid AS uuid',
            'user.name AS user_name',
            'user.email AS email',
            'admin.name AS admin_name',
            'admin_master.payout_account_number AS payout_account_number',
            'payment_method.name AS payment_method_name',
            'payout_method.name AS payout_method_name',
            'admin_master.active AS active',
            'roles.name as role',
            //'model_has_roles.id as role_name',
            
        ])
            ->leftJoin('user', 'user.id', '=', 'admin_master.user_id')
            ->leftJoin('admin', 'admin.user_id', '=', 'user.id')
            ->leftJoin('payment_method', 'payment_method.id', '=', 'admin_master.payment_method_id')
            ->leftJoin('payout_method', 'payout_method.id', '=', 'admin_master.payout_method_id')
            ->leftJoin('model_has_roles', 'model_has_roles.model_id', 'user.id')
            ->leftJoin('roles', 'roles.id', 'model_has_roles.role_id')
            ->distinct();




Kurang lebih begitulah proses bagaimana saya Memahami Alur Konsep Role Spatie Laravel, ini tentunya bisa saja salah terlebih dikemukakan oleh orang yang baru 3 hari belajar laravel

0 Response to "Memahami Alur Konsep Role Spatie Laravel"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin

nagabet76slot gacorslot online1213141516Slot Online Menghadirkan Pengalaman Digital Yang Didukung Pemrosesan Data Secara Real TimeMahjongways Menganalisis Pola Visual Dan Dinamika Simbol Berdasarkan Pemrosesan Data DigitalMahjongways Mengembangkan Dinamika Permainan Melalui Pengelolaan Data Dan Elemen Visual TerintegrasiAnalisis Komputasi Modern Membantu Memetakan Dinamika Sistem Digital Berdasarkan Data ObservasiMember Baru Mendorong Dinamika Komunitas Digital Menuju Pengalaman Yang Lebih Aktif Dan Menarikslot onlinemahjongwayasarsitektur layananpemrosesan data adaptifmember baruSlot Online Terbaru Menghadirkan AnalisisScatter Hitam Dianalisis Melalui PemetaanPola Scatter Hitam Membentuk Distribusi Visual Yang Dapat Dikaji Menggunakan Komputasi AdaptifArsitektur Teknologi TerdistribusiTeknologi Visualisasi DataMahjongways Mengembangkan Interaksi Visual Melalui Integrasi Simbol Digital Yang DinamisAnalisis Mahjongways Memetakan Dinamika Visual Dan Respons Antarmuka Berbasis DataScatter Hitam Dianalisis Melalui Pemetaan Struktur Simbol Digital Berbasis Komputasi AdaptifAlgoritma Scatter Hitam Membantu Mengidentifikasi Dinamika Pola Melalui Analisis Data ObservasiPg Soft Mengembangkan Sistem Rendering Adaptif Untuk Mendukung Visualisasi Digital ModernTeknologi Pg Soft Mengoptimalkan Pemrosesan Grafis Melalui Arsitektur Rendering TerintegrasiTeknologi Pemodelan Data Membantu Menganalisis Dinamika Informasi Pada Ekosistem Digital ModernArsitektur Komputasi Terdistribusi Meningkatkan Keandalan Pengelolaan Data Pada Platform DigitalTeknologi Kecerdasan Komputasional Mendorong Pengembangan Sistem Digital Yang Lebih AdaptifPemrosesan Data Modern Membantu Memetakan Pola Informasi Melalui Pendekatan Komputasi TerukurTeknologi Integrasi Data Mempermudah Sinkronisasi Informasi Dalam Lingkungan Digital TerpaduVisualisasi Komputasi Modern Membantu Menginterpretasikan Perubahan Pola Pada Sistem Digital KompleksTeknologi Otomasi Data Meningkatkan Efisiensi Pengelolaan Informasi Pada Infrastruktur DigitalModel Komputasi Adaptif Mendukung Pengembangan Teknologi Digital Melalui Analisis Data BerkelanjutanPengembangan Pg Soft Mengintegrasikan Teknologi Rendering Dengan Interaksi Visual Yang ResponsifPg Soft Menerapkan Komputasi Visual Untuk Meningkatkan Efisiensi Pengolahan Elemen DigitalEksplorasi Scatter Hitam Memetakan Distribusi Simbol Melalui Model Analitik Digital TerintegrasiPola Scatter Hitam Dikaji Menggunakan Pendekatan Visualisasi Data Dan Pemodelan StatistikMahjongways Menghadirkan Pendekatan Visual Interaktif Melalui Pemrosesan Simbol Yang AdaptifEksplorasi Mahjongways Mengungkap Perubahan Pola Visual Dalam Lingkungan Digital Terintegrasimahjong dan perubahan selera penggemar game berbasis mobilesimbol mahjong menghadirkan inspirasi bagi desain game modernfenomena mahjong online dalam pemberitaan industri hiburan digitalmahjong dan perjalanan motif tradisional menuju layar interaktifkomunitas digital mengamati popularitas tema mahjongmahjong dalam sorotan kreativitas visual dan teknologi permainanmengapa tema mahjong terus hadir dalam perbincangan gamemahjong online dan pergeseran budaya hiburan di internetmenelusuri identitas mahjong lewat simbol warna dan animasimahjong menjadi bahan observasi tren game digital masa kinigame digital mengubah cara kreator merancang pengalaman interaktifinovasi grafis membawa game digital ke arah yang berbedaekosistem game digital tumbuh bersama teknologi perangkat mobilegame digital dalam catatan perubahan budaya populerdesain suara dan animasi mewarnai industri game digitalpengembang game digital mengeksplorasi konsep visual yang unikgame digital dan peran komunitas dalam membentuk trenteknologi interaktif mendorong eksperimen di dunia game digitalmedia kreatif menyoroti identitas baru game digitalperjalanan game digital dari hobi menuju industri kreatifpg soft menghadirkan ciri visual khas dalam game digitalgame digital pg soft dibahas dari sisi animasi dan desainpg soft dan perubahan estetika permainan berbasis mobilemengenal tema visual dalam koleksi game pg softindustri game digital menyoroti karya pg softpg soft dalam pengamatan tren hiburan interaktifdesain karakter menjadi identitas game digital pg softmembahas pg soft melalui perspektif teknologi dan komputasigame pg soft dan perkembangan grafis di perangkat mobilemedia digital mengulas identitas permainan pg soft