diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php
index 3a959cc..30d907f 100644
--- a/app/Http/Controllers/Auth/RegisteredUserController.php
+++ b/app/Http/Controllers/Auth/RegisteredUserController.php
@@ -17,9 +17,13 @@ class RegisteredUserController extends Controller
/**
* Menampilkan halaman registrasi.
*/
- public function create(): View
+ public function create(Request $request): View
{
- return view('auth.register');
+ // Bagian Pengambilan Role dari URL
+ $role = $request->query('role', 'siswa'); // Ambil 'role' dari URL, default ke 'siswa'
+
+ // Kirim $role ke view
+ return view('auth.register', ['role' => $role]);
}
/**
@@ -27,27 +31,52 @@ public function create(): View
*/
public function store(Request $request): RedirectResponse
{
- $request->validate([
- 'name' => ['required', 'string', 'max:255'],
- 'email' => ['required', 'string', 'lowercase', 'email', 'max:255'],
- 'password' => ['required', 'confirmed', Rules\Password::defaults()],
- 'role' => ['required', 'in:penjaga perpus,siswa'],
- ]);
+ // Bagian Validasi Dinamis
+ $role = $request->input('role');
- $user = new User();
- $user->forceFill([
- 'id' => rand(100, 999),
+ $rules = [
+ 'name' => ['required', 'string', 'max:255'],
+ 'password' => ['required', 'confirmed', Rules\Password::defaults()],
+ 'role' => ['required', 'in:siswa,guru'], // Sesuaikan dengan role yang diizinkan
+ ];
+
+ // Tambahkan validasi NISN atau NIP berdasarkan role
+ if ($role === 'siswa') {
+ $rules['nisn'] = ['required', 'string', 'max:255']; // Tambahkan 'unique:users' jika perlu
+ } else { // Asumsi 'guru'
+ $rules['nip'] = ['required', 'string', 'max:255']; // Tambahkan 'unique:users' jika perlu
+ }
+
+ $request->validate($rules);
+
+ // Bagian Pembuatan User
+ $userArray = [
+ 'id' => rand(100, 999), // ID unik sementara
'nama_lengkap' => $request->name,
'name' => $request->name,
- 'email' => $request->email,
- 'password' => $request->password,
+ 'password' => Hash::make($request->password), // Gunakan Hash jika login Anda sudah pakai Hash
+ // 'password' => $request->password, // Gunakan ini jika login (LoginRequest) masih cek teks biasa
'role' => $request->role,
- ]);
+ ];
+
+ // Tambahkan field dinamis (NISN/NIP) dan buat email unik palsu
+ if ($role === 'siswa') {
+ $userArray['nisn'] = $request->nisn;
+ $userArray['email'] = $request->nisn . '@smkn1perpus.sch.id'; // Email unik sementara
+ } else {
+ $userArray['nip'] = $request->nip;
+ $userArray['email'] = $request->nip . '@smkn1perpus.sch.id'; // Email unik sementara
+ }
+
+ $user = new User();
+ $user->forceFill($userArray);
+ // $user->save(); // Aktifkan ini jika menggunakan database
event(new Registered($user));
Auth::login($user);
+ // Bagian Redirect
if ($user->role === 'penjaga perpus') {
return redirect()->route('admin.dashboard');
} else {
diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php
index 3f85176..fc9d73e 100644
--- a/app/Http/Requests/Auth/LoginRequest.php
+++ b/app/Http/Requests/Auth/LoginRequest.php
@@ -52,7 +52,7 @@ public function rules(): array
*/
public function authenticate(): void
{
- // Langkah 1: Pastikan pengguna tidak mencoba login terlalu sering (mencegah brute-force).
+ // Pastikan pengguna tidak mencoba login terlalu sering (mencegah brute-force).
$this->ensureIsNotRateLimited();
// Ambil data yang dikirim dari form login.
@@ -64,7 +64,7 @@ public function authenticate(): void
// Tentukan field mana yang akan menerima pesan error jika gagal (nisn atau email).
$errorField = $this->filled('nisn') ? 'nisn' : 'nip';
- // Langkah 2: Cari data pengguna berdasarkan input yang diberikan.
+ // Cari data pengguna berdasarkan input yang diberikan.
if ($this->filled('nisn')) {
// Jika form diisi dengan 'nisn', cari pengguna berdasarkan 'nisn'.
$userArray = collect($allUsers)->firstWhere('nisn', $this->input('nisn'));
@@ -73,14 +73,12 @@ public function authenticate(): void
$userArray = collect($allUsers)->firstWhere('nip', $this->input('nip'));
}
- // Langkah 3: Lakukan Pengecekan Kredensial dan Role.
- // Cek #1: Apakah pengguna ditemukan DAN password yang dimasukkan cocok?
+ // Lakukan Pengecekan Kredensial dan Role.
if ($userArray && $userArray['password'] === $inputPassword) {
// Cek #2: Jika kredensial benar, apakah role pengguna sesuai dengan form yang digunakan?
if (isset($userArray['role']) && $userArray['role'] === $roleDariForm) {
- // --- SEMUA SYARAT TERPENUHI ---
// Buat objek User dari data dummy.
$userModel = new User();
$userArray['name'] = $userArray['nama_lengkap'];
@@ -94,7 +92,6 @@ public function authenticate(): void
return; // Proses autentikasi berhasil.
} else {
- // --- KASUS GAGAL: KREDENSIAL BENAR, TAPI ROLE SALAH ---
// Tambah hitungan percobaan login yang gagal.
RateLimiter::hit($this->throttleKey());
@@ -108,7 +105,6 @@ public function authenticate(): void
}
}
- // --- KASUS GAGAL: KREDENSIAL TIDAK COCOK ---
// Jika pengguna tidak ditemukan atau password salah.
RateLimiter::hit($this->throttleKey());
throw ValidationException::withMessages([
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index edef6cb..3eb1e75 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -28,7 +28,7 @@
+ @if ($role == 'siswa') + Belum punya akun? + Daftar sebagai Siswa + @else + Belum punya akun? + Daftar sebagai Guru + @endif +
+ +Kembali ke halaman utama.
- + \ No newline at end of file diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 3809b38..5d65e5c 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -2,11 +2,16 @@ \ No newline at end of file