middleware('guest')->except('logout'); } /** * Menampilkan halaman login * * @return \Illuminate\View\View */ public function showLoginForm() { return view('login'); } /** * Menampilkan halaman register * * @return \Illuminate\View\View */ public function showRegisterForm(Request $request) { $paket_id = $request->query('paket_id'); return view('auth.register', compact('paket_id')); } /** * Proses registrasi user baru * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function register(Request $request) { $validator = Validator::make($request->all(), [ 'nama' => 'required|string|max:255', 'username' => 'required|string|max:255|unique:users', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', 'alamat' => 'required|string', 'no_telp' => 'required|string|max:20', 'agree' => 'required|accepted' ], [ 'nama.required' => 'Nama lengkap harus diisi', 'username.required' => 'Username harus diisi', 'username.unique' => 'Username sudah digunakan', 'email.required' => 'Email harus diisi', 'email.email' => 'Format email tidak valid', 'email.unique' => 'Email sudah terdaftar', 'password.required' => 'Password harus diisi', 'password.min' => 'Password minimal 8 karakter', 'password.confirmed' => 'Konfirmasi password tidak sesuai', 'alamat.required' => 'Alamat harus diisi', 'no_telp.required' => 'Nomor telepon harus diisi', 'agree.required' => 'Anda harus menyetujui syarat dan ketentuan', 'agree.accepted' => 'Anda harus menyetujui syarat dan ketentuan' ]); if ($validator->fails()) { return redirect()->back() ->withErrors($validator) ->withInput(); } $user = User::create([ 'nama' => $request->nama, 'username' => $request->username, 'email' => $request->email, 'password' => Hash::make($request->password), 'alamat' => $request->alamat, 'no_telp' => $request->no_telp, 'tipe_pengguna' => 'user' ]); auth()->login($user); // Jika ada paket_id, redirect ke halaman sewa if ($request->has('paket_id')) { return redirect()->route('sewa.paket', $request->paket_id); } return redirect()->route('dashboard')->with('success', 'Registrasi berhasil! Selamat datang di INUFA.'); } /** * Proses login * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function login(Request $request) { $validator = Validator::make($request->all(), [ 'email' => 'required|email', 'password' => 'required' ]); if ($validator->fails()) { return back() ->withErrors($validator) ->withInput($request->except('password')); } $credentials = $request->only('email', 'password'); $remember = $request->has('remember'); if (Auth::attempt($credentials, $remember)) { $request->session()->regenerate(); // Redirect ke URL yang dituju sebelumnya atau ke dashboard return redirect()->intended(route('dashboard')) ->with('success', 'Selamat datang kembali!'); } return back() ->withErrors([ 'email' => 'Email atau password salah.', ]) ->withInput($request->except('password')); } /** * Proses logout * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect()->route('login') ->with('success', 'Anda telah berhasil logout.'); } }