Commit Graph

69 Commits

Author SHA1 Message Date
529d54b7e8 Aplicar estilo glassmorphism a chips de grupos del usuario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 58s
- Reemplazar UBadge con spans personalizados
- Aplicar mismo estilo que filtros de grupos
- Badges primarios con color primary y glassmorphism
- Badge de conteo (+N) con estilo neutral
- Hover con efecto de elevación sutil
- Soporte completo para modo oscuro con brillo ajustado
2025-10-16 23:33:15 -06:00
05e5e9e7f8 Mejorar visibilidad de patrón y eliminar gap en barra de título
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Aumentar opacidad del patrón en modo light (0.03 → 0.08)
- Agregar margin: 0 a la barra de título
- Forzar margin y padding: 0 en body y html
- Eliminar línea blanca entre body y barra de título
2025-10-16 23:31:03 -06:00
bb47b0e25b Mejorar estilo de filtros de grupos con glassmorphism
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 58s
- Reemplazar UButton por botones nativos con estilos personalizados
- Aplicar glassmorphism consistente con el resto de la app
- Estados normal y activo con efectos de sombra y color
- Hover con translateY para efecto de elevación
- Soporte completo para modo oscuro con opacidades ajustadas
- Botones activos con color primario y borde resaltado
2025-10-16 23:29:10 -06:00
c0a9ebe8d0 Mejorar diseño de barra de título PWA
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Barra completamente transparente con patrón sutil de cuadrícula
- Título en chip cuadrado con bordes mínimamente redondeados
- Glassmorphism en el chip para contraste y legibilidad
- Patrón discreto (3% opacidad día, 2% noche)
- Configurar pointer-events para bloquear interacción debajo
2025-10-16 23:26:51 -06:00
563e920dad Traducción completa al español y barra de título PWA
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 2m19s
- Traducir mensajes de API a español
- Configurar idioma español en HTML y manifest (lang="es")
- Actualizar nombres de app: "Perfil Nucleo"
- Crear WindowTitleBar para Window Controls Overlay
- Ajustar padding para acomodar barra de título
- Traducir campos restantes en componentes legacy
2025-10-16 23:20:06 -06:00
44c4727588 Feature: Formulario de edición en lugar de modal
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Crear componente UserProfileForm con diseño glassmorphism
- Alternar entre lista de apps y formulario de edición
- Quitar modal de UserHeader, usar emit event
- Agregar nuevos campos deshabilitados:
  * Avatar URL
  * Teléfono
  * Cédula
  * Fecha de nacimiento
  * NFC vinculada
  * PIN numérico
  * Código Nucleo V2
