Skip to main content

⚙️ 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_URL ni FUSIONAUTH_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:

  • resources/menu/verticalMenu.json
  • resources/menu/horizontalMenu.json

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:

https://spatie.be/docs/laravel-permission/v7/introduction