Mascotas Perdidas Py – Parte IV

28 de noviembre

Vaya que me tomé un tiempo para continuar!

Pero al mal paso darle prisa.

Teniamos pendiente para este post:

  • actualizaremos este formulario de login
  • crearemos un formulario de registro
  • tambien comprobaremos el envio de email al crear una cuenta

Actualizar el formulario de Login

De momento el formulario no hace nada, asi que vamos a darle un poco de vida

Debemos setear lo snombre de variable para nuestros campos de email y password, quedaría como algo así:

<form method="POST" action="{{route('login')}}">
                @csrf
                {{-- <img class="mb-4" src="https://getbootstrap.com/docs/5.3/assets/brand/bootstrap-logo.svg" alt="" width="72" height="57"> --}}
                <h1 class="h3 mb-3 fw-normal">Iniciar Sesion</h1>
                <div class="form-floating">
                    <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com" value="{{old('email')}}" name="email">
                    <label for="floatingInput">Email address</label>
                </div>
                <div class="form-floating">
                    <input type="password" class="form-control" id="floatingPassword" placeholder="Password" name="password">
                    <label for="floatingPassword">Password</label>
                </div>

                <div class="checkbox mb-3">
                    <label>
                        <input type="checkbox" value="remember-me"> Remember me
                    </label>
                </div>
                <button class="w-100 btn btn-lg btn-primary" type="submit">Sign in</button>
                <p class="mt-5 mb-3 text-muted">&copy; 2017–2022</p>
            </form>

Luego a nuestro archivo de rutas le agregamos algunas rutas más

<?php
use App\Http\Controllers\Auth\LoginController;

Route::get('/login', [LoginController::class, 'create'])
    ->middleware(['guest:'.config('fortify.guard')])
    ->name('login');


Route::post('/login', [LoginController::class, 'store'])
    ->middleware(
        array_filter(
            [
                'guest:'.config('fortify.guard'),
                $limiter ? 'throttle:'.$limiter : null,
            ]
        )
    );

Route::post('/logout', [LoginController::class, 'destroy'])
        ->name('logout');

Route::get('/home',function(){
    echo 'Hola esto es home';
    echo "<form method='post' action='".route('logout')."'><input type='submit' value='Salir'>".csrf_field() ."</form>";

});

con esto tendremos las rutas para login, logout y un formulario para probar el logout

También debemos crear nuestro LoginController dentro de la carpeta Auth, esto para el caso que quisiéramos reemplazar o aumentar la lógica dentro del login y logout que ya maneja Fortify por nosotros.

<?php

namespace App\Http\Controllers\Auth;
use Laravel\Fortify\Http\Controllers\AuthenticatedSessionController;
use Laravel\Fortify\Http\Requests\LoginRequest;
use Illuminate\Http\Request;
use Laravel\Fortify\Contracts\LoginViewResponse;
use Laravel\Fortify\Contracts\LogoutResponse;

class LoginController extends AuthenticatedSessionController{

    public function store(LoginRequest $request){
        // dd($request);
        return parent::store($request);
        // $this->store($request);
    }

    /**
     * Show the login view.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Laravel\Fortify\Contracts\LoginViewResponse
     */
    public function create(Request $request): LoginViewResponse
    {
        return parent::create($request);
    }

    /**
     * Destroy an authenticated session.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Laravel\Fortify\Contracts\LogoutResponse
     */
    public function destroy(Request $request): LogoutResponse
    {
        return parent::destroy($request);
    }
}

Por ahora entonces tenemos funcionando el formulario de login, que luego de proceder correctamente nos muestra nuestro Home provisional

Para la siguiente entrada veremos si podemos implementar:

  • Un formulario de registro
  • Tambien comprobaremos el envio de email al crear una cuenta para la confirmación