@kaikybrofc/omnizap-system 2.3.1 → 2.3.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/README.md +20 -18
- package/app/controllers/messageController.js +473 -255
- package/app/modules/analyticsModule/messageAnalysisEventRepository.js +83 -0
- package/app/modules/stickerPackModule/stickerDomainEventConsumerRuntime.js +1 -3
- package/app/observability/metrics.js +6 -3
- package/app/services/googleWebLinkService.js +77 -0
- package/database/index.js +2 -0
- package/database/migrations/20260301_0028_message_analysis_event.sql +32 -0
- package/database/migrations/20260301_0029_admin_action_audit.sql +16 -0
- package/package.json +1 -1
- package/public/index.html +12 -8
- package/public/js/apps/homeApp.js +75 -30
- package/public/js/apps/loginApp.js +184 -29
- package/public/js/apps/stickersAdminApp.js +3 -9
- package/public/js/apps/userApp.js +985 -55
- package/public/js/apps/userProfileApp.js +244 -0
- package/public/login/index.html +430 -100
- package/public/termos-de-uso/index.html +1 -1
- package/public/user/index.html +2 -180
- package/public/user/systemadm/index.html +774 -0
- package/server/controllers/stickerCatalog/nonCatalogHandlers.js +208 -0
- package/server/controllers/stickerCatalogController.js +1186 -363
- package/server/controllers/systemAdminController.js +141 -0
- package/server/controllers/userController.js +87 -0
- package/server/http/httpServer.js +72 -32
- package/server/middleware/cachePolicy.js +24 -0
- package/server/middleware/cachePolicyHelpers.js +2 -0
- package/server/middleware/rateLimit.js +82 -0
- package/server/middleware/requestLogger.js +16 -0
- package/server/middleware/requireAdminAuth.js +42 -0
- package/server/middleware/securityHeaders.js +6 -0
- package/server/routes/admin/systemAdminRouter.js +56 -0
- package/server/routes/health/healthRouter.js +41 -0
- package/server/routes/indexRouter.js +203 -0
- package/server/routes/metrics/metricsRouter.js +13 -0
- package/server/routes/stickerCatalog/catalogHandlers/catalogAdminHttp.js +44 -0
- package/server/routes/stickerCatalog/stickerApiRouter.js +84 -0
- package/server/routes/stickerCatalog/stickerDataRouter.js +140 -0
- package/server/routes/stickerCatalog/stickerSiteRouter.js +43 -0
- package/server/routes/user/userRouter.js +56 -0
- package/server/utils/safePath.js +26 -0
- package/server/routes/metricsRoute.js +0 -7
- package/server/routes/stickerCatalogRoute.js +0 -20
|
@@ -292,7 +292,7 @@
|
|
|
292
292
|
</section>
|
|
293
293
|
|
|
294
294
|
<section class="card">
|
|
295
|
-
<h2>12. Política de Privacidade (termos complementares)</h2>
|
|
295
|
+
<h2 id="politica-de-privacidade">12. Política de Privacidade (termos complementares)</h2>
|
|
296
296
|
<ul>
|
|
297
297
|
<li><strong>Minimização:</strong> coletamos e mantemos apenas os dados necessários para operação, segurança, suporte e melhoria dos serviços.</li>
|
|
298
298
|
<li><strong>Finalidade e transparência:</strong> o tratamento de dados é feito para finalidades legítimas, específicas e informadas neste documento.</li>
|
package/public/user/index.html
CHANGED
|
@@ -253,120 +253,6 @@
|
|
|
253
253
|
color: #f4fff8;
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
.admin-panel {
|
|
257
|
-
border: 1px solid #5b4a8f8f;
|
|
258
|
-
border-radius: 12px;
|
|
259
|
-
background: #1a1d3aa8;
|
|
260
|
-
padding: 12px;
|
|
261
|
-
display: grid;
|
|
262
|
-
gap: 10px;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.admin-headline {
|
|
266
|
-
display: flex;
|
|
267
|
-
align-items: center;
|
|
268
|
-
justify-content: space-between;
|
|
269
|
-
gap: 8px;
|
|
270
|
-
flex-wrap: wrap;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.admin-title {
|
|
274
|
-
margin: 0;
|
|
275
|
-
font-size: 17px;
|
|
276
|
-
color: #eef3ff;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.admin-role {
|
|
280
|
-
border: 1px solid #6f5cc2;
|
|
281
|
-
border-radius: 999px;
|
|
282
|
-
padding: 4px 10px;
|
|
283
|
-
font-size: 12px;
|
|
284
|
-
font-weight: 700;
|
|
285
|
-
color: #dad1ff;
|
|
286
|
-
background: #2a2155;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.admin-note {
|
|
290
|
-
margin: 0;
|
|
291
|
-
color: #d8d2ff;
|
|
292
|
-
font-size: 14px;
|
|
293
|
-
line-height: 1.45;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
.admin-error {
|
|
297
|
-
margin: 0;
|
|
298
|
-
border: 1px solid #a74949;
|
|
299
|
-
border-radius: 10px;
|
|
300
|
-
background: #3b181899;
|
|
301
|
-
color: #ffd7d7;
|
|
302
|
-
padding: 8px 10px;
|
|
303
|
-
font-size: 13px;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
.admin-form {
|
|
307
|
-
display: grid;
|
|
308
|
-
gap: 8px;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
.admin-label {
|
|
312
|
-
color: #d8d2ff;
|
|
313
|
-
font-size: 13px;
|
|
314
|
-
font-weight: 600;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
.admin-form-row {
|
|
318
|
-
display: grid;
|
|
319
|
-
grid-template-columns: 1fr auto;
|
|
320
|
-
gap: 8px;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.admin-input {
|
|
324
|
-
min-height: 40px;
|
|
325
|
-
border: 1px solid #4f4a77;
|
|
326
|
-
border-radius: 10px;
|
|
327
|
-
background: #11162f;
|
|
328
|
-
color: #f4f7ff;
|
|
329
|
-
font-size: 14px;
|
|
330
|
-
padding: 0 10px;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.admin-input:focus {
|
|
334
|
-
outline: none;
|
|
335
|
-
border-color: #7c6be0;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.admin-grid {
|
|
339
|
-
display: grid;
|
|
340
|
-
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
341
|
-
gap: 8px;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.admin-metric {
|
|
345
|
-
border: 1px solid #45409d7d;
|
|
346
|
-
border-radius: 10px;
|
|
347
|
-
background: #1a2044bf;
|
|
348
|
-
padding: 9px;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.admin-metric-label {
|
|
352
|
-
margin: 0 0 4px;
|
|
353
|
-
color: #b9b3e8;
|
|
354
|
-
font-size: 12px;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
.admin-metric-value {
|
|
358
|
-
margin: 0;
|
|
359
|
-
color: #f4f6ff;
|
|
360
|
-
font-size: 17px;
|
|
361
|
-
font-weight: 800;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
.admin-actions {
|
|
365
|
-
display: flex;
|
|
366
|
-
flex-wrap: wrap;
|
|
367
|
-
gap: 8px;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
256
|
.actions {
|
|
371
257
|
display: flex;
|
|
372
258
|
flex-wrap: wrap;
|
|
@@ -383,10 +269,6 @@
|
|
|
383
269
|
.grid {
|
|
384
270
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
385
271
|
}
|
|
386
|
-
|
|
387
|
-
.admin-grid {
|
|
388
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
389
|
-
}
|
|
390
272
|
}
|
|
391
273
|
|
|
392
274
|
@media (max-width: 620px) {
|
|
@@ -412,9 +294,6 @@
|
|
|
412
294
|
text-align: center;
|
|
413
295
|
}
|
|
414
296
|
|
|
415
|
-
.admin-form-row {
|
|
416
|
-
grid-template-columns: 1fr;
|
|
417
|
-
}
|
|
418
297
|
}
|
|
419
298
|
</style>
|
|
420
299
|
</head>
|
|
@@ -473,67 +352,10 @@
|
|
|
473
352
|
<div><strong>Sessão expira:</strong> <span id="user-expires-at"></span></div>
|
|
474
353
|
</div>
|
|
475
354
|
|
|
476
|
-
<section id="user-admin-panel" class="admin-panel" hidden>
|
|
477
|
-
<div class="admin-headline">
|
|
478
|
-
<h3 class="admin-title">Área Admin</h3>
|
|
479
|
-
<span id="user-admin-role" class="admin-role">admin</span>
|
|
480
|
-
</div>
|
|
481
|
-
<p id="user-admin-status" class="admin-note"></p>
|
|
482
|
-
<p id="user-admin-error" class="admin-error" hidden></p>
|
|
483
|
-
|
|
484
|
-
<form id="user-admin-unlock-form" class="admin-form" hidden>
|
|
485
|
-
<label for="user-admin-password" class="admin-label">Senha do painel admin</label>
|
|
486
|
-
<div class="admin-form-row">
|
|
487
|
-
<input id="user-admin-password" class="admin-input" type="password" autocomplete="current-password" placeholder="Digite sua senha" />
|
|
488
|
-
<button id="user-admin-unlock-btn" type="submit" class="btn">Desbloquear</button>
|
|
489
|
-
</div>
|
|
490
|
-
</form>
|
|
491
|
-
|
|
492
|
-
<div id="user-admin-overview" hidden>
|
|
493
|
-
<div class="admin-grid">
|
|
494
|
-
<article class="admin-metric">
|
|
495
|
-
<p class="admin-metric-label">Packs (total)</p>
|
|
496
|
-
<p id="user-admin-total-packs" class="admin-metric-value">0</p>
|
|
497
|
-
</article>
|
|
498
|
-
<article class="admin-metric">
|
|
499
|
-
<p class="admin-metric-label">Stickers (total)</p>
|
|
500
|
-
<p id="user-admin-total-stickers" class="admin-metric-value">0</p>
|
|
501
|
-
</article>
|
|
502
|
-
<article class="admin-metric">
|
|
503
|
-
<p class="admin-metric-label">Bans ativos</p>
|
|
504
|
-
<p id="user-admin-active-bans" class="admin-metric-value">0</p>
|
|
505
|
-
</article>
|
|
506
|
-
<article class="admin-metric">
|
|
507
|
-
<p class="admin-metric-label">Usuários Google</p>
|
|
508
|
-
<p id="user-admin-known-users" class="admin-metric-value">0</p>
|
|
509
|
-
</article>
|
|
510
|
-
<article class="admin-metric">
|
|
511
|
-
<p class="admin-metric-label">Sessões Google</p>
|
|
512
|
-
<p id="user-admin-active-sessions" class="admin-metric-value">0</p>
|
|
513
|
-
</article>
|
|
514
|
-
<article class="admin-metric">
|
|
515
|
-
<p class="admin-metric-label">Visitas 24h</p>
|
|
516
|
-
<p id="user-admin-visits-24h" class="admin-metric-value">0</p>
|
|
517
|
-
</article>
|
|
518
|
-
<article class="admin-metric">
|
|
519
|
-
<p class="admin-metric-label">Visitas 7d</p>
|
|
520
|
-
<p id="user-admin-visits-7d" class="admin-metric-value">0</p>
|
|
521
|
-
</article>
|
|
522
|
-
<article class="admin-metric">
|
|
523
|
-
<p class="admin-metric-label">Visitantes 7d</p>
|
|
524
|
-
<p id="user-admin-unique-visitors-7d" class="admin-metric-value">0</p>
|
|
525
|
-
</article>
|
|
526
|
-
</div>
|
|
527
|
-
<div class="admin-actions">
|
|
528
|
-
<button id="user-admin-refresh-btn" type="button" class="btn">Atualizar dados admin</button>
|
|
529
|
-
<button id="user-admin-logout-btn" type="button" class="btn">Sair do admin</button>
|
|
530
|
-
</div>
|
|
531
|
-
</div>
|
|
532
|
-
</section>
|
|
533
|
-
|
|
534
355
|
<div id="user-actions" class="actions" hidden>
|
|
535
356
|
<a id="user-chat-link" class="btn primary" href="https://api.whatsapp.com/send/?text=%2Fmenu&type=custom_url&app_absent=0" target="_blank" rel="noreferrer noopener"> Voltar ao chat do bot (/menu) </a>
|
|
536
357
|
<a id="user-manage-main-link" class="btn" href="/stickers/perfil">Gerenciar meus stickers</a>
|
|
358
|
+
<a class="btn" href="/user/systemadm/">System Admin</a>
|
|
537
359
|
<a class="btn" href="/">Voltar para Home</a>
|
|
538
360
|
<button id="user-logout-btn" type="button" class="btn">Encerrar sessão</button>
|
|
539
361
|
</div>
|
|
@@ -543,6 +365,6 @@
|
|
|
543
365
|
</section>
|
|
544
366
|
</main>
|
|
545
367
|
|
|
546
|
-
<script type="module" src="/js/apps/
|
|
368
|
+
<script type="module" src="/js/apps/userProfileApp.js?v=20260301-user-profile-v1"></script>
|
|
547
369
|
</body>
|
|
548
370
|
</html>
|