From 528af5bbfe310a500477bbfa32a4c74bcf415ef7 Mon Sep 17 00:00:00 2001 From: Coassolo-Lucas Date: Fri, 15 Aug 2025 13:13:52 -0300 Subject: [PATCH] Login y Register MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cambios: index.html agregarle el botón de login y register cambie el usuario de prueba a admin admin@laravel.com rutas de login y register y los controladores --- app/Http/Controllers/HomeController.php | 2 +- app/Http/Controllers/LoginController.php | 28 ++ app/Http/Controllers/RegisterController.php | 29 ++ database/seeders/DatabaseSeeder.php | 8 +- resources/views/dashboard.blade.php | 6 + resources/views/home.blade.php | 16 -- resources/views/login.blade.php | 60 ++++ resources/views/register.blade.php | 56 ++++ resources/views/welcome.blade.php | 289 ++------------------ routes/web.php | 24 ++ 10 files changed, 226 insertions(+), 292 deletions(-) create mode 100644 app/Http/Controllers/LoginController.php create mode 100644 app/Http/Controllers/RegisterController.php create mode 100644 resources/views/dashboard.blade.php delete mode 100644 resources/views/home.blade.php create mode 100644 resources/views/login.blade.php create mode 100644 resources/views/register.blade.php diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 7675e93..dbaf3e2 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -8,6 +8,6 @@ class HomeController extends Controller { public function __invoke() // * Controlador con un unico metodo se usa __invoke { - return view('home'); + return view('welcome'); } } diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php new file mode 100644 index 0000000..d198e28 --- /dev/null +++ b/app/Http/Controllers/LoginController.php @@ -0,0 +1,28 @@ +validate([ + 'email' => ['required', 'email'], + 'password' => ['required'], + ]); + + if (Auth::attempt($credentials)) { + $request->session()->regenerate(); + + return redirect()->intended('dashboard'); + } + + return back()->withErrors([ + 'email' => 'Los datos no coinciden.', + ])->onlyInput('email'); + } +} diff --git a/app/Http/Controllers/RegisterController.php b/app/Http/Controllers/RegisterController.php new file mode 100644 index 0000000..7dc5bde --- /dev/null +++ b/app/Http/Controllers/RegisterController.php @@ -0,0 +1,29 @@ +validate([ + 'name' => ['required', 'string'], + 'email' => ['required', 'email'], + 'password' => ['required', 'confirmed'] + ]); + + $userData['password'] = bcrypt($userData['password']); + + $user = User::create($userData); + + Auth::login($user); + + return redirect()->route('dashboard'); + + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 195c54c..db087de 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -14,12 +14,14 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // User::factory(10)->create(); + User::factory(10)->create(); User::factory()->create([ - 'name' => 'Test User', - 'email' => 'test@example.com', + 'name' => 'admin', + 'email' => 'admin@laravel.com', + 'password' => 'admin' ]); + Product::factory(50)->create(); } } diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php new file mode 100644 index 0000000..1b0b21e --- /dev/null +++ b/resources/views/dashboard.blade.php @@ -0,0 +1,6 @@ + +

BIENVENIDO {{Auth::user()->name}}

+
+ @csrf + +
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php deleted file mode 100644 index 99b6bc0..0000000 --- a/resources/views/home.blade.php +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - Laravel 12 - - -
-
- Tas viendo el homepage -
-
- - \ No newline at end of file diff --git a/resources/views/login.blade.php b/resources/views/login.blade.php new file mode 100644 index 0000000..d207a3f --- /dev/null +++ b/resources/views/login.blade.php @@ -0,0 +1,60 @@ + + + + + + + Bicicletería Lauck - Inicio de sesión + + + + + +
+ +

+ Bicicletería Lauck +

+ + +
+
+ @csrf + + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ + +
+ +
+ + +
+ +
+ +
+ +

+ ¿No tienes una cuenta? Regístrate acá. +

+
+
+
+ + + + diff --git a/resources/views/register.blade.php b/resources/views/register.blade.php new file mode 100644 index 0000000..4cc5c48 --- /dev/null +++ b/resources/views/register.blade.php @@ -0,0 +1,56 @@ + + + + + + Bicicletería Lauck - Registro + + + + +
+ +

+ Bicicletería Lauck +

+ + +
+

Registrarse

+

Por favor completá el formulario para crear una cuenta.

+ +
+ @csrf +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +

+ ¿Ya tenés una cuenta? Iniciá sesión acá. +

+
+
+
+ + + diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 522d79b..413c46b 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,275 +1,20 @@ - - - - - - Laravel - - - - - - - @if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot'))) - @vite(['resources/css/app.css', 'resources/js/app.js']) - @else - - @endif - - -
- @if (Route::has('login')) - - @endif -
-
-
-
-

Let's get started

-

Laravel has an incredibly rich ecosystem.
We suggest starting with the following.

- - -
-
- {{-- Laravel Logo --}} - - - - - - - - - - - {{-- Light Mode 12 SVG --}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{-- Dark Mode 12 SVG --}} - -
-
-
+ + + + + + Laravel 12 + + +
+
+

Homepage

+
- - @if (Route::has('login')) - - @endif - +
+ diff --git a/routes/web.php b/routes/web.php index b9a3a88..a058103 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,11 +1,35 @@ name('login'); + +Route::post('login', LoginController::class)->name('login.attempt'); + +Route::view('dashboard', 'dashboard')->name('dashboard'); + +Route::post('logout', function(){ + Auth::guard('web')->logout(); + + Session::invalidate(); + Session::regenerateToken(); + + return redirect('/'); +})->name('logout'); + +Route::view('register', 'register')->name('register'); +Route::post('register', RegisterController::class)->name('register.store'); Route::get('/productos',[ProductosController::class,'index'])->name('productos.index'); Route::get('/productos/create',[ProductosController::class,'create'])->name('productos.create');