diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index bdfb04c..ab4fa9a 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -4,21 +4,19 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Validator; -use Hash; -use Session; +use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Session; use App\Models\User; use App\Models\RoleUser; -use Illuminate\Contracts\Session\Session as SessionSession; class AuthController extends Controller { public function showFormLogin() { if (Auth::check()) { - // True sekalian session field di users nanti bisa dipanggil via Auth - // Login Success - return redirect()->route('home'); + // Jika sudah login, langsung alihkan ke home + return redirect()->intended(route('home')); } return view('login'); } @@ -26,53 +24,57 @@ class AuthController extends Controller public function login(Request $request) { $rules = [ - 'nrk' => 'required|string', - 'password' => 'required|string' + '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' + '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); + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput($request->all()); } - $data = [ - 'nrk' => $request->input('nrk'), - 'password' => $request->input('password'), + $credentials = [ + 'nrk' => $request->input('nrk'), + 'password' => $request->input('password'), ]; - Auth::attempt($data); - - if (Auth::check()) { - if (Auth::user()->status_lock == 1) - { + if (Auth::attempt($credentials)) { + // Cek jika akun terkunci + if (Auth::user()->status_lock == 1) { Auth::logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + Session::flash('eror', 'Data Terkunci Silahkan Hubungi Admin'); return redirect()->route('login'); } - // True sekalian session field di users nanti bisa dipanggil via Auth - // Login Success + + // 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++){ + for ($i = 2022; $i <= date("Y"); $i++) { $taValue[] = $i; } Session::put('listTA', $taValue); - return redirect()->route('home'); - + + // Alihkan ke URL yang dituju atau ke route home bawaan + return redirect()->intended(route('home')); + } else { - // False - // Login Fail + // Login Gagal Session::flash('error', 'NRK atau password salah'); return redirect()->route('login'); } - } public function showFormRegister() @@ -83,33 +85,32 @@ class AuthController extends Controller public function register(Request $request) { $rules = [ - 'name' => 'required|min:3|max:35', - 'nrk' => 'required|min:5|unique:users,nrk', - 'password' => 'required|confirmed' + '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' + '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); + 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); - // $user->email_verified_at = \Carbon\Carbon::now(); $simpan = $user->save(); $roleUser = new RoleUser; @@ -117,7 +118,7 @@ class AuthController extends Controller $roleUser->user_id = $user->id; $roleUser->save(); - if($simpan){ + if ($simpan) { Session::flash('success', 'Register berhasil! Silahkan login untuk mengakses data'); return redirect()->route('login'); } else { @@ -126,9 +127,13 @@ class AuthController extends Controller } } - public function logout() + public function logout(Request $request) { - Auth::logout(); // menghapus session yang aktif + Auth::logout(); + + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('login'); } -} +} \ No newline at end of file diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 3bd3c81..2dfbb11 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider * * @var string */ - public const HOME = '/home'; + public const HOME = '/sidata/home'; /** * The controller namespace for the application. @@ -60,4 +60,4 @@ class RouteServiceProvider extends ServiceProvider return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); }); } -} +} \ No newline at end of file