emilsoftware-utilities 2.0.0-dev.30 → 2.0.0-dev.31

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.
Files changed (29) hide show
  1. package/dist/accessi-module/Console/console.js +30 -1
  2. package/dist/accessi-module/Console/console.js.map +1 -1
  3. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.d.ts +3 -1
  4. package/dist/accessi-module/Console/generated/model/groupWithMenusEntity.js.map +1 -1
  5. package/dist/accessi-module/Console/generated/model/menuEntity.d.ts +2 -0
  6. package/dist/accessi-module/Console/generated/model/menuEntity.js.map +1 -1
  7. package/dist/accessi-module/Console/generated/model/userDto.d.ts +24 -0
  8. package/dist/accessi-module/Console/generated/model/userDto.js.map +1 -1
  9. package/dist/accessi-module/Console/wiki.js +2 -0
  10. package/dist/accessi-module/Console/wiki.js.map +1 -1
  11. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.d.ts +1 -0
  12. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js +9 -1
  13. package/dist/accessi-module/Dtos/GetGroupsWithMenusResponse.js.map +1 -1
  14. package/dist/accessi-module/Dtos/GetMenusResponse.d.ts +1 -0
  15. package/dist/accessi-module/Dtos/GetMenusResponse.js +8 -0
  16. package/dist/accessi-module/Dtos/GetMenusResponse.js.map +1 -1
  17. package/dist/accessi-module/Dtos/UserDto.d.ts +12 -0
  18. package/dist/accessi-module/Dtos/UserDto.js +83 -0
  19. package/dist/accessi-module/Dtos/UserDto.js.map +1 -1
  20. package/dist/accessi-module/Services/PermissionService/PermissionService.js +12 -9
  21. package/dist/accessi-module/Services/PermissionService/PermissionService.js.map +1 -1
  22. package/dist/accessi-module/Services/UserService/UserService.js +56 -2
  23. package/dist/accessi-module/Services/UserService/UserService.js.map +1 -1
  24. package/dist/accessi-module/database-updates/accessiSchema.d.ts +1 -1
  25. package/dist/accessi-module/database-updates/accessiSchema.js +13 -2
  26. package/dist/accessi-module/database-updates/accessiSchema.js.map +1 -1
  27. package/dist/emilsoftware-utilities-2.0.0-dev.31.tgz +0 -0
  28. package/package.json +1 -1
  29. package/dist/emilsoftware-utilities-2.0.0-dev.30.tgz +0 -0
@@ -1141,6 +1141,8 @@ POST /api/accessi/auth/confirm-reset-password/{token}
1141
1141
  " body: JSON.stringify({ email, flagSuper: true }), // ignorato o negato",
1142
1142
  "});"
1143
1143
  ].join("\n"), "Privilegi dal client"),
1144
+ note("info", `Flag applicativi`, `Il profilo espone i flag UTENTI_CONFIG (FLGMOP, FLGPIANA, FLGADDETTI, FLGOSPITI, FLGPIANARFID, FLGCONTA, FLGCUBI, FLGCICLPASS, FLGDIPENDENTI, FLGINVENTARI), il codice causale CAUMOV e ENABLEIA (assistente IA). Sono modificabili solo da flussi privilegiati (allowPrivilegedFields/allowPrivilegedChanges) e visibili nella scheda utente della console.`),
1145
+ note("info", `Gruppi menu e NOMECAMPO`, `Ogni gruppo menu puo dichiarare NOMECAMPO, la colonna UTENTI_CONFIG che ne regola l'abilitazione (es. FLGDIPENDENTI). get-groups-with-menus e get-menus espongono nomeCampo.`),
1144
1146
  note("info", `Campi estesi`, `extensionFieldsOptions allega colonne di tabelle applicative al profilo (per esempio la ragione sociale). Le colonne sono in whitelist: non costruirle mai da input HTTP.`)
1145
1147
  ]
1146
1148
  },