- Sistema de eventos entre componentes
2025-10-16 23:12:46 -06:00
9a3dc1f0e6 Feature: Mejorar UX del tema y persistencia
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Mover botón editar al lado del nombre (siempre visible, sutil)
- Quitar efecto hover del header
- Detectar tema del sistema operativo automáticamente
- Actualizar theme-color dinámicamente (azul cielo día / oscuro noche)
- Usar cookies para persistir tema y filtros (1 año)
- Sincronizar filtros de apps con cookies
2025-10-16 23:03:43 -06:00
8b94e81dc8 Feature: Obtener iconos automáticamente de las aplicaciones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Intentar meta_icon de Authentik primero
- Buscar apple-touch-icon.png del dominio (PWA)
- Intentar favicon.ico como fallback
- Mostrar icono por defecto si todo falla
- Sistema de retry inteligente para evitar requests duplicados
2025-10-16 22:56:15 -06:00
bc19956e10 Style: Cambiar color de email a gris claro en modo oscuro
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
2025-10-16 22:53:48 -06:00
f090570af0 Style: Hacer cards de apps más transparentes en modo oscuro
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Cambiar opacidad de 0.85 a 0.65
- Permite ver mejor el fondo nocturno
2025-10-16 22:52:19 -06:00
16f74829a6 Fix: Sincronizar tema con clase dark de Nuxt UI y arreglar selectores CSS
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Agregar función applyThemeClass para sincronizar con HTML
- Aplicar clase dark/light al elemento HTML
- Agregar watcher para actualizar clase en cambios de tema
- Inicializar clase correcta en onMounted
- Separar estilos dark mode en bloque sin scoped
- Usar selectores .dark directos en lugar de :global(.dark)
- Agregar !important para superar especificidad de scoped
2025-10-16 22:49:54 -06:00
00c9d9578a Fix: Sincronizar tema con clase dark de Nuxt UI
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 53s
- Agregar función applyThemeClass para sincronizar con HTML
- Aplicar clase dark/light al elemento HTML
- Agregar watcher para actualizar clase en cambios de tema
- Inicializar clase correcta en onMounted
2025-10-16 22:22:51 -06:00
32c9006ca0 Style: Mejorar contraste en modo oscuro
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 56s
- Contenedores principales mucho más transparentes (0.15)
- Cards de aplicaciones negras sólidas (0.85)
- Mantener efectos 3D en todas las cards
2025-10-16 22:12:58 -06:00
75069a7633 Feature: Scrollbar personalizada, arreglos SVG y mejoras de transparencia
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 56s
- Agregar scrollbar personalizada compacta (8px) adaptable al tema
- Estilo de scrollbar verde (#00DC82) con opacidad diferente para día/noche
- Soporte para WebKit (Chrome/Safari) y Firefox
- Arreglar SVG de colinas para usar 100% del ancho horizontal (preserveAspectRatio=none)
- Revertir modal a estructura funcional (v-model:open, title prop, #content slot)
- Igualar transparencia en modo oscuro usando rgba(0,0,0,0.3-0.4) en lugar de rgba(15,15,25)
- Aplicar tintado negro puro para reducir brillo en modo oscuro manteniendo misma transparencia
2025-10-16 22:02:45 -06:00
639a4c44c4 Mejorar botones y badges con estilos sólidos y efectos 3D
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Cambiar botones de quick-actions a variant solid con efectos 3D
- Agregar box-shadow multicapa con inset shadows a botones
- Implementar efectos hover y active en botones de sesión
- Cambiar badges de grupos a variant solid
- Agregar efectos 3D a badges con sombras y hover
- Mejorar color del email en modo oscuro (negro en lugar de gris)
- Aumentar peso de fuente del email en modo oscuro para mejor legibilidad
2025-10-16 21:58:02 -06:00
e06f0c746a Mejoras en glassmorphism y soporte de modo oscuro
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Aumentar transparencia en todos los contenedores (0.3-0.4 alpha)
- Mejorar backdrop-filter con blur(20px) y saturate(180%)
- Agregar efectos 3D pronunciados con box-shadow multicapa
- Implementar inset shadows para efecto de profundidad
- Ajustar colores en modo oscuro (rgba(15, 15, 25) en lugar de rgba(30, 30, 40))
- Mejorar bordes con rgba blanco semi-transparente
- Agregar transiciones suaves con cubic-bezier
- Efectos hover mejorados con scale y translateY
- Aplicar cambios en UserHeader, ApplicationsList y quick-actions
- Mejor contraste y legibilidad en modo oscuro
2025-10-16 21:51:26 -06:00
01139f4415 Feature: Rediseño completo con tema día/noche y fondos animados
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Implementar sistema de tema día/noche con persistencia en localStorage
- Crear componente AnimatedBackground con paisajes SVG animados
- Generar todos los assets SVG desde cero (sol, luna, estrellas, nubes, montañas)
- Añadir animaciones suaves para nubes, estrellas y elementos del paisaje
- Rediseñar UserHeader como componente principal clickeable
- Integrar modal de edición de perfil en el header
- Reorganizar layout principal mostrando solo aplicaciones
- Mejorar diseño de ApplicationsList con glassmorphism
- Implementar efectos hover y transiciones elegantes
- Diseño responsive mobile-first
- Diferencias visuales notorias entre modo día y noche
2025-10-16 21:46:22 -06:00
9ebc97c784 Feature: Agregar filtros por grupos en lista de aplicaciones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Toggle buttons en header para filtrar por grupos
- Si no hay grupos seleccionados, se muestran todas las apps
- Grupos de apps ahora aparecen como subtítulo con chips compactos
- UI mejorada con estado activo en botones de filtro
- Mensaje cuando no hay apps en grupos seleccionados
2025-10-16 21:12:43 -06:00
fd86acbbfa Feature: Agregar lista de aplicaciones disponibles para el usuario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Nuevo endpoint /api/authentik/applications para obtener apps del usuario
- Componente ApplicationsList que muestra apps en grid responsivo
- Filtrado por grupos del usuario (basado en headers de Authentik)
- UI con iconos, badges de grupos y redirección a cada app
- Refresh automático cada 5 minutos
2025-10-16 21:01:53 -06:00
a5d0f1b286 Fix: Corregir estructura del modal de edición de perfil
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 53s
- Mover el botón fuera del componente UModal para que funcione correctamente
- Actualizado token de API de Authentik en secrets para habilitar edición
2025-10-16 20:57:20 -06:00
fd495b05c7 Debug: Agregar logs para investigar usuario no encontrado
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
2025-10-16 20:38:38 -06:00
56fc0cdd78 Fix: Corregir implementación del modal según documentación de Nuxt UI
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Usar v-model:open en lugar de v-model
- Mover botón dentro del UModal como trigger (slot por defecto)
- Contenido en slot #content según documentación
- Agregar title como prop del UModal
- Eliminar UCard innecesario
2025-10-16 20:29:12 -06:00
13fcb312d1 fix de directorio
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
2025-10-16 20:28:20 -06:00
7ab5027551 Fix: Arreglar modal en blanco y clicks dentro del formulario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 53s
- Eliminado v-if del modal para evitar problemas de renderizado
- Agregado @click.stop al UCard para prevenir propagación de eventos
- Agregado prevent-close mientras se actualiza
2025-10-16 20:25:04 -06:00
ca3b23c1d3 Fix: Agregar v-if al modal de editar perfil para evitar clicks inesperados
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 52s
Se agregó v-if="isOpen" al UModal para que solo se renderice en el DOM cuando
esté abierto. Esto soluciona el problema de que el modal se activaba al hacer
clic en áreas vacías del componente.
2025-10-16 20:21:53 -06:00
c05da4c797 test
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 53s
2025-10-16 20:09:20 -06:00
67261cd1fc Fix: Corregir errores de TypeScript en componentes
- Instalar @types/node para resolver referencias a process
- Corregir colores inválidos en componentes (orange→warning, purple→secondary, gray→neutral, etc.)
- Agregar tipos explícitos en GroupCheckButton y EditProfileButton
- Eliminar propiedad timeout inválida en toasts
2025-10-16 19:42:00 -06:00
fa0475efbf fix 2025-10-16 19:32:37 -06:00
bcf9efa89d fix 2025-10-16 19:24:43 -06:00
72712840b0 Test: Separar comandos git para hook correcto
Este commit demuestra la ejecución separada de comandos git:
- git add -A (paso 1)
- git commit (paso 2)
- git push (paso 3 - ejecutará el hook una sola vez)
2025-10-16 19:11:02 -06:00
b1caa15089 Trigger: Reintentar build del fix user.ts
El build anterior del commit b6a58e8 no completó el push de las
imágenes Docker al registro. Este commit trivial triggerea el
workflow de nuevo para que se complete correctamente el build
y deploy del fix que unifica user.ts (GET y PATCH en un solo archivo).
2025-10-16 19:02:00 -06:00
b6a58e8df7 Fix: Combinar endpoints API en un solo archivo user.ts
PROBLEMA IDENTIFICADO:
Nuxt 4 no reconoce archivos con extensiones como .get.ts y .patch.ts
en el directorio server/api/. Esto causaba que los endpoints no se
compilaran en el build final.

SOLUCIÓN:
- Eliminados: user.get.ts y user.patch.ts
- Creado: user.ts que maneja ambos métodos HTTP (GET y PATCH)
- Usa event.method para distinguir entre GET y PATCH
- Devuelve 405 para métodos no permitidos

Este cambio debería permitir que Nuxt compile correctamente los
endpoints de la API de Authentik para edición de perfil.
2025-10-16 18:41:41 -06:00
9140a52160 Force Docker rebuild to include API endpoints
All checks were successful
build-and-deploy / build (push) Successful in 56s
build-and-deploy / deploy (push) Successful in 4s
Se agregó un comentario al código para forzar que Docker
reconstruya la imagen y así incluya los endpoints de la API
de Authentik que faltaban en el build anterior.

Los endpoints /api/authentik/user (GET y PATCH) existen en
el código fuente pero no fueron incluidos en la imagen Docker
debido a cache.
2025-10-16 18:00:42 -06:00
248af8f8d1 Initial commit: Add Nuxt app with Authentik integration and profile editing
All checks were successful
build-and-deploy / build (push) Successful in 58s
build-and-deploy / deploy (push) Successful in 3s
- Add Nuxt 4 application with Authentik Proxy Outpost integration
- Add EditProfileButton component for editing user profile via Authentik API
- Add API endpoints for Authentik user management (GET/PATCH)
- Configure Gitea Actions workflow for automated deployment
- Add monitoring hook for Gitea Actions
- Configure environment variables and Docker Compose setup
2025-10-16 17:14:49 -06:00
43bcf4a647 Add modular group verification system with frontend and backend checks
This commit implements a comprehensive, reusable group verification system:

Components:
- GroupCheckButton: Base component for group verification
- 7 specialized buttons: 3 real groups (authentik Admins, grupo-prueba, lvl0), 1 public access test, 2 system verification buttons
- All buttons support both frontend and backend verification modes

Backend:
- New API endpoint /api/auth/check-group for server-side group validation
- Reads Authentik headers and validates group membership

Frontend:
- Enhanced useAuthentik composable with hasGroup() and checkGroupBackend() methods
- Toast notifications for all verification results
- Smooth animations and color-coded visual feedback

UI Improvements:
- Organized layout with cards for different verification types
- Grid layout for group buttons
- Professional styling with hover effects and shadows
- Clear visual distinction between frontend/backend checks
2025-10-13 04:09:42 -06:00
f52f9f393f Add temporary debug endpoint to inspect all headers 2025-10-13 03:40:36 -06:00
1c901fa877 Remove debug endpoint 2025-10-13 03:21:59 -06:00
96fac68c6d Enhance user metadata display with app and outpost information
- Update AuthentikUser interface to include appSlug and outpostName
- Capture x-authentik-meta-app and x-authentik-meta-outpost headers
- Improve UserMetadata component to display connection information
- Filter empty groups from groups array
- Add documentation about available Authentik headers
2025-10-13 03:20:05 -06:00
1cba2f427e Add debug endpoint to inspect Authentik headers 2025-10-13 03:16:36 -06:00
3f5c4bc820 Fix TypeScript errors in useAuthentik composable
- Add AuthentikUser and AuthStatusResponse interfaces
- Fix toast color from 'gray' to 'neutral' (valid color)
- Remove invalid 'timeout' property from toast.add()
- Fix toast action from 'click' to 'onClick'
- Add proper type annotations for error handling
- Replace process.server with import.meta.server
- Make email, name, uid optional in AuthentikUser interface
2025-10-13 03:05:04 -06:00
d8f70f2aa5 Refactor auth components into individual button components
- Remove StatusBadges component (badges for authenticated, connected, groups)
- Remove ActionButtons component
- Create individual button components:
  - SessionStatusButton: handles session status check
  - ProfileButton: navigates to user profile
  - LogoutButton: handles user logout
  - LoginButton: reloads page to trigger login
- Update app.vue to use new individual button components
- Improve code quality with better component separation and reusability
2025-10-13 03:00:02 -06:00
0fd25e34e6 Update offline.html with SSR+Auth limitation explanation
- Revert CacheFirst strategy back to NetworkFirst
- Add clear technical explanation in offline.html
- Explain that full offline mode requires no-auth or SPA
- Note that UI remains functional if app is already open
2025-10-13 02:45:57 -06:00
496ff7630b Add offline fallback page for PWA
- Create offline.html with user-friendly offline message
- Auto-redirect when connection is restored
- Use offline.html as navigateFallback instead of root
- Include offline.html in PWA assets for precaching

This ensures users see a proper offline page when opening the app without connection, instead of a browser error.
2025-10-13 02:37:34 -06:00
ec9ccece61 Improve document caching strategy for offline navigation
- Add navigateFallbackDenylist to exclude API and auth routes
- Enhanced urlPattern to match document destination and root path
- Increase cache entries to 50 and duration to 7 days
- Add cacheableResponse for better cache control

This should enable the app to open offline after being loaded once.
2025-10-13 02:34:14 -06:00
e59f7b653d Add NetworkFirst caching strategy for navigation requests
This enables offline navigation by caching HTML documents generated by SSR.
When offline, users can now navigate to cached pages using the service worker.
2025-10-13 02:27:32 -06:00
0a7c8d9cd0 Fix Workbox configuration: remove networkTimeoutSeconds from NetworkOnly handler 2025-10-13 02:24:17 -06:00
87ae5b95e6 Improve PWA offline functionality and fix session caching
- Enable navigateFallback for offline navigation support
- Add JSON files to glob patterns for heroicons support
- Change Authentik API caching from NetworkFirst to NetworkOnly to prevent stale session data
- Add offline detection in checkSessionStatus with proper user feedback
- Add no-cache headers to /api/auth/status endpoint to prevent browser caching
- Show "Modo Offline" toast when user tries to check session while offline
2025-10-13 02:21:50 -06:00
226fcc7c64 Make 'Iniciar Sesión' button always visible alongside other buttons
Change button layout to show all 4 buttons at the same time:
- Estado de Sesión (info/blue)
- Ver Perfil (primary/blue)
- Cerrar Sesión (error/red)
- Iniciar Sesión (success/green) - NEW: always visible

This allows users to force a re-authentication by clicking 'Iniciar
Sesión' even when already authenticated, triggering Authentik login flow.
2025-10-13 02:02:45 -06:00
a132fdfbf8 Add permanent 'Iniciar Sesión' button when not authenticated
Replace 'Ver Perfil' and 'Cerrar Sesión' buttons with a prominent
'Iniciar Sesión' button when user is not authenticated. The button
reloads the page to trigger Authentik login redirect.

This provides a more accessible way to log in compared to the toast
button, which can be difficult to click.

Button layout:
- Authenticated: [Estado de Sesión] [Ver Perfil] [Cerrar Sesión]
- Not authenticated: [Estado de Sesión] [Iniciar Sesión]
2025-10-13 01:56:42 -06:00
5676647f0f Add login button to 'No Session' toast notifications
Add 'Iniciar Sesión' button to toasts when session is not active.
Clicking the button reloads the page, triggering Authentik redirect
to login flow.

Also increased toast timeout from 5s to 10s to give users more time
to see and click the login button.
2025-10-13 01:52:33 -06:00