Initial commit: Sistema de comisiones y gastos personales

This commit is contained in:
2026-04-19 09:59:57 -06:00
commit dc964d6bce
103 changed files with 15859 additions and 0 deletions

View File

@@ -0,0 +1,101 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
class AuthController extends Controller
{
/**
* Mostrar formulario de login
*/
public function showLoginForm()
{
return view('auth.login');
}
/**
* Procesar login
*/
public function login(Request $request)
{
$credentials = $request->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');
}
}