Saltar al contenido principal

Panel de Administración

Carpeta: frontend/ · Puerto: 4201 · Enlace: http://localhost:4201 · Tecnología: Angular 17 servido con Nginx

La herramienta de gestión de la plataforma. Es la aplicación desde la que se administra todo lo que no gestiona el propio socio de la comunidad: usuarios, comunidades, puntos de suministro, precios y los registros de energía.

Qué hace​

  • Usuarios y permisos. Alta, baja y asignación de roles.
  • Comunidades. Creación y edición de comunidades energéticas, con su coeficiente de reparto y su precio de la energía.
  • CUPS. Gestión de los puntos de suministro y su vínculo con cada comunidad y cada cliente, incluidas las credenciales de Datadis por punto.
  • Energía. Consulta de los registros horarios de consumo, producción y excedente, y de las transacciones de reparto entre miembros.
  • Buscador. Localización de instalaciones sobre mapa, apoyado en los datos de radiación de PVGIS, de la Comisión Europea.

Cómo entrar​

Con el usuario del seed inicial:

UsuarioContraseña
adminadmin123

El acceso con Google no funciona recién instalado: requiere credenciales propias, que se configuran en la API de Zertipower.

El nombre del rol es literal

El backend concede acceso total si el rol del usuario se llama exactamente ADMIN. Si se renombra a admin, Admin o ADMINISTRADOR, ese usuario pierde todos los privilegios, porque la comprobación es una comparación de cadenas. Ver Cómo encajan las piezas.

Configuración​

El Panel sólo necesita saber dónde está la API. Angular incrusta esa URL al compilar, no al arrancar, así que llega como argumento de construcción y no como variable de entorno del contenedor.

En docker-compose.yml:

frontend:
build:
args:
# [CAMBIAR EN PRODUCCIÓN] La URL que usará el NAVEGADOR del usuario,
# no la red interna de Docker.
API_URL: http://localhost:3000
ArgumentoQué esPor defecto
API_URLURL pública de la API de Zertipowerhttp://localhost:3000
GOOGLE_MAPS_API_KEYClave de Google Maps, para el mapa del buscador(vacía)
La clave de Maps va dentro del HTML

Es una clave de navegador: acaba en el HTML que se sirve al usuario, así que no se puede ocultar. No se protege manteniéndola en secreto, sino restringiéndola por dominio en Google Cloud Console (APIs y servicios → Credenciales → Restricciones de aplicación → Sitios web).

Por eso viene vacía en el repositorio: sin ella el mapa no carga, pero el resto del Panel funciona con normalidad.

Después de cambiarla, hay que reconstruir

Recargar el navegador no basta: la URL está dentro del bundle compilado.

./dev.sh up -d --build frontend

Apuntar a las APIs de producción​

Existe un archivo aparte para compilar los frontends contra los servidores reales, útil para trabajar con datos de verdad:

./dev.sh -f docker-compose.apis-produccion.yml up -d --build
Toca datos reales

Con eso, cualquier alta, edición o borrado afecta a la base de datos de producción y no tiene vuelta atrás.

Dependencia externa pendiente​

El botón de acceso con Google apunta, escrito a mano en el código, a auth.zertifier.com —el servicio de identidad de Zertifier— en dos sitios:

  • frontend/src/app/features/auth/pages/login-page/login-page.component.ts
  • frontend/src/app/features/auth/services/auth-api.service.ts

Al estar fijado en el código, ningún argumento de construcción lo cambia. Es una de las ataduras que hay que eliminar antes de entregar el sistema a un tercero.