query('role', 'siswa'); return view('auth.register', ['role' => $role]); } public function store(Request $request): RedirectResponse { $role = $request->input('role'); $rules = [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'confirmed', Rules\Password::defaults()], 'role' => ['required', 'in:siswa,guru'], ]; if ($role === 'siswa') { $rules['nisn'] = ['required', 'string', 'max:255', 'unique:users,nisn']; } else { $rules['nip'] = ['required', 'string', 'max:255', 'unique:users,nip']; } $request->validate($rules); $nomorInduk = ($role === 'siswa') ? $request->nisn : $request->nip; $isWhitelisted = MasterInduk::where('nomor_induk', $nomorInduk) ->where('role', $role) ->exists(); if (!$isWhitelisted) { throw ValidationException::withMessages([ ($role === 'siswa' ? 'nisn' : 'nip') => ['Nomor induk tidak terdaftar di Data Sekolah. Hubungi petugas.'], ]); } $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), 'role' => $role, 'nisn' => ($role === 'siswa') ? $nomorInduk : null, 'nip' => ($role === 'guru') ? $nomorInduk : null, ]); event(new Registered($user)); Auth::login($user); return redirect()->route('dashboard'); } }