@extends('docs.layout') @section('title', 'Autentikasi & Hak Akses') @section('breadcrumb') @endsection @section('page_header') Keamanan & Akses

Autentikasi, Keamanan & RBAC

Dokumentasi mekanisme autentikasi berbasis username, pengamanan rate limiting lockout, pencatatan waktu akses terakhir, serta pembagian peran (RBAC) 4 tingkatan.

@endsection @section('content')

1. Mekanisme Autentikasi Berbasis Username

Berbeda dengan konfigurasi standar Laravel yang menggunakan email, sistem SSE menggunakan Username unik dan Password terenkripsi (Bcrypt) untuk proses autentikasi.

Komponen File Kode Terkait Penjelasan Teknis
Form Login resources/views/auth/login.blade.php Menyediakan form input username & password dengan validasi client/server, toggle remember me, dan countdown timer saat terkena blokir lockout.
Controller Auth app/Http/Controllers/AuthController.php Memvalidasi kredensial via Auth::attempt(), mengelola Rate Limiter, meregenerasi session ID untuk mencegah session fixation attack, dan mencatat last_login_at.
Pencatatan Akses app/Models/User.php Kolom last_login_at diperbarui secara otomatis setiap kali login berhasil ($user->update(['last_login_at' => now()])), dan ditampilkan di tabel Manajemen Pengguna.

2. Proteksi Keamanan: Rate Limiter Lockout

Untuk mencegah serangan Brute Force (percobaan tebak kata sandi secara berulang), AuthController mengimplementasikan RateLimiter Throttling:

Aturan Blokir Sementara (Lockout Policy)

Jika pengguna salah memasukkan password sebanyak 5 kali berturut-turut dalam waktu 60 detik (dihitung per kombinasi username + IP Address):

  • Akses login ke sistem akan langsung diblokir sementara.
  • Sistem menghitung sisa waktu cooldown (misal: 60 detik) dan menyimpannya di flash session lockout_until.
  • Form login akan menampilkan pesan peringatan merah: "Akses diblokir sementara. Coba lagi dalam XX detik." dengan countdown interaktif.
  • Setelah masa cooldown berakhir atau setelah berhasil login, counter kesalahan direset (RateLimiter::clear).

3. Role-Based Access Control (RBAC)

Pengamanan otorisasi hak akses ditegakkan oleh middleware khusus RoleMiddleware.php yang didaftarkan sebagai route alias role di app/Http/Kernel.php:

Role Tanggung Jawab Utama Hak Akses Modul
admin Super Administrator sistem. Memiliki akses 100% tanpa batas ke seluruh modul, Master Data, pembuatan & edit User, reset password, dan Dokumentasi Teknis.
staf_rab Staf Estimator & Perencanaan Anggaran. Mengelola Proyek, menyusun RAB Upah & Material (Unified RAP), mengimpor file Excel RAP, mengelola Master Satuan & Kategori, serta melihat ringkasan stok.
staf_purchasing Staf Pengadaan & Logistik Lapangan. Mencatat transaksi Barang Masuk (Purchasing), mencatat transaksi Barang Keluar (Usage), mengelola Master Vendor & Material, serta memantau kartu stok proyek.
manajer Manajemen & Pengambil Keputusan. Akses monitoring (View-Only) ke Dashboard eksekutif, memantau realisasi anggaran RAB vs Pembelian, melihat kartu stok & buku besar, serta mencetak laporan format PDF.

4. Modul Manajemen Pengguna (User Management)

Khusus pengguna dengan role Admin, tersedia modul pengelolaan akun di menu Master Data → Pengguna (UserController.php):

5. Pemecahan Masalah (Troubleshooting)

Hal ini terjadi jika akun Anda tidak memiliki role yang diizinkan untuk membuka halaman tersebut (misal: Staf Purchasing mencoba membuka menu Pengguna yang hanya untuk Admin). Hubungi Administrator jika membutuhkan penyesuaian hak akses role.

Tunggu hingga penghitung waktu mundur di layar login selesai (maksimal 60 detik). Pastikan tombol Caps Lock tidak aktif sebelum mencoba memasukkan kata sandi kembali.
@endsection