<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://jihadul4kbar.github.io/blog</id>
    <title>Jihadul Akbar Blog</title>
    <updated>2025-07-02T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://jihadul4kbar.github.io/blog"/>
    <subtitle>Jihadul Akbar Blog</subtitle>
    <icon>https://jihadul4kbar.github.io/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Memahami cara kerja Midellware pada Laravel 12]]></title>
        <id>https://jihadul4kbar.github.io/blog/Middleware Laravel 12</id>
        <link href="https://jihadul4kbar.github.io/blog/Middleware Laravel 12"/>
        <updated>2025-07-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Middleware menyediakan mekanisme yang mudah untuk memeriksa dan memfilter permintaan HTTP yang masuk ke aplikasi Anda. Misalnya, Laravel menyertakan middleware yang memverifikasi bahwa pengguna aplikasi Anda telah diautentikasi. Jika pengguna tidak diautentikasi, middleware akan mengarahkan pengguna ke layar login aplikasi Anda. Namun, jika pengguna diautentikasi, middleware akan memungkinkan permintaan untuk berlanjut lebih jauh ke dalam aplikasi.[1]]]></summary>
        <content type="html"><![CDATA[<p>Middleware menyediakan mekanisme yang mudah untuk memeriksa dan memfilter permintaan HTTP yang masuk ke aplikasi Anda. Misalnya, Laravel menyertakan middleware yang memverifikasi bahwa pengguna aplikasi Anda telah diautentikasi. Jika pengguna tidak diautentikasi, middleware akan mengarahkan pengguna ke layar login aplikasi Anda. Namun, jika pengguna diautentikasi, middleware akan memungkinkan permintaan untuk berlanjut lebih jauh ke dalam aplikasi.[1]</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="membuat-user-autentikasi">Membuat User Autentikasi<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#membuat-user-autentikasi" class="hash-link" aria-label="Taut langsung ke Membuat User Autentikasi" title="Taut langsung ke Membuat User Autentikasi" translate="no">​</a></h2>
<p>Membuat autentikasi pengguna dengan Laravel 12, menggunakan role yang disimpan di dalam tabel users dengan tahapan sebagai berikut.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-menambahkan-kolom-role-pada-tabel-user">1. Menambahkan kolom role pada tabel <code>user</code>.<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#1-menambahkan-kolom-role-pada-tabel-user" class="hash-link" aria-label="Taut langsung ke 1-menambahkan-kolom-role-pada-tabel-user" title="Taut langsung ke 1-menambahkan-kolom-role-pada-tabel-user" translate="no">​</a></h3>
<p>Buka file migrasi <code>database/migrations/xxxx_xx_xx_create_users_table.php</code>
Tambahkan kode berikut di bagian kolom tabel:</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">database/migrations/xxxx_xx_xx_create_users_table.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">     $table-&gt;enum('role', ['admin', 'petugas', 'pimpinan'])-&gt;default('petugas');</span><br></div></code></pre></div></div>
<p>kode ini berfungsi untuk membuat role dengan tiga lever user yakni <code>admin, petugas, dan pimpinan</code> dimana role secara bawaannya adalah <code>petugas</code>.</p>
<p>Jalankan migrasi untuk update struktur tabel pada database :
<code>php artisan migrate:fresh</code>
<code>migrate:fresh</code> akan menghapus semua tabel lalu menjalankan ulang semua migrasi dari awal.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-tambahkan-konstanta-role-di-model-user">2. Tambahkan Konstanta Role di <code>Model User</code><a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#2-tambahkan-konstanta-role-di-model-user" class="hash-link" aria-label="Taut langsung ke 2-tambahkan-konstanta-role-di-model-user" title="Taut langsung ke 2-tambahkan-konstanta-role-di-model-user" translate="no">​</a></h3>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">app/Models/User.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">    protected $fillable = [</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        'name',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        'email',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        'password',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        'role', // Tambahkan atribut role</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    ];</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Helper methods untuk check role</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function isAdmin()</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return $this-&gt;role === 'admin';</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function isPetugas()</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return $this-&gt;role === 'petugas';</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function isPimpinan()</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return $this-&gt;role === 'pimpinan';</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div></code></pre></div></div>
<p>Penjelasan
<code> 'role', // Tambahkan atribut role</code>
Atribut role ditambahkan agar bisa menyimpan peran pengguna, seperti admin, petugas, atau pimpinan.</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">    public function isAdmin()</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return $this-&gt;role === 'admin';</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div></code></pre></div></div>
<p>Fungsi ini mengembalikan true jika nilai role dari user adalah 'admin'.
Fungsinya untuk memudahkan pengecekan apakah user adalah admin.
Kode ini merupakan bagian dari sistem manajemen user dengan role-based access. Dengan adanya helper method seperti isAdmin(), kamu bisa lebih mudah mengatur hak akses di controller, middleware, atau view, contohnya:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">if (auth()-&gt;user()-&gt;isAdmin()) {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Akses khusus untuk admin</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-membuat-middleware-role">3. Membuat Middleware Role<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#3-membuat-middleware-role" class="hash-link" aria-label="Taut langsung ke 3. Membuat Middleware Role" title="Taut langsung ke 3. Membuat Middleware Role" translate="no">​</a></h3>
<p>Jalankan perintah berikut untuk membuat middleware CheckRole</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">php artisan make:middleware CheckRole</span><br></div></code></pre></div></div>
<p>Ganti isi file CheckRole dengan kode berikut</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">app/Http/Middleware/CheckRole.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">&lt;?php</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">namespace App\Http\Middleware;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Closure;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Http\Request;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Support\Facades\Auth;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Symfony\Component\HttpFoundation\Response;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">class CheckRole</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function handle(Request $request, Closure $next, ...$roles)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        if(!Auth::check()) {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return redirect('/login'); // Redirect to login if not authenticated</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        if(!in_array(Auth::user()-&gt;role, $roles)) {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            abort(403, 'Unauthorized');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return $next($request);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div></code></pre></div></div>
<p>Penjelasan</p>
<p><code>...$roles</code>: Mengizinkan kita mengirim lebih dari satu role.</p>
<p><code>in_array(...)</code>: Cek apakah role user cocok dengan salah satu role yang diizinkan.</p>
<p><code>abort(403)</code>: Jika tidak cocok, akses ditolak.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-daftarkan-middleware-role-ke-kernel">4. Daftarkan Middleware Role ke Kernel<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#4-daftarkan-middleware-role-ke-kernel" class="hash-link" aria-label="Taut langsung ke 4. Daftarkan Middleware Role ke Kernel" title="Taut langsung ke 4. Daftarkan Middleware Role ke Kernel" translate="no">​</a></h3>
<p>Agar midlleware dapat berfungsi perlu dilakukan register middleware pada <code>bootstrap/app.php</code>
tambahkan kode berikut pada pada file app.php</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">bootstrap/app.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">&lt;?php</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use App\Http\Middleware\CheckRole;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Foundation\Application;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Foundation\Configuration\Exceptions;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Foundation\Configuration\Middleware;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">return Application::configure(basePath: dirname(__DIR__))</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -&gt;withRouting(</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        web: __DIR__.'/../routes/web.php',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        commands: __DIR__.'/../routes/console.php',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        health: '/up',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    )</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -&gt;withMiddleware(function (Middleware $middleware): void {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        // Register alias middleware (untuk digunakan pada route)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        $middleware-&gt;alias(['role' =&gt; CheckRole::class]);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    })</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -&gt;withExceptions(function (Exceptions $exceptions): void {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    })-&gt;create();</span><br></div></code></pre></div></div>
<p>perhatikan pada bagian <code> $middleware-&gt;alias(['role' =&gt; CheckRole::class]);</code>
digunakan untuk memberi nama <code>role</code> untuk middleware kita agar bisa digunakan dalam route seperti<code> middleware('role:admin')</code>.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="5-routing-berdasarkan-role">5. Routing Berdasarkan Role<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#5-routing-berdasarkan-role" class="hash-link" aria-label="Taut langsung ke 5. Routing Berdasarkan Role" title="Taut langsung ke 5. Routing Berdasarkan Role" translate="no">​</a></h3>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">routes/web.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Support\Facades\Route;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Route::get('/', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return view('welcome');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">});</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">// Semua user yang sudah login</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Route::middleware(['auth'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::get('/dashboard', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return view('dashboard');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus admin</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:admin'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/admin', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang Admin!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       // Route::resource('user', UserController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus petugas biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:petugas'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/petugas', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang petugas!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/petugas', FiturPetugasController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus pimpinan biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:Pimpinan'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/pimpinan', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang Pimpinan!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/lapaoran', LaporanController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus admin dan petugas biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:admin,petugas'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/transaksi', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang petugas atau admin!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/transaksi', TransaksiController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">});</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div></code></pre></div></div>
<p>Penjelasan:</p>
<p>Middleware <code>auth:</code> Pastikan hanya user login yang bisa akses.</p>
<p>Middleware <code>role:admin</code>: Hanya bisa diakses user yang role-nya 'admin'.</p>
<p>Middleware <code>role:petugas</code>: Hanya untuk user dengan role petugas.</p>
<p>Middleware <code>role:pimpinan</code>: Hanya untuk user dengan role pimpinan.</p>
<p>Middleware <code>role:admin,petugas</code>: Hanya untuk user role admin dan petugas.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="6-menambah-user-ke-dalam-tabel-user-berdasarkan-role">6. Menambah user ke dalam tabel user berdasarkan role<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#6-menambah-user-ke-dalam-tabel-user-berdasarkan-role" class="hash-link" aria-label="Taut langsung ke 6. Menambah user ke dalam tabel user berdasarkan role" title="Taut langsung ke 6. Menambah user ke dalam tabel user berdasarkan role" translate="no">​</a></h3>
<p>jalankan perintah pada terminal</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">php artisan tinker</span><br></div></code></pre></div></div>
<p>selanjutnya tambahkan user dengan perintah berikut</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">DB::table('users')-&gt;insert(['name' =&gt; 'Admin','email' =&gt; 'admin@contoh.com','password' =&gt; Hash::make('12345678'),'role' =&gt; 'admin']);</span><br></div></code></pre></div></div>
<p>perintah untuk menambah user dengan nama <code>Admin, email admin@contoh.com, password 12345678 dan role admin</code></p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">DB::table('users')-&gt;insert(['name' =&gt; 'Petugas','email' =&gt; 'petugas@contoh.com','password' =&gt; Hash::make('12345678'),'role' =&gt; 'petugas']);</span><br></div></code></pre></div></div>
<p>perintah untuk menambah user dengan nama <code>Petugas, email petugas@contoh.com, password 12345678 dan role petugas</code></p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">DB::table('users')-&gt;insert(['name' =&gt; 'Pimpinan','email' =&gt; 'pimpinan@contoh.com','password' =&gt; Hash::make('12345678'),'role' =&gt; 'pimpinan']);</span><br></div></code></pre></div></div>
<p>perintah untuk menambah user dengan nama <code>Pimpinan, email pimpinan@contoh.com, password 12345678 dan role pimpinan</code></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="7-membuat-login-dan-logout">7. Membuat Login dan Logout<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#7-membuat-login-dan-logout" class="hash-link" aria-label="Taut langsung ke 7. Membuat Login dan Logout" title="Taut langsung ke 7. Membuat Login dan Logout" translate="no">​</a></h3>
<p>jalankan perintah berikut untuk membuat <code>AuthController.php</code> pada folder Auth</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">php artisan make:controller Auth/AuthController</span><br></div></code></pre></div></div>
<p>setelah berhasil maka buka file tersebut dan isi dengan kode berikut</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">app\Http\Controllers\Auth\AuthController.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">&lt;?php</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">namespace App\Http\Controllers\Auth;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Http\Request;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use App\Http\Requests\LoginRequest;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use App\Http\Controllers\Controller;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Support\Facades\Auth;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">class AuthController extends Controller</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function showLoginForm()</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return view('auth.login');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function login(Request $request)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        // Validasi input</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        $credentials = $request-&gt;validate([</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            'email' =&gt; 'required|email',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            'password' =&gt; 'required|min:6',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        ]);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        // Coba login</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        if (Auth::attempt($credentials)) {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            $user = Auth::user();</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return redirect()-&gt;route('dashboard'); // Redirect ke dashboard setelah login</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        // Jika gagal, kembalikan dengan error</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return back()-&gt;withErrors([</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            'email' =&gt; 'Email atau password salah.',</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        ])-&gt;withInput();</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    public function logout(Request $request)</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Auth::logout();</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        $request-&gt;session()-&gt;invalidate();</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        $request-&gt;session()-&gt;regenerateToken();</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return redirect('/login')-&gt;with('status', 'Anda telah berhasil logout.');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div></code></pre></div></div>
<p>membuat halaman login pada folder auth dengan nama login.blade.php</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">resources\views\auth\login.blade.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">      &lt;form action="{{ route('login') }}" method="POST"&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        @csrf</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          &lt;input type="email" name="email" required autocomplete="email" autofocus placeholder="Email"&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          @error('email')</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">              {{ $message }}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          @enderror</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          &lt;input type="password" name="password" placeholder="Password" required autocomplete="current-password"&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          @error('password')</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">              {{ $message }}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">          @enderror</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            &lt;button type="submit"&gt;Sign In&lt;/button&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      &lt;/form&gt;</span><br></div></code></pre></div></div>
<p>Selanjutnya membuat halaman dashbord.blade.php</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">resources\views\dashbord.blade.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">&lt;h3&gt;Selamat datang {{ auth()-&gt;user()-&gt;name }}&lt;/h3&gt;&lt;br&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      Role : {{ auth()-&gt;user()-&gt;role }}</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @if(auth()-&gt;user()-&gt;isAdmin())</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  &lt;p&gt;Menu Untuk Admin&lt;/p&gt;&lt;br&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;a href=""&gt;Menu Untuk Admin&lt;/a&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @endif</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @if(auth()-&gt;user()-&gt;isPetugas())</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;p&gt;Menu Untuk Pegugas&lt;/p&gt;&lt;br&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;a href=""&gt;Menu Untuk Petugas&lt;/a&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @endif</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @if(auth()-&gt;user()-&gt;isPimpinan())</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;p&gt;Menu Untuk Pimpinan&lt;/p&gt;&lt;br&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;a href=""&gt;Menu Untuk pimpinan&lt;/a&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  @endif</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">&lt;br&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;form method="POST" action="{{ route('logout') }}"&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        @csrf</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        &lt;button type="submit"&gt;Logout&lt;/button&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    &lt;/form&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="8-route-lengkap">8. Route Lengkap<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#8-route-lengkap" class="hash-link" aria-label="Taut langsung ke 8. Route Lengkap" title="Taut langsung ke 8. Route Lengkap" translate="no">​</a></h3>
<p>berikut route lengkapnya</p>
<div class="language-php codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_OeMC">routes/web.php</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-php codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">use Illuminate\Support\Facades\Route;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">use App\Http\Controllers\Auth\AuthController;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Route::get('/', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return view('welcome');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">});</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">// Auth Routes</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Route::controller(AuthController::class)-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::get('login', 'showLoginForm')-&gt;name('login');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::post('login', 'login');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::post('logout', 'logout')-&gt;name('logout');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">});</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">// Semua user yang sudah login</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Route::middleware(['auth'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::get('/dashboard', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        return view('dashboard');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    })-&gt;name('dashboard');</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus admin</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:admin'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/admin', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang Admin!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       // Route::resource('user', UserController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus petugas biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:petugas'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/petugas', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang petugas!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/petugas', FiturPetugasController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus pimpinan biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:Pimpinan'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/pimpinan', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang Pimpinan!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/lapaoran', LaporanController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    // Khusus admin dan petugas biasa</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    Route::middleware(['role:admin,petugas'])-&gt;group(function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        Route::get('/transaksi', function () {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            return "Selamat datang petugas atau admin!";</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        //Route::resource('/transaksi', TransaksiController::class);</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    });</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">});</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="refrensi">Refrensi<a href="https://jihadul4kbar.github.io/blog/Middleware%20Laravel%2012#refrensi" class="hash-link" aria-label="Taut langsung ke Refrensi" title="Taut langsung ke Refrensi" translate="no">​</a></h2>
<p>[1] <a href="https://laravel.com/docs/12.x/middleware" target="_blank" rel="noopener noreferrer" class="">https://laravel.com/docs/12.x/middleware</a></p>]]></content>
        <author>
            <name>Jihadul Akbar</name>
            <uri>https://github.com/jihadul4kbar</uri>
        </author>
        <category label="Tutorial" term="Tutorial"/>
        <category label="Laravel" term="Laravel"/>
        <category label="Web" term="Web"/>
        <category label="Web Software Developer" term="Web Software Developer"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Setup widgets for monitoring port on LibreLMS]]></title>
        <id>https://jihadul4kbar.github.io/blog/Add widgets monitoring port on Libre LMS</id>
        <link href="https://jihadul4kbar.github.io/blog/Add widgets monitoring port on Libre LMS"/>
        <updated>2025-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Docusaurus blogging features are powered by the blog plugin.]]></summary>
        <content type="html"><![CDATA[<p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer" class="">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer" class="">blog plugin</a>.</p>
<p>Here are a few tips you might find useful.</p>
<p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p>
<p>Regular blog authors can be added to <code>authors.yml</code>.</p>
<p>The blog post date can be extracted from filenames, such as:</p>
<ul>
<li class=""><code>2019-05-30-welcome.md</code></li>
<li class=""><code>2019-05-30-welcome/index.md</code></li>
</ul>
<p>A blog post folder can be convenient to co-locate blog post images:</p>
<p>The blog supports tags as well!</p>
<p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p>]]></content>
        <author>
            <name>Jihadul Akbar</name>
            <uri>https://github.com/jihadul4kbar</uri>
        </author>
        <author>
            <name>Hadi Wijaya</name>
            <uri>https://github.com/hadyanwijaya</uri>
        </author>
        <author>
            <name>Hairul Fahmi</name>
            <uri>https://github.com/hairulfhm</uri>
        </author>
        <category label="tutorial" term="tutorial"/>
        <category label="libreLMS" term="libreLMS"/>
        <category label="Network" term="Network"/>
    </entry>
</feed>