Diferencia entre revisiones de «Usuario:ManuelRomero/Laravel/autentificacion/fortifyWithInertia»

De WikiEducator
Saltar a: navegación, buscar
(Pasos básicoa)
 
(4 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
===Pasos básicoa===
+
===Referencias Web===
 
*Instalación básica (ver wikis anteriores)
 
*Instalación básica (ver wikis anteriores)
 
{{Web| Title=Referencia oficial|
 
{{Web| Title=Referencia oficial|
https://jetstream.laravel.com/2.x/features/authentication.html
+
https://jetstream.laravel.com/2.x/features/authentication.html
 +
https://laravel.com/docs/9.x/fortify
 +
}}
 +
{{Web| Title=Vídeo de aprendibles|
 +
*Muy buena documentación explicado de forma clara y en castellano
 +
https://aprendible.com/series/autenticacion/lecciones/laravel-ui-breeze-fortify-jetstream-sanctum-y-passport
 
}}
 
}}
 
*Tengo un problema con redirect, aquí una posible solución
 
*Tengo un problema con redirect, aquí una posible solución
Línea 9: Línea 14:
 
https://stackoverflow.com/questions/64147160/laravel-8-jetstream-stack-inertia-redirect-to-home-after-login-instead-of-user
 
https://stackoverflow.com/questions/64147160/laravel-8-jetstream-stack-inertia-redirect-to-home-after-login-instead-of-user
 
}}
 
}}
 +
 +
===Pasos básicos===
 +
*Instalamos
 
<source lang=bash>
 
<source lang=bash>
 
  laravel new auth-inertia --jet
 
  laravel new auth-inertia --jet
Línea 15: Línea 23:
 
{{Tip|El terminal queda ejecutando '''''vite''''' para el cliente, abrimos otro para el shell}}
 
{{Tip|El terminal queda ejecutando '''''vite''''' para el cliente, abrimos otro para el shell}}
 
*Fortity, ya viene instalado junto con el paquete de '''''jetstream''''', por lo que no hay que instalarlo de forma explícita. La información para la instalación de fortity '''''https://laravel.com/docs/9.x/fortify'''''
 
*Fortity, ya viene instalado junto con el paquete de '''''jetstream''''', por lo que no hay que instalarlo de forma explícita. La información para la instalación de fortity '''''https://laravel.com/docs/9.x/fortify'''''
*Actualizamos el fichero '''''env''''' para la conexión a la base de datos
+
*Actualizamos el fichero '''''.env''''' para la conexión a la base de datos
*Ejecutamos las migraciones
+
*Ejecutamos las migraciones que ya vienen creadas en la instalación
 
<source lang=bash>
 
<source lang=bash>
 
  php artisan migrate  
 
  php artisan migrate  
 +
</source>
 +
===Qué tenemos===
 +
;Controladores
 +
;Vistas
 +
;Modelos (base de datos)
 +
===Cómo personalizarlo===
 +
{{MRM_Objetivo|
 +
 +
*Que autentifique con otra tabla que no se llame users, por ejemplo alumnos
 +
*Que autentifique con otro campo que no sea email, por ejemplo dni
 +
*Que utilice una vista personalizada
 +
}}
 +
 +
===Cómo interactúan y cómo personalizarlo===
 +
*Creo una aplicación
 +
<source lang=bash>
 +
laravel new auth --jet
 +
</source>
 +
;Modificando la tabla donde vamos a guardar datos de logueo
 +
 +
1.- Creo la tabla donde quiero hacer el logueo
 +
<source lang=php>
 +
    Schema::create('alumnos', function (Blueprint $table) {
 +
            $table->id();
 +
            $table->string('name');
 +
            $table->string('email')->unique();
 +
            $table->timestamp('email_verified_at')->nullable();
 +
            $table->string('password');
 +
            $table->rememberToken();
 +
            $table->foreignId('current_team_id')->nullable();
 +
            $table->string('profile_photo_path', 2048)->nullable();
 +
            $table->timestamps();
 +
        });
 +
</source>
 +
*Creo dicho modelo que tiene que ser Authenticatable (lo mejor para probarlo, copiarlo del modelo user
 +
 +
 +
*Modifico en config/auth.php el modelo que vamos a utilizar para la autenticacion
 +
<source lang=php>
 +
'providers' => [
 +
        'users' => [
 +
            'driver' => 'eloquent',
 +
            'model' => App\Models\Alumno::class,
 +
        ],
 +
 +
</source>
 +
*Si quiero que al registrar se guarde sobre esta tabla, he de modificar app/Action/Fortity/CreateNewUser.php, creando la nueva tupla sobre el modelo especificado, en este caso Alumno, en lugar de User.
 +
 +
;Creamos el modelo sobre el que queremos hacer el logueo
 +
 +
 +
;Estableciendo el campo sobre el que queremos establecer la autenticación
 +
 +
;Escribiendo las vistas
 +
 +
;Redirigiendo una vez logueado o estableciendo mensaje de error
 +
 +
;Controlando los datos del model
 +
<source lang=php>
 +
 
</source>
 
</source>

Última revisión de 08:03 12 nov 2022

Referencias Web

  • Instalación básica (ver wikis anteriores)




Icon inter.gif

Vídeo de aprendibles

  • Muy buena documentación explicado de forma clara y en castellano
https://aprendible.com/series/autenticacion/lecciones/laravel-ui-breeze-fortify-jetstream-sanctum-y-passport


  • Tengo un problema con redirect, aquí una posible solución



Pasos básicos

  • Instalamos
 laravel new auth-inertia --jet
Icon present.gif
Tip: Seleccionamos Inertia y opciones por defecto


Icon present.gif
Tip: El terminal queda ejecutando vite para el cliente, abrimos otro para el shell


  • Fortity, ya viene instalado junto con el paquete de jetstream, por lo que no hay que instalarlo de forma explícita. La información para la instalación de fortity https://laravel.com/docs/9.x/fortify
  • Actualizamos el fichero .env para la conexión a la base de datos
  • Ejecutamos las migraciones que ya vienen creadas en la instalación
 php artisan migrate

Qué tenemos

Controladores
Vistas
Modelos (base de datos)

Cómo personalizarlo

Icon objectives.jpg
Objetivo
  • Que autentifique con otra tabla que no se llame users, por ejemplo alumnos
  • Que autentifique con otro campo que no sea email, por ejemplo dni
  • Que utilice una vista personalizada


Cómo interactúan y cómo personalizarlo

  • Creo una aplicación
laravel new auth --jet
Modificando la tabla donde vamos a guardar datos de logueo

1.- Creo la tabla donde quiero hacer el logueo

    Schema::create('alumnos', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->foreignId('current_team_id')->nullable();
            $table->string('profile_photo_path', 2048)->nullable();
            $table->timestamps();
        });
  • Creo dicho modelo que tiene que ser Authenticatable (lo mejor para probarlo, copiarlo del modelo user


  • Modifico en config/auth.php el modelo que vamos a utilizar para la autenticacion
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Alumno::class,
        ],
  • Si quiero que al registrar se guarde sobre esta tabla, he de modificar app/Action/Fortity/CreateNewUser.php, creando la nueva tupla sobre el modelo especificado, en este caso Alumno, en lugar de User.
Creamos el modelo sobre el que queremos hacer el logueo


Estableciendo el campo sobre el que queremos establecer la autenticación
Escribiendo las vistas
Redirigiendo una vez logueado o estableciendo mensaje de error
Controlando los datos del model