blackcoffee2 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +67 -0
- package/CHANGELOG.md +167 -0
- package/README.md +1 -3
- package/config/database.json +11 -0
- package/controllers/admin/AuthController.js +2 -1
- package/core/ViewHelper.js +75 -0
- package/core/hotReload.js +1 -1
- package/data/blackcoffee_admin.db-shm +0 -0
- package/data/blackcoffee_admin.db-wal +0 -0
- package/includes/adminAuth.js +5 -3
- package/includes/sessions.js +1 -1
- package/otrack.tar.gz +0 -0
- package/package.json +4 -2
- package/programatically/initFlow.js +2 -2
- package/test-aplicacion.con-logisession/BlackCoffee.js +0 -226
- package/test-aplicacion.con-logisession/SSL_SETUP.md +0 -53
- package/test-aplicacion.con-logisession/certs/ca-certificate.pem +0 -32
- package/test-aplicacion.con-logisession/certs/ca-private-key.pem +0 -52
- package/test-aplicacion.con-logisession/certs/certificate-2048.pem +0 -22
- package/test-aplicacion.con-logisession/certs/certificate.pem +0 -32
- package/test-aplicacion.con-logisession/certs/private-key-2048.pem +0 -28
- package/test-aplicacion.con-logisession/certs/private-key.pem +0 -52
- package/test-aplicacion.con-logisession/config/iaQueueSetup.js +0 -84
- package/test-aplicacion.con-logisession/config/qwen-rules.json +0 -39
- package/test-aplicacion.con-logisession/controllers/analyticsController.js +0 -117
- package/test-aplicacion.con-logisession/controllers/auth/AdminAuthController.js +0 -142
- package/test-aplicacion.con-logisession/controllers/auth/AuthController.js +0 -439
- package/test-aplicacion.con-logisession/controllers/auth/AuthViewController.js +0 -223
- package/test-aplicacion.con-logisession/controllers/endpointController.js +0 -66
- package/test-aplicacion.con-logisession/controllers/example.js +0 -183
- package/test-aplicacion.con-logisession/controllers/iaQueueController.js +0 -367
- package/test-aplicacion.con-logisession/controllers/queueController.js +0 -206
- package/test-aplicacion.con-logisession/controllers/qwenQueueController.js +0 -197
- package/test-aplicacion.con-logisession/controllers/test.js +0 -0
- package/test-aplicacion.con-logisession/controllers/tracking/EventsNoFinishController.js +0 -78
- package/test-aplicacion.con-logisession/controllers/tracking/TrackingController.js +0 -412
- package/test-aplicacion.con-logisession/controllers/tracking/TrackingControllerWithLoadModel.js +0 -437
- package/test-aplicacion.con-logisession/hooks/admin-hooks.js +0 -20
- package/test-aplicacion.con-logisession/hooks/general-hooks.js +0 -97
- package/test-aplicacion.con-logisession/hooks/queue-hooks.js +0 -64
- package/test-aplicacion.con-logisession/hooks/route-directory-hooks.js +0 -38
- package/test-aplicacion.con-logisession/hooks/security-hooks.js +0 -24
- package/test-aplicacion.con-logisession/insitu-admin-client/README.md +0 -69
- package/test-aplicacion.con-logisession/insitu-admin-client/package.json +0 -23
- package/test-aplicacion.con-logisession/insitu-admin-client.js +0 -257
- package/test-aplicacion.con-logisession/models/ExampleModel.js +0 -88
- package/test-aplicacion.con-logisession/models/QueueJobModel.js +0 -263
- package/test-aplicacion.con-logisession/models/TokenModel.js +0 -207
- package/test-aplicacion.con-logisession/models/auth/AuthModel.js +0 -66
- package/test-aplicacion.con-logisession/models/auth/UserModel.js +0 -189
- package/test-aplicacion.con-logisession/models/tracking/CompletedCartModel.js +0 -213
- package/test-aplicacion.con-logisession/models/tracking/EventModel.js +0 -366
- package/test-aplicacion.con-logisession/models/tracking/EventsNoFinishModel.js +0 -131
- package/test-aplicacion.con-logisession/models/tracking/SessionModel.js +0 -360
- package/test-aplicacion.con-logisession/models/tracking/SiteFlowModel.js +0 -286
- package/test-aplicacion.con-logisession/models/tracking/TokenModel.js +0 -207
- package/test-aplicacion.con-logisession/package-lock.json +0 -3313
- package/test-aplicacion.con-logisession/package.json +0 -32
- package/test-aplicacion.con-logisession/public/blackcoffee-welcome/index.html +0 -1339
- package/test-aplicacion.con-logisession/public/css/style.css +0 -64
- package/test-aplicacion.con-logisession/public/ejemplo-estatica/index.html +0 -18
- package/test-aplicacion.con-logisession/public/ejemplo-estatica/script.js +0 -16
- package/test-aplicacion.con-logisession/public/ejemplo-estatica/styles.css +0 -43
- package/test-aplicacion.con-logisession/public/images/logo.svg +0 -7
- package/test-aplicacion.con-logisession/public/js/main.js +0 -67
- package/test-aplicacion.con-logisession/routes/analytics-routes.json +0 -8
- package/test-aplicacion.con-logisession/routes/auth-routes.json +0 -98
- package/test-aplicacion.con-logisession/routes/blackcoffee-welcome-routes.json +0 -20
- package/test-aplicacion.con-logisession/routes/duplicate-test-routes.json.disabled +0 -16
- package/test-aplicacion.con-logisession/routes/ejemplo-estatica-routes.json +0 -11
- package/test-aplicacion.con-logisession/routes/endpoints-routes.json +0 -8
- package/test-aplicacion.con-logisession/routes/ia-queue-routes.json +0 -26
- package/test-aplicacion.con-logisession/routes/product-routes.json.disabled +0 -20
- package/test-aplicacion.con-logisession/routes/queue-routes.json +0 -32
- package/test-aplicacion.con-logisession/routes/qwen-routes.json +0 -14
- package/test-aplicacion.con-logisession/routes/static-routes.json +0 -29
- package/test-aplicacion.con-logisession/routes/tracking-routes.json +0 -58
- package/test-aplicacion.con-logisession/routes/tracking-with-loadmodel-routes.json +0 -51
- package/test-aplicacion.con-logisession/utils/dbAdapter.js +0 -88
- package/test-aplicacion.con-logisession/utils/qbWrapper.js +0 -4
- package/test-aplicacion.con-logisession/utils/queueProcessor.js +0 -305
- package/test-aplicacion.con-logisession/utils/qwenRulesService.js +0 -131
- package/test-aplicacion.con-logisession/utils/tokenHelper.js +0 -22
- package/test-aplicacion.con-logisession/views/auth/dashboard.html +0 -443
- package/test-aplicacion.con-logisession/views/auth/forgot-password.html +0 -200
- package/test-aplicacion.con-logisession/views/auth/login.html +0 -213
- package/test-aplicacion.con-logisession/views/auth/register.html +0 -294
- package/test-aplicacion.con-logisession/views/contact/form.html +0 -47
- package/test-aplicacion.con-logisession/views/products/index.html +0 -39
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Configuración SSL para BlackCoffee
|
|
2
|
-
|
|
3
|
-
Este documento explica cómo configurar BlackCoffee para que funcione con SSL/TLS.
|
|
4
|
-
|
|
5
|
-
## Variables de Entorno
|
|
6
|
-
|
|
7
|
-
Para habilitar SSL en BlackCoffee, configure las siguientes variables de entorno:
|
|
8
|
-
|
|
9
|
-
- `ENABLE_SSL`: Establezca en `true` para habilitar SSL (por defecto es `false`)
|
|
10
|
-
- `SSL_KEY_PATH`: Ruta al archivo de clave privada SSL
|
|
11
|
-
- `SSL_CERT_PATH`: Ruta al archivo de certificado SSL
|
|
12
|
-
- `SSL_CA_PATH`: (Opcional) Ruta al archivo de certificado de autoridad (CA)
|
|
13
|
-
|
|
14
|
-
## Configuración de Ejemplo
|
|
15
|
-
|
|
16
|
-
En su archivo `.env`, puede configurar SSL de la siguiente manera:
|
|
17
|
-
|
|
18
|
-
```env
|
|
19
|
-
# Deshabilitar SSL (por defecto)
|
|
20
|
-
ENABLE_SSL=false
|
|
21
|
-
|
|
22
|
-
# O habilitar SSL
|
|
23
|
-
ENABLE_SSL=true
|
|
24
|
-
SSL_KEY_PATH=./certs/private-key.pem
|
|
25
|
-
SSL_CERT_PATH=./certs/certificate.pem
|
|
26
|
-
SSL_CA_PATH=./certs/ca-certificate.pem
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Generación de Certificados
|
|
30
|
-
|
|
31
|
-
Si necesita certificados autofirmados para desarrollo, puede generarlos con OpenSSL:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# Crear directorio para certificados
|
|
35
|
-
mkdir -p certs
|
|
36
|
-
|
|
37
|
-
# Generar clave privada y certificado autofirmado
|
|
38
|
-
openssl req -x509 -newkey rsa:4096 -keyout certs/private-key.pem -out certs/certificate.pem -days 365 -nodes -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Producción
|
|
42
|
-
|
|
43
|
-
Para entornos de producción, asegúrese de:
|
|
44
|
-
|
|
45
|
-
1. Utilizar certificados válidos emitidos por una Autoridad de Certificación (CA) confiable
|
|
46
|
-
2. Proteger adecuadamente los archivos de clave privada
|
|
47
|
-
3. Mantener actualizados los certificados antes de su vencimiento
|
|
48
|
-
|
|
49
|
-
## Notas Adicionales
|
|
50
|
-
|
|
51
|
-
- Cuando SSL está habilitado, el servidor escuchará en el puerto configurado usando HTTPS
|
|
52
|
-
- El valor predeterminado sigue siendo HTTP para compatibilidad hacia atrás
|
|
53
|
-
- Si `ENABLE_SSL` está establecido en `true` pero faltan `SSL_KEY_PATH` o `SSL_CERT_PATH`, el servidor mostrará un error y se cerrará
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIFmzCCA4OgAwIBAgIUaonLK1BNS/GlUNojPOgGRGjQPEowDQYJKoZIhvcNAQEL
|
|
3
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
-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
-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
-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
-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
-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
-
DwIDAQABo1MwUTAdBgNVHQ4EFgQUye9Cry/nlRjE/J7DTXoiipiVx8wwHwYDVR0j
|
|
20
|
-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
-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
-
+t4JQgAYMULNCkbskiuMtlKo3yJ201NdoH+CihKpzhLOEZkucOxh8j/FAVmB5dFk
|
|
23
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
|
32
|
-
-----END CERTIFICATE-----
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
1sUoag1iRdaIW60NoSFhpUNQCfxzBiQu+9So6myu0rj/ZAMnNJyLyvP6H7mWyi9u
|
|
31
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
ZMW3pBtJqr2EQ8hxUxBPt3V5yDtuHJ7qKT4qjGxaf21inXIbB8wbAL2QoXfT4MfU
|
|
45
|
-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
-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
-
rAfQHeiGa4CTV5XEkRFbQbDSFPFkh2rsOhZNVOh6zZLXF5aQR87k4AB5FAivE/9L
|
|
48
|
-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
-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
-
P9U48y/FVh7uUtnGgYRQ9BNKKDpW65JWByFZCLzEkYLOShDZTkSRyP6810mfkMjO
|
|
51
|
-
n3kP2JSr6Y7hpD0t/0f75+RdnCog+GQ=
|
|
52
|
-
-----END PRIVATE KEY-----
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIDjzCCAnegAwIBAgIUTuUu2F+FkfM5v+yLPfKvNZzLz+YwDQYJKoZIhvcNAQEL
|
|
3
|
-
BQAwVzELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
|
|
4
|
-
MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0y
|
|
5
|
-
NjAyMTQwMDIzMDRaFw0yNzAyMTQwMDIzMDRaMFcxCzAJBgNVBAYTAlVTMQ4wDAYD
|
|
6
|
-
VQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEVMBMGA1UECgwMT3JnYW5pemF0aW9u
|
|
7
|
-
MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
|
8
|
-
AoIBAQC8q2hknxipLvS7uSsLURP3vUxg+TACP4g0WVjyk2eTLK7NX+JmA5dv+AaN
|
|
9
|
-
P4ZBOnAV2/QwR+BlrlxH2mRPUJcRk3dK7jKfgidbSm7sqXZxav1Ej59ph9vjqBdb
|
|
10
|
-
X7NfpKfh+AEnWmi8C3VIyAOFb60y9SjuUlUzzBeToPh3iJ0gw0zT84XdLl+wnV47
|
|
11
|
-
KjzsLHqRAmBSUct1XGCej0WLeqLwm8i+6685VY2yH4LrYUCmAUV9fxrPGJSkgPgT
|
|
12
|
-
faMK/5bC3TytzVSU9iUTP0OiEhJOrJcZMG2ybGPdpSlgp4v5eZA96TFqsKO/TJoy
|
|
13
|
-
VzGmRqSqtStmV86accmPsvlCt2RhAgMBAAGjUzBRMB0GA1UdDgQWBBSf/HSRcBqE
|
|
14
|
-
Oi9zeDmu0BE8w/M6MzAfBgNVHSMEGDAWgBSf/HSRcBqEOi9zeDmu0BE8w/M6MzAP
|
|
15
|
-
BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQC0mfIAGGA1XaKrLIpK
|
|
16
|
-
A+sWqmcyI4dwVyP00CRVy3M9jnwNIOnw3YxdSfKeClX93yRYrRpjPRRqH8JA4ys2
|
|
17
|
-
NS8kyvkH899urPU2hZXnuzEk/FHM+0ETxo/qBxavMbzLoDPj+pEj8emI9muoAzBR
|
|
18
|
-
wlyD0wbRgvspC2A4lZ+AUIqZHU86u+yrPWPon/y0U6W3h03NA3Xej7pE++wTN9xT
|
|
19
|
-
/RHrmJWzSQzPXhxMSX0m9hL6WQvv+3kh9KneXt33xJ4YCAj1ogje/nMzU6yaAXXV
|
|
20
|
-
bAJlngUgodn6dEKd3eGbfQBR095/CMk7kjHbnrr/MIrXjoMCIBxzVebVHX/5yIdT
|
|
21
|
-
agQm
|
|
22
|
-
-----END CERTIFICATE-----
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-
uLfP9bnbwhvb1dhJaCyImcsD/xQ3Vum7ayafmNu/GAgsaZRPUmRKzDAIAA35eUpT
|
|
12
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
YAf39zjYPGDtnZyUaRdbCflYBlx3EWT5jIcFUT4EttiBmVjwDinmtMyrZYStTNiR
|
|
30
|
-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
-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
|
|
32
|
-
-----END CERTIFICATE-----
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8q2hknxipLvS7
|
|
3
|
-
uSsLURP3vUxg+TACP4g0WVjyk2eTLK7NX+JmA5dv+AaNP4ZBOnAV2/QwR+BlrlxH
|
|
4
|
-
2mRPUJcRk3dK7jKfgidbSm7sqXZxav1Ej59ph9vjqBdbX7NfpKfh+AEnWmi8C3VI
|
|
5
|
-
yAOFb60y9SjuUlUzzBeToPh3iJ0gw0zT84XdLl+wnV47KjzsLHqRAmBSUct1XGCe
|
|
6
|
-
j0WLeqLwm8i+6685VY2yH4LrYUCmAUV9fxrPGJSkgPgTfaMK/5bC3TytzVSU9iUT
|
|
7
|
-
P0OiEhJOrJcZMG2ybGPdpSlgp4v5eZA96TFqsKO/TJoyVzGmRqSqtStmV86accmP
|
|
8
|
-
svlCt2RhAgMBAAECggEAHI3pqQ7uJc7iQdYaxmXxOnW3LVcRdcmlRNz/6gi2rI7e
|
|
9
|
-
7tzT8EIbZZoZbb+/QziDtb86JCOAugrrUwGh3GIzVvjlXV0TItKJP9cSVjWopC4/
|
|
10
|
-
4iRFiWyDMl+il1Ty2icatIe7LvhPMSSfzdHdvJCEG1oA5Z7m38XEDLcYW8j8lPRP
|
|
11
|
-
RT7OIbE2BhDEZHdnubvSTjM2pISxJxKMWnbiMK0byvVwUsldmN9ZuMPDzwv9Y5qp
|
|
12
|
-
MbLC1TTjv2irSkV3yggqjZjIG5rzdoVYNxOYT7RLjwSui0bR1wGtS4ZFnUaE6bAU
|
|
13
|
-
FZ7TnHo+Y6xQ3Bdzv4VSUGgRLn+9l5TmNvIe3i7DRQKBgQDsZEDHeq5kMm2YeMIv
|
|
14
|
-
F1O0OmSIbkoK1n9Gu4vkAJfqkCNfyVEYeC4X4fQ+sK/PkCwDV+H4Qfx0qaSMtPI6
|
|
15
|
-
DKbfqs0yKlYS6JvxCk8z/bTalELTqmvD/WopKUYMF+DMiAvXfH2+L7DH73MMr5Qo
|
|
16
|
-
vDykLwjri+IP+8xgb6gsGJ46FQKBgQDMUchmtZKQ9nIkqyaTiPcMbI3o7pwt+3uq
|
|
17
|
-
OiqdPsp5CcAOkWfc59TSUZD5Zh3gXISgrBIT80CiSREKTpgOKamvPA79kQIKPb5O
|
|
18
|
-
ep8ZVRLv4Pd1As9LI2ptnzZZ0DJJGam1lraiXtiu1Y4O/NB5EIUAlj87wR3nxyKl
|
|
19
|
-
A533emOQHQKBgQCiew4jjmmLqTW3VVlzcL8x4+jx9YyjAmgdQA+ZOecxbL1Du2Yo
|
|
20
|
-
QYK9G6v74woUyu3VpnRFZWWW8nuN01mjGMsidY3w6zSabpOxC/sAq2PB0aJVRpAn
|
|
21
|
-
+GkdvabN7SOwsdoh1QnAzZre8fDMSWq2zRuJZmLlNBLAFbyWlGitVoZ7OQKBgHID
|
|
22
|
-
tRuzeO1RyNIze5xaktmo/eucsyRpsFGGkd8beerfCQBYHahE6hrPD2JMnKFln1D1
|
|
23
|
-
lETzuf6VXV/uCaXlk93IWukecQ/78mViwcNmGOIpHI18GuboBWzUqoSlzFnEa1J8
|
|
24
|
-
nr+uw6WUX+h3JXJZSI7SSMj0c9ax5eBFS3IdJs/1AoGAOEsheOU783soNhLYbsNz
|
|
25
|
-
g+WuWYFm33aaDcAB0Bwr0FQt4nXAdaAJW7JouyTtnsmYq0DTz2RBouxpiigt5qg1
|
|
26
|
-
qE1HETdfdO282QiI2IkxH5c7gTrvc0XrxKYCpUuOnobABVsQeRiitTHQvp3FcwQW
|
|
27
|
-
Kkl1ouq9cAlbKAJ1VTEHVsk=
|
|
28
|
-
-----END PRIVATE KEY-----
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
|
2
|
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
NVg/C2xWeA0514G9UcfO0FbUjlXtE1cCS1DZtouscRI33Y3A8nGCh6zfyuB4FgmA
|
|
45
|
-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
-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
-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
-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
-
kkflVz1GbHl4hbACZCAJyc19k8ZD1mus5qE/NCOzmTJiSt/tIKFjhCzzMBR+cF2r
|
|
50
|
-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
|
|
51
|
-
wAaKuo3SY0hW6Y3Jc8hf3Xz8qfSbXA==
|
|
52
|
-
-----END PRIVATE KEY-----
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// Configuración del sistema de colas de IA siguiendo el patrón del ejemplo test-app
|
|
2
|
-
|
|
3
|
-
const { HookSystem } = require('insitu-js');
|
|
4
|
-
|
|
5
|
-
// Verificar que el sistema de colas global esté disponible
|
|
6
|
-
if (global.queueIntegration) {
|
|
7
|
-
// Crear sistema de hooks para la cola de IA
|
|
8
|
-
const iaHooks = new HookSystem();
|
|
9
|
-
|
|
10
|
-
// Hook para personalizar la lógica de procesamiento
|
|
11
|
-
iaHooks.addAction('queue_execute_task', (task, queueName, taskObj) => {
|
|
12
|
-
console.log(`[IA_QUEUE] Preparando para procesar tarea: ${taskObj.id}`);
|
|
13
|
-
|
|
14
|
-
// Envolver la tarea original con lógica adicional
|
|
15
|
-
const wrappedTask = async (datos, taskObj) => {
|
|
16
|
-
console.log(`[IA_QUEUE] Iniciando procesamiento de IA: ${taskObj.id}`);
|
|
17
|
-
try {
|
|
18
|
-
const result = await task(datos, taskObj);
|
|
19
|
-
console.log(`[IA_QUEUE] Procesamiento completado: ${taskObj.id}`);
|
|
20
|
-
return result;
|
|
21
|
-
} catch (error) {
|
|
22
|
-
console.log(`[IA_QUEUE] Error procesando tarea: ${taskObj.id} - ${error.message}`);
|
|
23
|
-
throw error;
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
return wrappedTask;
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// Hook para manejar la lógica de fallback
|
|
31
|
-
iaHooks.addAction('queue_task_fallback', (queueName, task, error) => {
|
|
32
|
-
console.log(`[IA_QUEUE] Ejecutando fallback para tarea:`, error.message);
|
|
33
|
-
// Lógica personalizada para manejar tareas que fallan definitivamente
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
// Hook para registrar tareas completadas
|
|
37
|
-
iaHooks.addAction('queue_task_completed', async (queueName, task) => {
|
|
38
|
-
// El hook queue_task_completed se llama con (queueName, task) según el código del sistema de colas
|
|
39
|
-
// El resultado no se pasa directamente en este hook, sino que se maneja de otra manera
|
|
40
|
-
console.log(`[IA_QUEUE] Hook queue_task_completed recibió:`, { queueName, task });
|
|
41
|
-
|
|
42
|
-
// Extraer el ID de la tarea del objeto
|
|
43
|
-
let taskId;
|
|
44
|
-
if (task && typeof task === 'object' && task.id) {
|
|
45
|
-
taskId = task.id;
|
|
46
|
-
} else if (typeof task === 'string') {
|
|
47
|
-
taskId = task; // Si es un string, asumimos que es el ID
|
|
48
|
-
} else {
|
|
49
|
-
console.error(`[IA_QUEUE] No se pudo obtener ID de la tarea completada:`, { task });
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
console.log(`[IA_QUEUE] Tarea completada en cola ${queueName}:`, taskId);
|
|
54
|
-
|
|
55
|
-
// En este hook no tenemos acceso directo al resultado de la tarea
|
|
56
|
-
// El resultado debe ser manejado de otra manera, posiblemente almacenado temporalmente
|
|
57
|
-
// durante la ejecución de la tarea y luego recuperado aquí
|
|
58
|
-
|
|
59
|
-
// Para este ejemplo, vamos a asumir que el resultado ya está disponible en algún lugar
|
|
60
|
-
// o que se manejará de forma diferente
|
|
61
|
-
console.log(`[IA_QUEUE] Tarea ${taskId} completada, pero el resultado debe manejarse de otra manera`);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// Hook para registrar tareas fallidas
|
|
65
|
-
iaHooks.addAction('queue_task_failed', (queueName, taskObj, error) => {
|
|
66
|
-
if (!taskObj || !taskObj.id) {
|
|
67
|
-
console.error(`[IA_QUEUE] Tarea fallida sin ID válido:`, { taskObj, error });
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
console.log(`[IA_QUEUE] Tarea fallida en cola ${queueName}:`, taskObj.id, error.message);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
// Crear la cola de IA con hooks personalizados
|
|
75
|
-
global.queueIntegration.createQueue('ia-processing', {
|
|
76
|
-
concurrency: 2, // Máximo 2 tareas de IA ejecutándose simultáneamente
|
|
77
|
-
retryAttempts: 3, // Reintentar hasta 3 veces si falla
|
|
78
|
-
retryDelay: 2000 // Esperar 2 segundos entre reintentos
|
|
79
|
-
}, iaHooks);
|
|
80
|
-
|
|
81
|
-
console.log('[IA_QUEUE] Cola de IA configurada correctamente');
|
|
82
|
-
} else {
|
|
83
|
-
console.error('[IA_QUEUE] El sistema de colas global no está disponible');
|
|
84
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"qwenRules": {
|
|
3
|
-
"restrictSystemInfo": true,
|
|
4
|
-
"preventDataLeakage": true,
|
|
5
|
-
"allowExternalContext": false,
|
|
6
|
-
"maxResponseTokens": 2000,
|
|
7
|
-
"responseFormat": "json",
|
|
8
|
-
"prohibitedTopics": [
|
|
9
|
-
"sistema de archivos",
|
|
10
|
-
"estructura de directorios",
|
|
11
|
-
"archivos del sistema",
|
|
12
|
-
"información interna",
|
|
13
|
-
"código fuente del sistema",
|
|
14
|
-
"configuración interna"
|
|
15
|
-
],
|
|
16
|
-
"requiredTopics": [
|
|
17
|
-
"datos proporcionados",
|
|
18
|
-
"análisis de información",
|
|
19
|
-
"recomendaciones basadas en datos"
|
|
20
|
-
],
|
|
21
|
-
"customInstructions": [
|
|
22
|
-
"Solo responde sobre los datos que se te proporcionan explícitamente",
|
|
23
|
-
"No hagas suposiciones sobre la estructura interna del sistema",
|
|
24
|
-
"Si se te pregunta sobre archivos o estructura del sistema, redirige a los datos proporcionados",
|
|
25
|
-
"Mantén el enfoque en el análisis de los datos proporcionados"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"queueSettings": {
|
|
29
|
-
"defaultPriority": 0,
|
|
30
|
-
"maxRetries": 3,
|
|
31
|
-
"processingTimeout": 60000,
|
|
32
|
-
"maxPayloadSize": 1048576
|
|
33
|
-
},
|
|
34
|
-
"security": {
|
|
35
|
-
"sanitizeInputs": true,
|
|
36
|
-
"validateOutputs": true,
|
|
37
|
-
"blockSuspiciousPatterns": true
|
|
38
|
-
}
|
|
39
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
const { ControllerBase } = require('insitu-js');
|
|
2
|
-
const { spawn, exec } = require('child_process');
|
|
3
|
-
|
|
4
|
-
class AnalyticsController extends ControllerBase {
|
|
5
|
-
constructor(options = {}) {
|
|
6
|
-
super(options);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Método para procesar datos de métricas y prompt con Qwen
|
|
10
|
-
async processAnalytics(req, res) {
|
|
11
|
-
try {
|
|
12
|
-
// Obtener el cuerpo de la solicitud
|
|
13
|
-
let requestData = {};
|
|
14
|
-
|
|
15
|
-
// Parsear el cuerpo de la solicitud
|
|
16
|
-
if (req.body) {
|
|
17
|
-
if (typeof req.body === 'string') {
|
|
18
|
-
requestData = JSON.parse(req.body);
|
|
19
|
-
} else {
|
|
20
|
-
requestData = req.body;
|
|
21
|
-
}
|
|
22
|
-
} else {
|
|
23
|
-
// Si no está en req.body, intentar parsear desde raw body si está disponible
|
|
24
|
-
if (req.rawBody) {
|
|
25
|
-
requestData = JSON.parse(req.rawBody);
|
|
26
|
-
} else {
|
|
27
|
-
// Para casos donde necesitamos leer directamente del stream
|
|
28
|
-
let body = '';
|
|
29
|
-
for await (const chunk of req) {
|
|
30
|
-
body += chunk.toString();
|
|
31
|
-
}
|
|
32
|
-
requestData = JSON.parse(body);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Extraer las secciones del JSON
|
|
37
|
-
const { metrics, prompt } = requestData;
|
|
38
|
-
|
|
39
|
-
// Validar que ambas secciones existan
|
|
40
|
-
if (!metrics) {
|
|
41
|
-
return this.json(res, {
|
|
42
|
-
success: false,
|
|
43
|
-
error: 'Missing metrics section in request'
|
|
44
|
-
}, 400);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (!prompt) {
|
|
48
|
-
return this.json(res, {
|
|
49
|
-
success: false,
|
|
50
|
-
error: 'Missing prompt section in request'
|
|
51
|
-
}, 400);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Convertir los datos de métricas a string para el comando y escapar comillas
|
|
55
|
-
const metricsString = JSON.stringify(metrics).replace(/"/g, '\\"');
|
|
56
|
-
|
|
57
|
-
// Construir el comando para Qwen usando la bandera -p para modo no interactivo
|
|
58
|
-
const qwenCommand = `qwen -p "${prompt} ${metricsString}"`;
|
|
59
|
-
|
|
60
|
-
// Ejecutar el comando de Qwen y esperar la respuesta
|
|
61
|
-
const qwenResult = await this.executeQwenSync(qwenCommand);
|
|
62
|
-
|
|
63
|
-
// Devolver la respuesta completa incluyendo la respuesta de Qwen
|
|
64
|
-
this.json(res, {
|
|
65
|
-
success: true,
|
|
66
|
-
data: {
|
|
67
|
-
originalRequest: { metrics, prompt },
|
|
68
|
-
qwenResponse: qwenResult.stdout,
|
|
69
|
-
commandUsed: qwenCommand,
|
|
70
|
-
error: qwenResult.stderr || null
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
} catch (error) {
|
|
75
|
-
// Manejar errores de parsing u otros
|
|
76
|
-
this.json(res, {
|
|
77
|
-
success: false,
|
|
78
|
-
error: error.message
|
|
79
|
-
}, 500);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Método para ejecutar Qwen de forma síncrona (esperando la respuesta)
|
|
84
|
-
async executeQwenSync(command) {
|
|
85
|
-
const { exec } = require('child_process');
|
|
86
|
-
const util = require('util');
|
|
87
|
-
const execAsync = util.promisify(exec);
|
|
88
|
-
|
|
89
|
-
try {
|
|
90
|
-
// Ejecutar el comando usando exec en lugar de spawn para manejar correctamente las comillas
|
|
91
|
-
const result = await execAsync(command);
|
|
92
|
-
return {
|
|
93
|
-
stdout: result.stdout,
|
|
94
|
-
stderr: result.stderr,
|
|
95
|
-
code: 0
|
|
96
|
-
};
|
|
97
|
-
} catch (error) {
|
|
98
|
-
// En caso de error, devolver el error con formato consistente
|
|
99
|
-
return {
|
|
100
|
-
stdout: error.stdout || '',
|
|
101
|
-
stderr: error.stderr || error.message,
|
|
102
|
-
code: error.code || 1
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// Instanciar el controlador
|
|
109
|
-
const controllerInstance = new AnalyticsController();
|
|
110
|
-
|
|
111
|
-
// Exportar métodos individualmente para que RouteLoader pueda acceder a ellos
|
|
112
|
-
module.exports = {
|
|
113
|
-
processAnalytics: (req, res) => {
|
|
114
|
-
controllerInstance.setRequestResponse(req, res);
|
|
115
|
-
controllerInstance.processAnalytics(req, res);
|
|
116
|
-
}
|
|
117
|
-
};
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Controlador de autenticación de administración simplificado (sin roles y capacidades)
|
|
3
|
-
* AdminAuthController.js
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const { ControllerBase } = require('insitu-js');
|
|
7
|
-
|
|
8
|
-
class AdminAuthController extends ControllerBase {
|
|
9
|
-
constructor(options = {}) {
|
|
10
|
-
super(options);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Verifica si el usuario tiene rol de administrador
|
|
15
|
-
* @param {Object} req - Objeto de solicitud
|
|
16
|
-
* @returns {Promise<boolean>} - True si es admin
|
|
17
|
-
*/
|
|
18
|
-
async checkAdminRole(req) {
|
|
19
|
-
// En esta versión simplificada, todos los usuarios autenticados pueden acceder
|
|
20
|
-
// a funciones de administrador (en un entorno real, se verificaría un rol específico)
|
|
21
|
-
if (req.session && req.session.data && req.session.data.authenticated) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Crea un nuevo rol
|
|
29
|
-
* POST /api/admin/roles
|
|
30
|
-
*/
|
|
31
|
-
async createRole(req, res) {
|
|
32
|
-
// En esta versión simplificada, no se soporta la creación de roles
|
|
33
|
-
this.json(res, {
|
|
34
|
-
success: false,
|
|
35
|
-
error: 'Funcionalidad de roles y capacidades deshabilitada en esta versión'
|
|
36
|
-
}, 501);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Obtiene todos los roles
|
|
41
|
-
* GET /api/admin/roles
|
|
42
|
-
*/
|
|
43
|
-
async getRoles(req, res) {
|
|
44
|
-
// En esta versión simplificada, devolvemos una lista vacía
|
|
45
|
-
this.json(res, {
|
|
46
|
-
success: true,
|
|
47
|
-
roles: []
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Crea una nueva capability
|
|
53
|
-
* POST /api/admin/capabilities
|
|
54
|
-
*/
|
|
55
|
-
async createCapability(req, res) {
|
|
56
|
-
// En esta versión simplificada, no se soporta la creación de capabilities
|
|
57
|
-
this.json(res, {
|
|
58
|
-
success: false,
|
|
59
|
-
error: 'Funcionalidad de roles y capacidades deshabilitada en esta versión'
|
|
60
|
-
}, 501);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Obtiene todas las capabilities
|
|
65
|
-
* GET /api/admin/capabilities
|
|
66
|
-
*/
|
|
67
|
-
async getCapabilities(req, res) {
|
|
68
|
-
// En esta versión simplificada, devolvemos una lista vacía
|
|
69
|
-
this.json(res, {
|
|
70
|
-
success: true,
|
|
71
|
-
capabilities: []
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Asigna un rol a un usuario
|
|
77
|
-
* POST /api/admin/users/:userId/assign-role
|
|
78
|
-
*/
|
|
79
|
-
async assignRoleToUser(req, res) {
|
|
80
|
-
// En esta versión simplificada, no se soporta la asignación de roles
|
|
81
|
-
this.json(res, {
|
|
82
|
-
success: false,
|
|
83
|
-
error: 'Funcionalidad de roles y capacidades deshabilitada en esta versión'
|
|
84
|
-
}, 501);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Asigna una capability a un usuario
|
|
89
|
-
* POST /api/admin/users/:userId/assign-capability
|
|
90
|
-
*/
|
|
91
|
-
async assignCapabilityToUser(req, res) {
|
|
92
|
-
// En esta versión simplificada, no se soporta la asignación de capabilities
|
|
93
|
-
this.json(res, {
|
|
94
|
-
success: false,
|
|
95
|
-
error: 'Funcionalidad de roles y capacidades deshabilitada en esta versión'
|
|
96
|
-
}, 501);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Método para validar token
|
|
101
|
-
*/
|
|
102
|
-
async validateToken(token) {
|
|
103
|
-
try {
|
|
104
|
-
const { validateToken } = require('../../utils/tokenHelper');
|
|
105
|
-
const isValid = await validateToken(token);
|
|
106
|
-
return isValid;
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.error('Error validando token:', error);
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Exportar métodos individualmente para que RouteLoader pueda acceder a ellos
|
|
115
|
-
const controllerInstance = new AdminAuthController();
|
|
116
|
-
|
|
117
|
-
module.exports = {
|
|
118
|
-
createRole: (req, res) => {
|
|
119
|
-
controllerInstance.setRequestResponse(req, res);
|
|
120
|
-
controllerInstance.createRole(req, res);
|
|
121
|
-
},
|
|
122
|
-
getRoles: (req, res) => {
|
|
123
|
-
controllerInstance.setRequestResponse(req, res);
|
|
124
|
-
controllerInstance.getRoles(req, res);
|
|
125
|
-
},
|
|
126
|
-
createCapability: (req, res) => {
|
|
127
|
-
controllerInstance.setRequestResponse(req, res);
|
|
128
|
-
controllerInstance.createCapability(req, res);
|
|
129
|
-
},
|
|
130
|
-
getCapabilities: (req, res) => {
|
|
131
|
-
controllerInstance.setRequestResponse(req, res);
|
|
132
|
-
controllerInstance.getCapabilities(req, res);
|
|
133
|
-
},
|
|
134
|
-
assignRoleToUser: (req, res) => {
|
|
135
|
-
controllerInstance.setRequestResponse(req, res);
|
|
136
|
-
controllerInstance.assignRoleToUser(req, res);
|
|
137
|
-
},
|
|
138
|
-
assignCapabilityToUser: (req, res) => {
|
|
139
|
-
controllerInstance.setRequestResponse(req, res);
|
|
140
|
-
controllerInstance.assignCapabilityToUser(req, res);
|
|
141
|
-
}
|
|
142
|
-
};
|