Untuk membuat sistem login dan registrasi pengguna dengan Laravel menggunakan paket Spatie Laravel Permission, kamu dapat mengikuti langkah-langkah berikut ini:

1. Mengupdate Tampilan Register

Edit view resources/views/auth/register.blade.php untuk menambahkan pilihan role saat registrasi:


<div class="form-group">
	<label for="role">Role</label>
	<select id="role" class="form-control" name="role">
		<option value="user">User</option>
		<option value="admin">Admin</option>
	</select>
</div>

2. Mengupdate Register Controller

Edit app/Http/Controllers/Auth/RegisterController.php untuk menyimpan peran pengguna saat registrasi:


namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Spatie\Permission\Models\Role;

class RegisterController extends Controller
{
    use RegistersUsers;

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
            'role' => ['required', 'string', 'in:user,admin'],
        ]);
    }

    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        $user->assignRole($data['role']);

        return $user;
    }
}

3. Mengupdate Tampilan Login (Optional)

Jika kamu ingin menambahkan fitur lain di halaman login, edit resources/views/auth/login.blade.php sesuai kebutuhan kamu.

4. Melindungi Route dengan Middleware

kamu dapat melindungi route menggunakan middleware role atau permission. Contoh:


Route::group(['middleware' => ['role:admin']], function () {
  Route::get('/admin', [AdminController::class, 'index']);
});

5. Jalankan Server Laravel

Jalankan server Laravel jika belum berjalan:

php artisan serve

6. Verifikasi Implementasi

Verifikasi bahwa autentikasi bekerja dengan mencoba registrasi dan login sebagai pengguna dengan berbagai peran dan memeriksa akses ke route yang dilindungi.


Kesimpulan

Dengan langkah-langkah di atas, kamu telah mengatur sistem login dan registrasi pengguna dengan Laravel menggunakan paket Spatie Laravel Permission. kamu dapat membuat, menetapkan, dan memeriksa peran dan izin pengguna untuk mengelola akses ke berbagai bagian aplikasi kamu.