@@ -2283,6 +2285,27 @@ function authenticationPolicyFields(user) {
2283
2285
  <p class="form-help">Accesso senza password (richiede il codice email).</p>
2284
2286
  </fieldset>`;
2285
2287
  }
2288
+ var APPLICATION_FLAGS = [
2289
+ ["flagMop", "MOP"],
2290
+ ["flagPiana", "Piana"],
2291
+ ["flagAddetti", "Addetti"],
2292
+ ["flagOspiti", "Ospiti"],
2293
+ ["flagPianaRfid", "Piana RFID"],
2294
+ ["flagConta", "Contabilit\xE0"],
2295
+ ["flagCubi", "Cubi"],
2296
+ ["flagCicliPass", "Cicli passivi"],
2297
+ ["flagDipendenti", "Gestione dipendenti"],
2298
+ ["flagInventari", "Gestione inventari"]
2299
+ ];
2300
+ function applicationFlagFields(user) {
2301
+ const record = user;
2302
+ const checks = APPLICATION_FLAGS.map(([key, label]) => `<label class="check"><input name="${key}" type="checkbox" ${record[key] ? "checked" : ""}> ${label}</label>`).join("");
2303
+ return `<fieldset><legend>Abilitazioni applicative</legend>
2304
+ ${checks}
2305
+ <label>Codice causale <input name="caumov" value="${escapeHtml(String(record.caumov ?? ""))}"></label>
2306
+ <label class="check"><input name="enableIa" type="checkbox" ${record.enableIa ? "checked" : ""}> Assistente IA (ENABLEIA)</label>
2307
+ </fieldset>`;
2308
+ }
2286
2309
  function showLocalUserForm() {
2287
2310
  render(`<button id="back">Indietro</button><h2>Nuovo utente locale</h2><p class="muted">Viene inviata l'e-mail per impostare la password.</p>
2288
2311
  <form id="local-user"><label>Email ${helpDot("user-email")}<input name="email" type="email" required><span class="form-help">Identificativo di accesso; ricever\xE0 l'email per la password.</span></label><label>Nome ${helpDot("user-name")}<input name="nome"></label><label>Cognome ${helpDot("user-name")}<input name="cognome"></label><button>Crea utente</button></form>`);
@@ -2420,7 +2443,7 @@ async function showUser(rawCode) {
2420
2443
  const defaultUserTab = federatedAuthenticationAvailable ? "sso" : "profile";
2421
2444
  render(`<div class="user-action-bar"><button id="back" type="button" class="secondary">Indietro</button><label class="inline-field">Stato registrazione ${helpDot("user-state")}<select id="user-state">${registrationStateOptions(user.statoRegistrazione)}</select></label><button id="save-state" type="button" class="secondary">Aggiorna stato</button><button id="disable-user" type="button" class="danger-button">Imposta stato eliminato</button>${helpDot("user-delete")}</div><div class="page-header"><div><p class="eyebrow">Utente ${codiceUtente}</p><h2>${escapeHtml(user.email)}</h2></div><span class="muted">Gestione profilo, ruoli e autorizzazioni</span></div>${userDetailTabs(federatedAuthenticationAvailable)}<div class="user-editor">
2422
2445
  ${identitySection}
2423
- <form id="profile" data-user-panel="profile" role="tabpanel" aria-labelledby="user-tab-profile"><h3>Profilo e accesso</h3><label>Nome ${helpDot("user-name")}<input name="nome" value="${escapeHtml(user.nome)}"></label><label>Cognome ${helpDot("user-name")}<input name="cognome" value="${escapeHtml(user.cognome)}"></label><label>Email ${helpDot("user-email")}<input name="email" type="email" value="${escapeHtml(user.email)}" required><span class="form-help">Identificativo di accesso e recapito.</span></label>${federatedAuthenticationAvailable ? `<label class="check"><input name="passwordLoginEnabled" type="checkbox" ${user.passwordLoginEnabled !== false ? "checked" : ""}> Login con password ${helpDot("user-password-login")}</label><span class="form-help">Se disabilitato, il login con email e password restituisce un errore esplicito; restano valide le identit\xE0 SSO attive.</span>` : ""}${authenticationPolicyFields(user)}<button>Salva</button></form>
2446
+ <form id="profile" data-user-panel="profile" role="tabpanel" aria-labelledby="user-tab-profile"><h3>Profilo e accesso</h3><label>Nome ${helpDot("user-name")}<input name="nome" value="${escapeHtml(user.nome)}"></label><label>Cognome ${helpDot("user-name")}<input name="cognome" value="${escapeHtml(user.cognome)}"></label><label>Email ${helpDot("user-email")}<input name="email" type="email" value="${escapeHtml(user.email)}" required><span class="form-help">Identificativo di accesso e recapito.</span></label>${federatedAuthenticationAvailable ? `<label class="check"><input name="passwordLoginEnabled" type="checkbox" ${user.passwordLoginEnabled !== false ? "checked" : ""}> Login con password ${helpDot("user-password-login")}</label><span class="form-help">Se disabilitato, il login con email e password restituisce un errore esplicito; restano valide le identit\xE0 SSO attive.</span>` : ""}${authenticationPolicyFields(user)}${applicationFlagFields(user)}<button>Salva</button></form>
2424
2447
  ${roleAssignmentEditor(allRoles, userGrants.ruoli, menuGroups)}
2425
2448
  ${directGrantEditor(menuGroups, userGrants.abilitazioni)}
2426
2449
  </div>`);
@@ -2452,6 +2475,9 @@ async function showUser(rawCode) {
2452
2475
  handleAction(async () => {
2453
2476
  const values = formValues(eventForm(event));
2454
2477
  const fields = new FormData(eventForm(event));
2478
+ const applicationFlags = Object.fromEntries(
2479
+ APPLICATION_FLAGS.map(([key]) => [key, fields.has(key)])
2480
+ );
2455
2481
  await updateUtente(codiceUtente, {
2456
2482
  codiceUtente,
2457
2483
  email: values.email ?? "",
@@ -2459,6 +2485,9 @@ async function showUser(rawCode) {
2459
2485
  cognome: values.cognome || void 0,
2460
2486
  flagDueFattori: fields.has("flagDueFattori"),
2461
2487
  passwordlessLoginEnabled: fields.has("passwordlessLoginEnabled"),
2488
+ caumov: values.caumov || void 0,
2489
+ enableIa: fields.has("enableIa"),
2490
+ ...applicationFlags,
2462
2491
  ...federatedAuthenticationAvailable ? { passwordLoginEnabled: fields.has("passwordLoginEnabled") } : {}
2463
2492
  });
2464
2493
  if (codiceUtente === currentUser?.codiceUtente && (fields.has("flagDueFattori") !== Boolean(user.flagDueFattori) || fields.has("passwordlessLoginEnabled") !== Boolean(user.passwordlessLoginEnabled))) {