Ir al contenido

Settings

Generada 2026-08-13. Fuente: exploración de código de controlgmg-v2 + observación manual del navegador (QA).

/settings es en gran parte una SPA propia del paquete Laravel Spark Aurelius (vendor/laravel/spark-aurelius), no del código de la app. Sus rutas backend viven en vendor/laravel/spark-aurelius/src/Http/routes.php, registradas automáticamente por SparkServiceProvider::defineRoutes() — no en routes/web.php de la app. Endpoints relevantes bajo /settings/* (namespace Laravel\Spark\Http\Controllers, middleware web, sin permission:/role:):

GET /settings/teams/current
GET /settings/teams/{team} (Settings\Teams\DashboardController@show)
PUT /settings/teams/{team}/name
POST /settings/teams/{team}/photo
GET /settings/teams/{team}/invitations
POST /settings/teams/{team}/invitations
PUT /settings/teams/{team}/members/{team_member}
DELETE /settings/teams/{team}/members/{team_member}
GET /settings/teams (TeamController@all)
POST /settings/teams (Settings\Teams\TeamController@store, middleware is_owner)
GET /settings/teams/{team}/switch (definida en app/routes/web.php:490, TeamController@switchCurrentTeam)
GET /settings/invitations/pending
POST /settings/invitations/{invitation}/accept|reject

Además, la app SÍ personaliza algunas subvistas de Settings vía componentes propios registrados en resources/js/app.js:

  • gmg-settings-notifications → resources/js/components/Settings/Notifications/Notifications.vue
  • gmg-settings-business-rules → resources/js/components/Settings/BusinessRules/BusinessRules.vue
  • gmg-password-expired-page → resources/js/components/Settings/PasswordExpiration/PasswordExpiratedForm.vue (página fuera de /settings, se activa cuando el password expira, ver middleware password_expired mencionado en CLAUDE.md)

Ver tabla arriba — todas bajo /settings/*, package Spark Aurelius, no archivo propio de la app.

  • El árbol de navegación visto en QA (Perfil / Oficinas / Seguridad / API) es la UI estándar de Spark Aurelius para gestión de cuenta y equipo (perfil de usuario, oficinas = “teams” en el vocabulario de este proyecto, seguridad = password/2FA, API = tokens Sanctum).
  • No aparece en resources/js/routes.js de la app (por eso el título de pestaña cae al genérico “QA-GMG” en vez de un nombre de ruta específico) — Spark monta su propio router/vistas.
  • Personalizaciones puntuales de la app: Notifications.vue y BusinessRules.vue (arriba).

Ninguna constante de Laratrust específica encontrada — el acceso a /settings es a nivel de “usuario autenticado con team”, gestionado por Spark (algunas acciones de equipo usan el middleware is_owner de la app, app/Http/Middleware/IsOwner.php, ej. crear un nuevo team).

Selectores usados por el tester (riesgo de fragilidad)

Sección titulada «Selectores usados por el tester (riesgo de fragilidad)»

No hay specs de Playwright para este módulo todavía — solo Remolques los tiene por ahora. Al ser en buena parte UI de un paquete de terceros (Spark Aurelius), los selectores podrían ser más estables entre releases de la app (el paquete cambia con menos frecuencia), pero también menos “propios” — conviene verificar contra QA real antes de asumir estructura.

Página de perfil de usuario: foto de perfil con botón “Actualizar Foto”, formulario “Información de Contacto” (Nombre, Correo Electrónico, Número de Teléfono) con botón “Actualizar”. Sidebar de configuración con 4 pestañas: Perfil (activa), Oficinas, Seguridad, API.