intended(route('home')); } return view('login'); } public function login(Request $request) { $rules = [ 'nrk' => 'required|string', 'password' => 'required|string' ]; $messages = [ 'nrk.required' => 'NRK wajib diisi', 'nrk.string' => 'NRK tidak valid', 'password.required' => 'Password wajib diisi', 'password.string' => 'Password harus berupa string' ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput($request->all()); } $credentials = [ 'nrk' => $request->input('nrk'), 'password' => $request->input('password'), ]; if (Auth::attempt($credentials)) { // Cek jika akun terkunci if (Auth::user()->status_lock == 1) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); Session::flash('error', 'Data Terkunci Silahkan Hubungi Admin'); return redirect()->route('login'); } // Regenerasi session ID untuk keamanan (mencegah Session Fixation) $request->session()->regenerate(); // Set List Tahun Anggaran ke Session $taValue = []; for ($i = 2022; $i <= date("Y"); $i++) { $taValue[] = $i; } Session::put('listTA', $taValue); // Alihkan ke URL yang dituju atau ke route home bawaan return redirect()->intended(route('home')); } else { // Login Gagal Session::flash('error', 'NRK atau password salah'); return redirect()->route('login'); } } public function showFormRegister() { return view('register'); } public function register(Request $request) { $rules = [ 'name' => 'required|min:3|max:35', 'nrk' => 'required|min:5|unique:users,nrk', 'password' => 'required|confirmed' ]; $messages = [ 'name.required' => 'Nama Lengkap wajib diisi', 'name.min' => 'Nama lengkap minimal 3 karakter', 'name.max' => 'Nama lengkap maksimal 35 karakter', 'nrk.required' => 'NRK wajib diisi', 'nrk.min' => 'NRK tidak valid', 'nrk.unique' => 'NRK sudah terdaftar', 'password.required' => 'Password wajib diisi', 'password.confirmed' => 'Password tidak sama dengan konfirmasi password' ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput($request->all()); } $user = new User; $user->name = ucwords(strtolower($request->name)); $user->nrk = strtolower($request->nrk); $user->password = Hash::make($request->password); $simpan = $user->save(); $roleUser = new RoleUser; $roleUser->role_id = 3; $roleUser->user_id = $user->id; $roleUser->save(); if ($simpan) { Session::flash('success', 'Register berhasil! Silahkan login untuk mengakses data'); return redirect()->route('login'); } else { Session::flash('errors', ['' => 'Register gagal! Silahkan ulangi beberapa saat lagi']); return redirect()->route('register'); } } public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('login'); } }