⚙️ Configuración Técnica de Integración
A continuación, se describen los pasos necesarios para integrar la Aplicación de Usuarios con FusionAuth en un proyecto Laravel existente.
Configuración de servicios (config/services.php)
Reemplazar la configuración de `fusionauth` con la siguiente estructura:
'fusionauth' => [
'client_id' => env('FUSIONAUTH_CLIENT_ID'),
'client_secret' => env('FUSIONAUTH_CLIENT_SECRET'),
'redirect' => env('FUSIONAUTH_REDIRECT_URI'),
'base_url' => env('FUSIONAUTH_BASE_URL'),
'tenant_id' => env('FUSIONAUTH_TENANT_ID'),
'redirect_home' => env('FUSIONAUTH_REDIRECT_HOME'),
'url_logout' => env('FUSIONAUTH_URL_LOGOUT'),
]
Variables de entorno (.env)
Agregar las siguientes variables de entorno:
FUSIONAUTH_CLIENT_ID=tu_client_id
FUSIONAUTH_CLIENT_SECRET=tu_client_secret
FUSIONAUTH_REDIRECT_URI=${APP_URL}/autenticacion/callback
FUSIONAUTH_BASE_URL=https://acceso.tamaulipas.gob.mx
FUSIONAUTH_TENANT_ID=d9220956-99f7-431f-8de1-de37e65488a8
FUSIONAUTH_REDIRECT_HOME="/inicio"
FUSIONAUTH_URL_LOGOUT="${FUSIONAUTH_BASE_URL}/oauth2/logout?client_id=${FUSIONAUTH_CLIENT_ID}"
⚠️ Importante:
- No modificar
FUSIONAUTH_REDIRECT_URI,FUSIONAUTH_BASE_URLniFUSIONAUTH_TENANT_ID- La URI de callback debe coincidir exactamente con la configurada en FusionAuth
Registro del Provider de Socialite
En el archivo:
app/Providers/EventServiceProvider.php
Agregar (solo si no existe):
protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
\SocialiteProviders\FusionAuth\FusionAuthExtendSocialite::class . '@handle',
],
];
Instalación de dependencias
Agregar la dependencia en composer.json:
"aiidt/autenticacion-module": "^1.1"
Instalar dependencias:
composer update
O bien:
composer require aiidt/autenticacion-module
Configuración del Modelo User
Agregar campos a $fillable
protected $fillable = [
'name',
'email',
'profile_photo_url',
'password',
'fusionauth_id',
'fusionauth_access_token',
'fusionauth_refresh_token',
'data',
'registration_data',
];
Agregar casting de datos
protected $casts = [
'data' => 'array',
'registration_data' => 'array',
];
Modificación de la tabla users
Se debe agregar el campo registration_data para almacenar información adicional del usuario.
Opción A: Mediante migración (Recomendado)
Crear migración:
php artisan make:migration add_registration_data_to_users_table --table=users
Editar migración:
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->json('registration_data')->nullable()->after('fusionauth_refresh_token');
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('registration_data');
});
}
Ejecutar migración:
php artisan migrate
Opción B: Modificación directa (SQL)
ALTER TABLE users
ADD COLUMN registration_data JSON NULL
AFTER fusionauth_refresh_token;
Configuración de Menú
Se deberá agregar un acceso a la aplicación de administración de usuarios en los menús del sistema.
Editar los siguientes archivos:
Agregar una nueva entrada apuntando a:
https://acceso.tamaulipas.gob.mx/admin-usuarios/
💡 Se recomienda ubicar esta opción dentro de una sección administrativa o de configuración, dependiendo de la estructura del sistema.
Manejo de Roles y Permisos
A partir de esta integración, se podrá hacer uso de las directivas de roles y permisos proporcionadas por Spatie.
Esto permite:
- Controlar accesos a vistas mediante directivas Blade
- Restringir rutas y acciones por rol o permiso
- Gestionar autorizaciones de forma centralizada
Ejemplo de uso en Blade:
@role('admin')
<!-- Contenido solo para administradores -->
@endrole
@can('editar usuarios')
<!-- Contenido con permiso específico -->
@endcan
Para más información sobre el uso y configuración de roles y permisos, se recomienda revisar la documentación oficial de Spatie:
No Comments