validate([ 'username' => ['required', 'string'], 'password' => ['required'], ]); $user = User::where('username', $credentials['username'])->first(); if (!$user || !Hash::check($credentials['password'], $user->password)) { throw ValidationException::withMessages([ 'username' => ['Las credenciales no coinciden con nuestros registros.'], ]); } if (!$user->is_active) { throw ValidationException::withMessages([ 'username' => ['Tu cuenta está inactiva. Contacta al administrador.'], ]); } Auth::login($user, $request->boolean('remember')); $request->session()->regenerate(); return redirect()->intended('/'); } /** * Mostrar formulario de registro */ public function showRegisterForm() { return view('auth.register'); } /** * Procesar registro */ public function register(Request $request) { $validated = $request->validate([ 'username' => ['required', 'string', 'max:50', 'unique:users,username'], 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'unique:users,email'], 'password' => ['required', 'confirmed', 'min:8'], 'commission_percentage' => ['required', 'numeric', 'min:0', 'max:100'], 'monthly_salary' => ['required', 'numeric', 'min:0'], ]); $user = User::create([ 'username' => $validated['username'], 'name' => $validated['name'], 'email' => $validated['email'], 'password' => $validated['password'], 'commission_percentage' => $validated['commission_percentage'], 'monthly_salary' => $validated['monthly_salary'], 'is_active' => true, ]); Auth::login($user); return redirect('/'); } /** * Cerrar sesión */ public function logout(Request $request) { Auth::logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/login'); } }