> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Guía de migración de laravel/ui a Fortify

> Se explican los pasos para migrar solo el backend de autenticación a Fortify en proyectos existentes que usan el scaffold de autenticación de laravel/ui.

## Por qué migrar desde `laravel/ui`

`laravel/ui` sigue funcionando en Laravel 13. De hecho, la última release de `laravel/ui` incluye compatibilidad con Laravel 13.

Sin embargo, el starter kit oficial actual está basado en Fortify. Si continúas operando con `laravel/ui`, te irás separando poco a poco de la posición oficial actual.
Si quieres mantener tu configuración existente Bootstrap + Blade y a la vez aumentar la mantenibilidad futura, la migración del backend de autenticación a Fortify es eficaz.

## Visión general de la migración

Esta migración sustituye **solo el backend de autenticación**. No se necesita una renovación a gran escala de la UI.

* Fortify proporciona las rutas y el procesamiento de autenticación
* Se aprovechan las plantillas Bootstrap + Blade existentes
* Ajusta los `action` y los nombres de input de los formularios en lo necesario

<Info>
  Fortify es un backend de autenticación headless. Como el propio Fortify no ofrece UI, puedes seguir utilizando el Blade existente.
</Info>

## Pasos para instalar Fortify

<Steps>
  <Step title="Añade el paquete Fortify">
    ```bash theme={null}
    composer require laravel/fortify
    ```
  </Step>

  <Step title="Publica los recursos de Fortify">
    ```bash theme={null}
    php artisan fortify:install
    ```
  </Step>

  <Step title="Ejecuta las migraciones">
    ```bash theme={null}
    php artisan migrate
    ```
  </Step>

  <Step title="Elimina las rutas Auth añadidas por `laravel/ui`">
    Elimina `Auth::routes();` o `Auth::routes([...])` de `routes/web.php`. Como Fortify proporciona rutas como `/login`, `/register` y `/forgot-password`, hay que evitar duplicidades.
  </Step>
</Steps>

## Configura `FortifyServiceProvider`

Enlaza las vistas en el `app/Providers/FortifyServiceProvider.php` publicado por `php artisan fortify:install`.
Si vas a usar tal cual el `resources/views/auth` existente, la clave de la migración es la siguiente configuración.

```php theme={null}
use Laravel\Fortify\Fortify;

public function boot(): void
{
    Fortify::viewPrefix('auth.');
    Fortify::requestPasswordResetLinkView('auth.passwords.email');
    Fortify::resetPasswordView('auth.passwords.reset');
    Fortify::confirmPasswordView('auth.passwords.confirm');
    Fortify::verifyEmailView('auth.verify');
}
```

## Modificaciones mínimas de las plantillas Blade

Tras la migración, comprueba los siguientes puntos en el Blade existente.

* Que el `action` del formulario apunte a los endpoints de Fortify (por ejemplo `/login`, `/register`, `/forgot-password`). Como la mayoría se indican por nombre de ruta con `route('login')` o `route('register')`, habrá pocos cambios. Solo `route('verification.resend')` cambia a `route('verification.send')` en Fortify, por lo que hay que modificarlo.

En `auth/passwords/reset.balde.php` hay que modificar dos puntos:

```
<input type="hidden" name="token" value="{{ $token }}">
```

↓

```
<input type="hidden" name="token" value="{{ $request->route('token') }}">
```

```
{{ $email ?? old('email') }}
```

↓

```
{{ old('email', $request->email) }}
```

## Desactivar funcionalidades no necesarias

Las funcionalidades que no existían en `laravel/ui` no se pueden usar, así que desactívalas en `config/fortify.php`. Si preparas nuevos archivos de vista, puedes activarlas.

```php theme={null}
    'features' => [
        Features::registration(),
        Features::resetPasswords(),
        // Features::emailVerification(),
        // Features::updateProfileInformation(),
        // Features::updatePasswords(),
        // Features::twoFactorAuthentication([
        //     'confirm' => true,
        //     'confirmPassword' => true,
            // 'window' => 0,
        // ]),
        // Features::passkeys([
        //     'confirmPassword' => true,
        // ]),
    ],
```

## Lista de comprobación tras la migración

Tras la migración, comprueba al menos lo siguiente.

<Steps>
  <Step title="Verifica login y logout">
    Inicia sesión con un usuario existente y confirma que la sesión se mantiene correctamente.
  </Step>

  <Step title="Verifica el registro">
    Confirma que el registro de nuevo usuario pasa y que se redirige a la pantalla prevista.
  </Step>

  <Step title="Verifica el restablecimiento de contraseña">
    Comprueba todo el flujo: envío del email de restablecimiento, enlace con token y finalización del restablecimiento.
  </Step>
</Steps>

## Beneficios tras la migración

Al hacer esta migración, tu aplicación se acerca a la misma base Fortify del starter kit actual.
Como resultado, en el futuro te resultará más fácil activar 2FA o passkeys.

<Card title="Laravel Fortify y los starter kits" icon="shield-check" href="/es/advanced/fortify">
  Si quieres avanzar al diseño interno de Fortify o hasta la activación de 2FA y passkeys, consulta esta página.
</Card>

## Enlaces de referencia

* [Repositorio de Laravel Fortify](https://github.com/laravel/fortify)
* [Documentación de Fortify de Laravel 13.x](https://github.com/laravel/docs/blob/13.x/fortify.md)
* [FortifyServiceProvider del starter kit de React](https://github.com/laravel/react-starter-kit/blob/main/app/Providers/FortifyServiceProvider.php)


## Related topics

- [Guía de migración de la estructura antigua a la nueva](/es/advanced/app-structure-migration.md)
- [Guía de actualización de Laravel 11 a 12](/es/blog/upgrade-11-to-12.md)
- [Guía de desarrollo de apps con integración de la Engine API - VOICEVOX for Laravel](/es/packages/laravel-voicevox/app-guide.md)
- [Laravel Fortify y los starter kits](/es/advanced/fortify.md)
- [Actualización de Laravel 8 a 9](/es/blog/upgrade-8-to-9.md)
