Download the PHP package mevisoft/auth-accounts-luisml without Composer

On this page you can find all versions of the php package mevisoft/auth-accounts-luisml. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package auth-accounts-luisml

mevisoft/auth-accounts-luisml

Cliente Laravel de Accounts LuisML: «Continuar con LuisML» (OpenID Connect con PKCE) y control central de sesión. La app deja de gestionar contraseñas; Accounts decide quién entra y cuánto dura la sesión.

Requisitos: PHP ^8.2 y Laravel ^11, ^12 o ^13.

Instalación

  1. Instala el paquete (publicado en Packagist; hoy solo existe dev-main, de ahí el @dev):

  2. Prepara el entorno y las migraciones:

    Añade ACCOUNTS_* a .env y .env.example (sin tocar las que ya existan), ejecuta la migración (accounts_issuer y accounts_sub en users, únicas juntas) e imprime el callback exacto que debes registrar.

  3. Registra la app en Accounts (/admin/applications) con ese callback exacto (HTTPS en producción). Copia el client id y el secreto (se muestra una sola vez) a .env:

    ACCOUNTS_HOME es el destino tras entrar cuando no hay otro, y donde aterriza el cierre de sesión.

  4. Protege las rutas:

  5. Ofrece el acceso: un enlace o botón a route('accounts.login') (/auth/accounts/redirect). Con Wayfinder: import { login } from '@/routes/accounts' y login.url(). No uses accounts.callback como enlace: es el retorno de OAuth y exige code y state.

  6. Cierre de sesión: haz POST a route('accounts.logout'). Destruye la sesión local y revoca el acceso en Accounts (si no puede confirmarlo, un job lo reintenta). No afecta a otras apps ni a otros navegadores.

Rutas que registra el paquete

Nombre Ruta Uso
accounts.login GET /auth/accounts/redirect Inicia el login (PKCE, state, nonce).
accounts.callback GET /auth/accounts/callback Retorno de Accounts. No enlazar.
accounts.logout POST /auth/accounts/logout Cierre de sesión con revocación.
accounts.backchannel-logout POST /auth/accounts/backchannel-logout Aviso de Accounts de que una sesión terminó. Sin cookies ni CSRF. No enlazar.

El prefijo se cambia con accounts.routes.prefix.

Middleware

Los reportes de actividad pueden prolongar la sesión central, pero no reinician el plazo de introspección. Así, una persona que navega continuamente también recibe los cambios de perfil y roles.

La renovación de tokens requiere una caché persistente compartida por los workers, con soporte de locks. Además del bloqueo, se conserva el resultado cifrado por generación de tokens durante al menos la duración de la sesión local: las peticiones que ya cargaron una copia antigua de la sesión reutilizan ese resultado. Un resultado ambiguo obliga a autorizar de nuevo. La protección depende de que esos registros no se pierdan ni se eliminen de la caché durante ese plazo; array sirve solo para pruebas.

Cierre de sesión central

Los reintentos de revocación necesitan una cola persistente y un worker. Con sync no hay reintentos durables. Una caída de la cola no impide cerrar la sesión local; el mensaje indica cuando no se pudo programar el reintento.

Roles

Accounts asigna a cada cuenta roles gruesos por aplicación (por ejemplo admin). Se copian al iniciar sesión y se mantienen al día con la misma sincronización del perfil (en ≤60 s). En el modelo de usuario:

Los roles compartidos de Accounts están en LuisML\AccountsClient\Roles (OWNER, ADMIN y MEMBER). Cada app puede ofrecer además roles propios, que se leen como cadenas.

Si Accounts no manda roles, la persona queda sin roles (falla cerrado). Los permisos finos siguen siendo de cada app.

Entrada y login

El paquete registra GET /login (nombre login, desactivable con accounts.routes.login = false): lleva al invitado directo a Accounts. Si vuelve a /login en menos de 30 s (el callback falló y la página protegida lo rebotó), muestra un botón manual en lugar de redirigir de nuevo, así que una caída de Accounts nunca provoca un bucle.

Perfil central

El nombre, el correo y la contraseña se editan solo en Accounts. Las apps no deben ofrecer su propio formulario para esos datos: enlaza a accounts_account_url() (por defecto {ACCOUNTS_ISSUER}/account, configurable con ACCOUNTS_ACCOUNT_URL).

Los cambios llegan a la copia local sin que la persona vuelva a iniciar sesión: la introspección que accounts.access hace cada ≤60 s devuelve una huella del perfil (accounts_profile_version); si cambia, el paquete lee UserInfo y actualiza el usuario con tu user_resolver. Si UserInfo falla, la petición sigue y se reintenta en la siguiente validación.

Usuarios

La identidad se vincula por (issuer, sub), nunca por correo: un usuario local con el mismo correo no se toma ni se enlaza. Un usuario nuevo se crea al primer login, con el correo ya verificado por Accounts.

Para hacer algo más al crear o vincular (p. ej. un equipo personal), indica tu propio resolver en config/accounts.php:

Es una clase invocable que recibe LuisML\AccountsClient\Identity y devuelve un Authenticatable (o null para rechazar):

Los roles y permisos siguen siendo locales a cada app: entrar con Accounts no concede ningún rol de negocio.

Quitar el login propio

Para que Accounts sea el único acceso (como «Iniciar sesión con Google»):

php artisan accounts:install detecta estos restos de autenticación local y los lista (no borra nada por defecto). Con --remove-auth borra las páginas, componentes, controlador, requests y tests de registro, recuperación de contraseña, verificación de correo, 2FA, passkeys y seguridad, y vacía features en config/fortify.php; pide confirmación (--force la omite). Un archivo que otro código todavía usa (p. ej. SecurityController desde routes/settings.php) no se borra: se avisa de quién lo usa para que lo edites antes. Lo demás (el FortifyServiceProvider, las rutas de seguridad, enlaces de registro, el menú de usuario) se imprime como pasos manuales porque depende de cada app.

Opciones de accounts:install

Opción Qué hace
(sin opciones) Añade las variables que falten, informa de los restos de login local, de los grupos de rutas con auth sin accounts.access, de imports del frontend a rutas que ya no existen y de variables vacías. No borra ni reescribe nada salvo .env/.env.example (añadir variables) y un import '@inertiajs/core' en global.d.ts si el borrado lo dejó huérfano.
--migrate Ejecuta las migraciones.
--protect-routes Añade accounts.access y accounts.activity a cada middleware([... 'auth' ...]) de routes/*.php que no los tenga. Es idempotente.
--remove-auth Borra los restos de login local y vacía features de Fortify (con confirmación; --force la omite).
--test-helper Añade a tests/TestCase.php un actingAs() que abre una sesión de Accounts validada.
--check Pide /.well-known/openid-configuration al issuer, comprueba que su issuer coincide con ACCOUNTS_ISSUER, que el callback es una URL absoluta y que la tabla de usuarios tiene las columnas.

Orden recomendado: accounts:install --migrate --protect-routes --test-helper --remove-auth, completar a mano lo que imprime (login, FortifyServiceProvider, menú), rellenar .env con los datos de la app registrada y terminar con accounts:install --check.

Pruebas en la app

Con el modo estricto, todo actingAs necesita una sesión de Accounts validada. Una forma de hacerlo en tests/TestCase.php:

Configuración

php artisan vendor:publish --tag=accounts-config publica config/accounts.php. Valores principales:

Clave Por defecto Notas
issuer, client_id, client_secret, redirect — Del entorno (ACCOUNTS_*).
home / ACCOUNTS_HOME.
scopes openid profile email roles roles entrega los roles que Accounts asigna en esta app (hay que permitirlo para la app en el panel de Accounts).
http.connect_timeout / http.timeout 10 s / 10 s ACCOUNTS_CONNECT_TIMEOUT, ACCOUNTS_TIMEOUT.
account_url {issuer}/account ACCOUNTS_ACCOUNT_URL.
global_logout false ACCOUNTS_GLOBAL_LOGOUT. Ver «Cierre de sesión central».
post_logout_redirect — ACCOUNTS_POST_LOGOUT_REDIRECT_URI.
validation_seconds 60 Plazo máximo de una validación. No ampliar sin medirlo.
activity_interval_seconds 15
clock_skew_seconds 30 Tolerancia de reloj en los JWT; no extiende el plazo de 60 s.
users_table, user_model, user_resolver users, App\Models\User, ResolveModelUser

Seguridad

Desarrollo del paquete


All versions of auth-accounts-luisml with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
illuminate/support Version ^11.0|^12.0|^13.0
illuminate/http Version ^11.0|^12.0|^13.0
illuminate/routing Version ^11.0|^12.0|^13.0
illuminate/cache Version ^11.0|^12.0|^13.0
illuminate/queue Version ^11.0|^12.0|^13.0
lcobucci/jwt Version ^5.6
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package mevisoft/auth-accounts-luisml contains the following files

Loading the files please wait ...