emilsoftware-utilities 2.0.0-dev.77 → 2.0.0-dev.79
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/dist/accessi/client/generated/admin.d.ts +21 -1
- package/dist/accessi/client/generated/admin.js +35 -1
- package/dist/accessi/client/generated/admin.js.map +1 -1
- package/dist/accessi/resource-server/token.js +2 -0
- package/dist/accessi/resource-server/token.js.map +1 -1
- package/dist/accessi/server/standalone.js +2 -1
- package/dist/accessi/server/standalone.js.map +1 -1
- package/dist/accessi-module/AccessiModule.d.ts +6 -0
- package/dist/accessi-module/AccessiModule.js +4 -0
- package/dist/accessi-module/AccessiModule.js.map +1 -1
- package/dist/accessi-module/Console/console.js +2 -0
- package/dist/accessi-module/Console/generated/emilsoftware-utilities.d.ts +21 -1
- package/dist/accessi-module/Console/generated/emilsoftware-utilities.js +35 -1
- package/dist/accessi-module/Console/generated/emilsoftware-utilities.js.map +1 -1
- package/dist/accessi-module/Console/generated/model/exportAuditOrder.d.ts +11 -0
- package/dist/accessi-module/Console/generated/model/exportAuditOrder.js +15 -0
- package/dist/accessi-module/Console/generated/model/exportAuditOrder.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/exportAuditParams.d.ts +37 -0
- package/dist/accessi-module/Console/generated/model/exportAuditParams.js +3 -0
- package/dist/accessi-module/Console/generated/model/exportAuditParams.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/index.d.ts +4 -0
- package/dist/accessi-module/Console/generated/model/index.js +4 -0
- package/dist/accessi-module/Console/generated/model/index.js.map +1 -1
- package/dist/accessi-module/Console/generated/model/queryAuditOrder.d.ts +11 -0
- package/dist/accessi-module/Console/generated/model/queryAuditOrder.js +15 -0
- package/dist/accessi-module/Console/generated/model/queryAuditOrder.js.map +1 -0
- package/dist/accessi-module/Console/generated/model/queryAuditParams.d.ts +37 -0
- package/dist/accessi-module/Console/generated/model/queryAuditParams.js +3 -0
- package/dist/accessi-module/Console/generated/model/queryAuditParams.js.map +1 -0
- package/dist/accessi-module/Console/wiki.js +2 -0
- package/dist/accessi-module/Console/wiki.js.map +1 -1
- package/dist/accessi-module/Controllers/AccessiAuditController.d.ts +16 -0
- package/dist/accessi-module/Controllers/AccessiAuditController.js +155 -0
- package/dist/accessi-module/Controllers/AccessiAuditController.js.map +1 -0
- package/dist/accessi-module/Controllers/AccessiIntrospectionController.js +9 -0
- package/dist/accessi-module/Controllers/AccessiIntrospectionController.js.map +1 -1
- package/dist/accessi-module/Controllers/AuthController.js +82 -8
- package/dist/accessi-module/Controllers/AuthController.js.map +1 -1
- package/dist/accessi-module/Controllers/ConsoleEntryController.js +15 -0
- package/dist/accessi-module/Controllers/ConsoleEntryController.js.map +1 -1
- package/dist/accessi-module/Dtos/AuditDtos.d.ts +10 -0
- package/dist/accessi-module/Dtos/AuditDtos.js +68 -0
- package/dist/accessi-module/Dtos/AuditDtos.js.map +1 -0
- package/dist/accessi-module/Dtos/index.d.ts +1 -0
- package/dist/accessi-module/Dtos/index.js +1 -0
- package/dist/accessi-module/Dtos/index.js.map +1 -1
- package/dist/accessi-module/Services/AuthService/AuthService.js +8 -2
- package/dist/accessi-module/Services/AuthService/AuthService.js.map +1 -1
- package/dist/accessi-module/index.d.ts +9 -1
- package/dist/accessi-module/index.js +27 -2
- package/dist/accessi-module/index.js.map +1 -1
- package/dist/accessi-module/observability/metrics.d.ts +79 -0
- package/dist/accessi-module/observability/metrics.js +216 -0
- package/dist/accessi-module/observability/metrics.js.map +1 -0
- package/dist/accessi-module/observability/redisMetrics.d.ts +12 -0
- package/dist/accessi-module/observability/redisMetrics.js +44 -0
- package/dist/accessi-module/observability/redisMetrics.js.map +1 -0
- package/dist/accessi-module/security/accessTokenRevocation.js +5 -3
- package/dist/accessi-module/security/accessTokenRevocation.js.map +1 -1
- package/dist/accessi-module/security/audit.d.ts +68 -3
- package/dist/accessi-module/security/audit.js +177 -4
- package/dist/accessi-module/security/audit.js.map +1 -1
- package/dist/accessi-module/security/auditSinks.d.ts +55 -0
- package/dist/accessi-module/security/auditSinks.js +228 -0
- package/dist/accessi-module/security/auditSinks.js.map +1 -0
- package/dist/accessi-module/security/consoleEntry.js +5 -3
- package/dist/accessi-module/security/consoleEntry.js.map +1 -1
- package/dist/accessi-module/security/edgeRateLimit.js +3 -0
- package/dist/accessi-module/security/edgeRateLimit.js.map +1 -1
- package/dist/accessi-module/security/jwks.js +3 -0
- package/dist/accessi-module/security/jwks.js.map +1 -1
- package/dist/accessi-module/security/jwtTokenOptions.js +4 -0
- package/dist/accessi-module/security/jwtTokenOptions.js.map +1 -1
- package/dist/accessi-module/security/publicAuthRateLimit.js +10 -0
- package/dist/accessi-module/security/publicAuthRateLimit.js.map +1 -1
- package/dist/accessi-module/security/rateLimitStore.js +4 -2
- package/dist/accessi-module/security/rateLimitStore.js.map +1 -1
- package/dist/accessi-module/security/refreshTokenRotation.js +7 -5
- package/dist/accessi-module/security/refreshTokenRotation.js.map +1 -1
- package/dist/accessi-module/security/serviceTokenRateLimit.js +3 -0
- package/dist/accessi-module/security/serviceTokenRateLimit.js.map +1 -1
- package/dist/accessi-module/security/sessionRevocation.js +7 -3
- package/dist/accessi-module/security/sessionRevocation.js.map +1 -1
- package/dist/emilsoftware-utilities-2.0.0-dev.79.tgz +0 -0
- package/docs/audit.md +136 -0
- package/docs/metrics.md +153 -0
- package/docs/redis-load-testing.md +88 -0
- package/package.json +4 -3
- package/dist/emilsoftware-utilities-2.0.0-dev.77.tgz +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Accessi API
|
|
5
5
|
* OpenAPI spec version: 1.0
|
|
6
6
|
*/
|
|
7
|
-
import type { ActionResponse, AssignPermissionsToUserRequest, AssignRolesToUserRequest, ConsoleEntryExchangeRequest, ConsoleEntrySessionResponse, ConsoleEntryTicketResponse, CreateFederatedIdentityRequest, CreateFederatedProviderRequest, CreateFederatedUserRequest, CreateFilterTypeRequest, CreateMenuGroupRequest, CreateMenuRequest, CreateMenuTypeRequest, CreateScopeRequest, ExchangeFederatedIdentityRequest, FederatedExchangeResponse, FederatedIdentityListResponse, FederatedIdentityResponse, FederatedProviderListResponse, FederatedProviderResponse, FiltriUtente, GetFiltriResponse, GetFiltriUtenteParams, GetFiltriUtenteResponse, GetGroupsWithMenusParams, GetGroupsWithMenusResponse, GetMenuScopesResponse, GetMenuTypesResponse, GetMenusParams, GetMenusResponse, GetRolesResponse, GetSchemaResponse, GetScopesResponse, GetUserRolesAndGrantsParams, GetUsersParams, GetUsersResponse, LoginAsRequest, LoginAsResponse, PublicRegisterRequest, RegisterRequest, RegisterResponse, Role, SetMenuScopesRequest, SetPasswordLoginPolicyRequest, SetScopeMenusRequest, SetStatoRegistrazioneDto, SetUserPasswordRequest, UpdateEnabledStatusRequest, UpdateFederatedIdentityRequest, UpdateFederatedProviderRequest, UpdateFilterTypeRequest, UpdateMenuGroupRequest, UpdateMenuRequest, UpdateMenuTypeRequest, UpdateScopeRequest, UserDto, UserGrantsResponse } from '../../../accessi-module/Console/generated/model';
|
|
7
|
+
import type { ActionResponse, AssignPermissionsToUserRequest, AssignRolesToUserRequest, ConsoleEntryExchangeRequest, ConsoleEntrySessionResponse, ConsoleEntryTicketResponse, CreateFederatedIdentityRequest, CreateFederatedProviderRequest, CreateFederatedUserRequest, CreateFilterTypeRequest, CreateMenuGroupRequest, CreateMenuRequest, CreateMenuTypeRequest, CreateScopeRequest, ExchangeFederatedIdentityRequest, ExportAuditParams, FederatedExchangeResponse, FederatedIdentityListResponse, FederatedIdentityResponse, FederatedProviderListResponse, FederatedProviderResponse, FiltriUtente, GetFiltriResponse, GetFiltriUtenteParams, GetFiltriUtenteResponse, GetGroupsWithMenusParams, GetGroupsWithMenusResponse, GetMenuScopesResponse, GetMenuTypesResponse, GetMenusParams, GetMenusResponse, GetRolesResponse, GetSchemaResponse, GetScopesResponse, GetUserRolesAndGrantsParams, GetUsersParams, GetUsersResponse, LoginAsRequest, LoginAsResponse, PublicRegisterRequest, QueryAuditParams, RegisterRequest, RegisterResponse, Role, SetMenuScopesRequest, SetPasswordLoginPolicyRequest, SetScopeMenusRequest, SetStatoRegistrazioneDto, SetUserPasswordRequest, UpdateEnabledStatusRequest, UpdateFederatedIdentityRequest, UpdateFederatedProviderRequest, UpdateFilterTypeRequest, UpdateMenuGroupRequest, UpdateMenuRequest, UpdateMenuTypeRequest, UpdateScopeRequest, UserDto, UserGrantsResponse } from '../../../accessi-module/Console/generated/model';
|
|
8
8
|
/**
|
|
9
9
|
* Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.
|
|
10
10
|
* @summary Ritorna i ruoli disponibili con i relativi menu
|
|
@@ -599,3 +599,23 @@ export type getSchemaResponse = {
|
|
|
599
599
|
};
|
|
600
600
|
export declare const getGetSchemaUrl: () => string;
|
|
601
601
|
export declare const getSchema: (options?: RequestInit) => Promise<getSchemaResponse>;
|
|
602
|
+
/**
|
|
603
|
+
* Richiede audit.store o un sink interrogabile. Supporta filtro per evento, intervallo, utente e paginazione.
|
|
604
|
+
* @summary Elenca gli eventi di audit persistiti
|
|
605
|
+
*/
|
|
606
|
+
export type queryAuditResponse = {
|
|
607
|
+
data: void;
|
|
608
|
+
status: number;
|
|
609
|
+
};
|
|
610
|
+
export declare const getQueryAuditUrl: (params?: QueryAuditParams) => string;
|
|
611
|
+
export declare const queryAudit: (params?: QueryAuditParams, options?: RequestInit) => Promise<queryAuditResponse>;
|
|
612
|
+
/**
|
|
613
|
+
* Stessi filtri della query, senza paginazione. Il file contiene record gia redatti; limite di sicurezza 100000 record.
|
|
614
|
+
* @summary Esporta gli eventi di audit in NDJSON
|
|
615
|
+
*/
|
|
616
|
+
export type exportAuditResponse = {
|
|
617
|
+
data: void;
|
|
618
|
+
status: number;
|
|
619
|
+
};
|
|
620
|
+
export declare const getExportAuditUrl: (params?: ExportAuditParams) => string;
|
|
621
|
+
export declare const exportAudit: (params?: ExportAuditParams, options?: RequestInit) => Promise<exportAuditResponse>;
|
|
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.setMenuScopes = exports.getSetMenuScopesUrl = exports.getMenuScopes = exports.getGetMenuScopesUrl = exports.deleteScope = exports.getDeleteScopeUrl = exports.updateScope = exports.getUpdateScopeUrl = exports.createScope = exports.getCreateScopeUrl = exports.getScopes = exports.getGetScopesUrl = exports.getUserRolesAndGrants = exports.getGetUserRolesAndGrantsUrl = exports.deleteMenuType = exports.getDeleteMenuTypeUrl = exports.updateMenuType = exports.getUpdateMenuTypeUrl = exports.deleteMenuGroup = exports.getDeleteMenuGroupUrl = exports.updateMenuGroup = exports.getUpdateMenuGroupUrl = exports.createMenuGroup = exports.getCreateMenuGroupUrl = exports.deleteMenu = exports.getDeleteMenuUrl = exports.updateMenu = exports.getUpdateMenuUrl = exports.createMenuType = exports.getCreateMenuTypeUrl = exports.getMenuTypes = exports.getGetMenuTypesUrl = exports.getGroupsWithMenus = exports.getGetGroupsWithMenusUrl = exports.createMenu = exports.getCreateMenuUrl = exports.getMenus = exports.getGetMenusUrl = exports.deleteRole = exports.getDeleteRoleUrl = exports.assignPermissionsToUser = exports.getAssignPermissionsToUserUrl = exports.assignRolesToUser = exports.getAssignRolesToUserUrl = exports.createRole = exports.getCreateRoleUrl = exports.updateRole = exports.getUpdateRoleUrl = exports.getRoles = exports.getGetRolesUrl = void 0;
|
|
13
13
|
exports.updateFederatedProvider = exports.getUpdateFederatedProviderUrl = exports.createFederatedProvider = exports.getCreateFederatedProviderUrl = exports.getFederatedProviders = exports.getGetFederatedProvidersUrl = exports.setGroupEnabled = exports.getSetGroupEnabledUrl = exports.setMenuEnabled = exports.getSetMenuEnabledUrl = exports.saveFiltriUtente = exports.getSaveFiltriUtenteUrl = exports.getFiltriUtente = exports.getGetFiltriUtenteUrl = exports.deleteTipoFiltro = exports.getDeleteTipoFiltroUrl = exports.updateTipoFiltro = exports.getUpdateTipoFiltroUrl = exports.createTipoFiltro = exports.getCreateTipoFiltroUrl = exports.getTipiFiltro = exports.getGetTipiFiltroUrl = exports.setGdpr = exports.getSetGdprUrl = exports.updateUtente = exports.getUpdateUtenteUrl = exports.createManagedUser = exports.getCreateManagedUserUrl = exports.register = exports.getRegisterUrl = exports.setStatoRegistrazione = exports.getSetStatoRegistrazioneUrl = exports.setUserPassword = exports.getSetUserPasswordUrl = exports.createLoginAsUrl = exports.getCreateLoginAsUrlUrl = exports.forcePasswordResetLegacy = exports.getForcePasswordResetLegacyUrl = exports.forcePasswordReset = exports.getForcePasswordResetUrl = exports.deleteUserPermanently = exports.getDeleteUserPermanentlyUrl = exports.deleteUser = exports.getDeleteUserUrl = exports.getUsers = exports.getGetUsersUrl = exports.serveResetPasswordPageUser = exports.getServeResetPasswordPageUserUrl = exports.setScopeMenus = exports.getSetScopeMenusUrl = void 0;
|
|
14
|
-
exports.getSchema = exports.getGetSchemaUrl = exports.exchangeFederatedIdentity = exports.getExchangeFederatedIdentityUrl = exports.exchangeConsoleEntryTicket = exports.getExchangeConsoleEntryTicketUrl = exports.createConsoleEntryTicket = exports.getCreateConsoleEntryTicketUrl = exports.deleteFederatedIdentityPermanently = exports.getDeleteFederatedIdentityPermanentlyUrl = exports.updateFederatedIdentity = exports.getUpdateFederatedIdentityUrl = exports.disableFederatedIdentity = exports.getDisableFederatedIdentityUrl = exports.setPasswordLoginPolicy = exports.getSetPasswordLoginPolicyUrl = exports.createFederatedUser = exports.getCreateFederatedUserUrl = exports.linkFederatedIdentity = exports.getLinkFederatedIdentityUrl = exports.getFederatedIdentities = exports.getGetFederatedIdentitiesUrl = exports.deleteFederatedProvider = exports.getDeleteFederatedProviderUrl = void 0;
|
|
14
|
+
exports.exportAudit = exports.getExportAuditUrl = exports.queryAudit = exports.getQueryAuditUrl = exports.getSchema = exports.getGetSchemaUrl = exports.exchangeFederatedIdentity = exports.getExchangeFederatedIdentityUrl = exports.exchangeConsoleEntryTicket = exports.getExchangeConsoleEntryTicketUrl = exports.createConsoleEntryTicket = exports.getCreateConsoleEntryTicketUrl = exports.deleteFederatedIdentityPermanently = exports.getDeleteFederatedIdentityPermanentlyUrl = exports.updateFederatedIdentity = exports.getUpdateFederatedIdentityUrl = exports.disableFederatedIdentity = exports.getDisableFederatedIdentityUrl = exports.setPasswordLoginPolicy = exports.getSetPasswordLoginPolicyUrl = exports.createFederatedUser = exports.getCreateFederatedUserUrl = exports.linkFederatedIdentity = exports.getLinkFederatedIdentityUrl = exports.getFederatedIdentities = exports.getGetFederatedIdentitiesUrl = exports.deleteFederatedProvider = exports.getDeleteFederatedProviderUrl = void 0;
|
|
15
15
|
const accessiFetch_1 = require("../../../accessi-module/Console/accessiFetch");
|
|
16
16
|
const getGetRolesUrl = () => {
|
|
17
17
|
return `/api/accessi/permission/roles`;
|
|
@@ -554,4 +554,38 @@ const getSchema = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
554
554
|
return (0, accessiFetch_1.accessiFetch)((0, exports.getGetSchemaUrl)(), Object.assign(Object.assign({}, options), { method: 'GET' }));
|
|
555
555
|
});
|
|
556
556
|
exports.getSchema = getSchema;
|
|
557
|
+
const getQueryAuditUrl = (params) => {
|
|
558
|
+
const normalizedParams = new URLSearchParams();
|
|
559
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
560
|
+
if (value === null) {
|
|
561
|
+
normalizedParams.append(key, 'null');
|
|
562
|
+
}
|
|
563
|
+
else if (value !== undefined) {
|
|
564
|
+
normalizedParams.append(key, value.toString());
|
|
565
|
+
}
|
|
566
|
+
});
|
|
567
|
+
return `/api/accessi/audit?${normalizedParams.toString()}`;
|
|
568
|
+
};
|
|
569
|
+
exports.getQueryAuditUrl = getQueryAuditUrl;
|
|
570
|
+
const queryAudit = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
571
|
+
return (0, accessiFetch_1.accessiFetch)((0, exports.getQueryAuditUrl)(params), Object.assign(Object.assign({}, options), { method: 'GET' }));
|
|
572
|
+
});
|
|
573
|
+
exports.queryAudit = queryAudit;
|
|
574
|
+
const getExportAuditUrl = (params) => {
|
|
575
|
+
const normalizedParams = new URLSearchParams();
|
|
576
|
+
Object.entries(params || {}).forEach(([key, value]) => {
|
|
577
|
+
if (value === null) {
|
|
578
|
+
normalizedParams.append(key, 'null');
|
|
579
|
+
}
|
|
580
|
+
else if (value !== undefined) {
|
|
581
|
+
normalizedParams.append(key, value.toString());
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
return `/api/accessi/audit/export?${normalizedParams.toString()}`;
|
|
585
|
+
};
|
|
586
|
+
exports.getExportAuditUrl = getExportAuditUrl;
|
|
587
|
+
const exportAudit = (params, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
588
|
+
return (0, accessiFetch_1.accessiFetch)((0, exports.getExportAuditUrl)(params), Object.assign(Object.assign({}, options), { method: 'GET' }));
|
|
589
|
+
});
|
|
590
|
+
exports.exportAudit = exportAudit;
|
|
557
591
|
//# sourceMappingURL=admin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../../src/accessi/client/generated/admin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type {\n ActionResponse,\n AssignPermissionsToUserRequest,\n AssignRolesToUserRequest,\n ConsoleEntryExchangeRequest,\n ConsoleEntrySessionResponse,\n ConsoleEntryTicketResponse,\n CreateFederatedIdentityRequest,\n CreateFederatedProviderRequest,\n CreateFederatedUserRequest,\n CreateFilterTypeRequest,\n CreateMenuGroupRequest,\n CreateMenuRequest,\n CreateMenuTypeRequest,\n CreateScopeRequest,\n ExchangeFederatedIdentityRequest,\n FederatedExchangeResponse,\n FederatedIdentityListResponse,\n FederatedIdentityResponse,\n FederatedProviderListResponse,\n FederatedProviderResponse,\n FiltriUtente,\n GetFiltriResponse,\n GetFiltriUtenteParams,\n GetFiltriUtenteResponse,\n GetGroupsWithMenusParams,\n GetGroupsWithMenusResponse,\n GetMenuScopesResponse,\n GetMenuTypesResponse,\n GetMenusParams,\n GetMenusResponse,\n GetRolesResponse,\n GetSchemaResponse,\n GetScopesResponse,\n GetUserRolesAndGrantsParams,\n GetUsersParams,\n GetUsersResponse,\n LoginAsRequest,\n LoginAsResponse,\n PublicRegisterRequest,\n RegisterRequest,\n RegisterResponse,\n Role,\n SetMenuScopesRequest,\n SetPasswordLoginPolicyRequest,\n SetScopeMenusRequest,\n SetStatoRegistrazioneDto,\n SetUserPasswordRequest,\n UpdateEnabledStatusRequest,\n UpdateFederatedIdentityRequest,\n UpdateFederatedProviderRequest,\n UpdateFilterTypeRequest,\n UpdateMenuGroupRequest,\n UpdateMenuRequest,\n UpdateMenuTypeRequest,\n UpdateScopeRequest,\n UserDto,\n UserGrantsResponse\n} from '../../../accessi-module/Console/generated/model'\nimport { accessiFetch } from '../../../accessi-module/Console/accessiFetch';\n\n\n/**\n * Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.\n * @summary Ritorna i ruoli disponibili con i relativi menu\n */\nexport type getRolesResponse = {\n data: GetRolesResponse;\n status: number;\n}\n\nexport const getGetRolesUrl = () => {\n\n\n return `/api/accessi/permission/roles`\n}\n\nexport const getRoles = async ( options?: RequestInit): Promise<getRolesResponse> => {\nreturn accessiFetch<Promise<getRolesResponse>>(getGetRolesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Aggiorna un ruolo esistente\n */\nexport type updateRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateRoleUrl = (codiceRuolo: number,) => {\n\n\n return `/api/accessi/permission/update-role/${codiceRuolo}`\n}\n\nexport const updateRole = async (codiceRuolo: number,\n role: Role, options?: RequestInit): Promise<updateRoleResponse> => {\nreturn accessiFetch<Promise<updateRoleResponse>>(getUpdateRoleUrl(codiceRuolo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n role,)\n }\n);}\n\n\n/**\n * @summary Crea un nuovo ruolo\n */\nexport type createRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateRoleUrl = () => {\n\n\n return `/api/accessi/permission/create-role`\n}\n\nexport const createRole = async (role: Role, options?: RequestInit): Promise<createRoleResponse> => {\nreturn accessiFetch<Promise<createRoleResponse>>(getCreateRoleUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n role,)\n }\n);}\n\n\n/**\n * @summary Assegna piu ruoli a un utente\n */\nexport type assignRolesToUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getAssignRolesToUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/permission/assign-roles/${codiceUtente}`\n}\n\nexport const assignRolesToUser = async (codiceUtente: number,\n assignRolesToUserRequest: AssignRolesToUserRequest, options?: RequestInit): Promise<assignRolesToUserResponse> => {\nreturn accessiFetch<Promise<assignRolesToUserResponse>>(getAssignRolesToUserUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n assignRolesToUserRequest,)\n }\n);}\n\n\n/**\n * @summary Assegna abilitazioni dirette a un utente\n */\nexport type assignPermissionsToUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getAssignPermissionsToUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/permission/assign-permissions/${codiceUtente}`\n}\n\nexport const assignPermissionsToUser = async (codiceUtente: number,\n assignPermissionsToUserRequest: AssignPermissionsToUserRequest, options?: RequestInit): Promise<assignPermissionsToUserResponse> => {\nreturn accessiFetch<Promise<assignPermissionsToUserResponse>>(getAssignPermissionsToUserUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n assignPermissionsToUserRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un ruolo esistente\n */\nexport type deleteRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteRoleUrl = (codiceRuolo: number,) => {\n\n\n return `/api/accessi/permission/delete-role/${codiceRuolo}`\n}\n\nexport const deleteRole = async (codiceRuolo: number, options?: RequestInit): Promise<deleteRoleResponse> => {\nreturn accessiFetch<Promise<deleteRoleResponse>>(getDeleteRoleUrl(codiceRuolo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Recupera tutti i menu disponibili\n */\nexport type getMenusResponse = {\n data: GetMenusResponse;\n status: number;\n}\n\nexport const getGetMenusUrl = (params?: GetMenusParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/menus?${normalizedParams.toString()}`\n}\n\nexport const getMenus = async (params?: GetMenusParams, options?: RequestInit): Promise<getMenusResponse> => {\nreturn accessiFetch<Promise<getMenusResponse>>(getGetMenusUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo menu\n */\nexport type createMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuUrl = () => {\n\n\n return `/api/accessi/permission/menus`\n}\n\nexport const createMenu = async (createMenuRequest: CreateMenuRequest, options?: RequestInit): Promise<createMenuResponse> => {\nreturn accessiFetch<Promise<createMenuResponse>>(getCreateMenuUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuRequest,)\n }\n);}\n\n\n/**\n * @summary Recupera tutti i gruppi disponibili con i relativi menu\n */\nexport type getGroupsWithMenusResponse = {\n data: GetGroupsWithMenusResponse;\n status: number;\n}\n\nexport const getGetGroupsWithMenusUrl = (params?: GetGroupsWithMenusParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/groups-with-menus?${normalizedParams.toString()}`\n}\n\nexport const getGroupsWithMenus = async (params?: GetGroupsWithMenusParams, options?: RequestInit): Promise<getGroupsWithMenusResponse> => {\nreturn accessiFetch<Promise<getGroupsWithMenusResponse>>(getGetGroupsWithMenusUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera il catalogo dei tipi menu\n */\nexport type getMenuTypesResponse = {\n data: GetMenuTypesResponse;\n status: number;\n}\n\nexport const getGetMenuTypesUrl = () => {\n\n\n return `/api/accessi/permission/menu-types`\n}\n\nexport const getMenuTypes = async ( options?: RequestInit): Promise<getMenuTypesResponse> => {\nreturn accessiFetch<Promise<getMenuTypesResponse>>(getGetMenuTypesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo tipo menu\n */\nexport type createMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuTypeUrl = () => {\n\n\n return `/api/accessi/permission/menu-types`\n}\n\nexport const createMenuType = async (createMenuTypeRequest: CreateMenuTypeRequest, options?: RequestInit): Promise<createMenuTypeResponse> => {\nreturn accessiFetch<Promise<createMenuTypeResponse>>(getCreateMenuTypeUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuTypeRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un menu esistente\n */\nexport type updateMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}`\n}\n\nexport const updateMenu = async (codiceMenu: string,\n updateMenuRequest: UpdateMenuRequest, options?: RequestInit): Promise<updateMenuResponse> => {\nreturn accessiFetch<Promise<updateMenuResponse>>(getUpdateMenuUrl(codiceMenu),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un menu\n */\nexport type deleteMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}`\n}\n\nexport const deleteMenu = async (codiceMenu: string, options?: RequestInit): Promise<deleteMenuResponse> => {\nreturn accessiFetch<Promise<deleteMenuResponse>>(getDeleteMenuUrl(codiceMenu),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo gruppo menu\n */\nexport type createMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuGroupUrl = () => {\n\n\n return `/api/accessi/permission/menu-groups`\n}\n\nexport const createMenuGroup = async (createMenuGroupRequest: CreateMenuGroupRequest, options?: RequestInit): Promise<createMenuGroupResponse> => {\nreturn accessiFetch<Promise<createMenuGroupResponse>>(getCreateMenuGroupUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuGroupRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un gruppo menu\n */\nexport type updateMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuGroupUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/permission/menu-groups/${codiceGruppo}`\n}\n\nexport const updateMenuGroup = async (codiceGruppo: string,\n updateMenuGroupRequest: UpdateMenuGroupRequest, options?: RequestInit): Promise<updateMenuGroupResponse> => {\nreturn accessiFetch<Promise<updateMenuGroupResponse>>(getUpdateMenuGroupUrl(codiceGruppo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuGroupRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un gruppo menu\n */\nexport type deleteMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuGroupUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/permission/menu-groups/${codiceGruppo}`\n}\n\nexport const deleteMenuGroup = async (codiceGruppo: string, options?: RequestInit): Promise<deleteMenuGroupResponse> => {\nreturn accessiFetch<Promise<deleteMenuGroupResponse>>(getDeleteMenuGroupUrl(codiceGruppo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Aggiorna un tipo menu\n */\nexport type updateMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuTypeUrl = (codiceTipo: string,) => {\n\n\n return `/api/accessi/permission/menu-types/${codiceTipo}`\n}\n\nexport const updateMenuType = async (codiceTipo: string,\n updateMenuTypeRequest: UpdateMenuTypeRequest, options?: RequestInit): Promise<updateMenuTypeResponse> => {\nreturn accessiFetch<Promise<updateMenuTypeResponse>>(getUpdateMenuTypeUrl(codiceTipo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuTypeRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un tipo menu\n */\nexport type deleteMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuTypeUrl = (codiceTipo: string,) => {\n\n\n return `/api/accessi/permission/menu-types/${codiceTipo}`\n}\n\nexport const deleteMenuType = async (codiceTipo: string, options?: RequestInit): Promise<deleteMenuTypeResponse> => {\nreturn accessiFetch<Promise<deleteMenuTypeResponse>>(getDeleteMenuTypeUrl(codiceTipo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Recupera i ruoli e i menu di un utente\n */\nexport type getUserRolesAndGrantsResponse = {\n data: UserGrantsResponse;\n status: number;\n}\n\nexport const getGetUserRolesAndGrantsUrl = (codiceUtente: number,\n params?: GetUserRolesAndGrantsParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/grants/${codiceUtente}?${normalizedParams.toString()}`\n}\n\nexport const getUserRolesAndGrants = async (codiceUtente: number,\n params?: GetUserRolesAndGrantsParams, options?: RequestInit): Promise<getUserRolesAndGrantsResponse> => {\nreturn accessiFetch<Promise<getUserRolesAndGrantsResponse>>(getGetUserRolesAndGrantsUrl(codiceUtente,params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera il catalogo degli scope applicativi\n */\nexport type getScopesResponse = {\n data: GetScopesResponse;\n status: number;\n}\n\nexport const getGetScopesUrl = () => {\n\n\n return `/api/accessi/permission/scopes`\n}\n\nexport const getScopes = async ( options?: RequestInit): Promise<getScopesResponse> => {\nreturn accessiFetch<Promise<getScopesResponse>>(getGetScopesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea uno scope applicativo\n */\nexport type createScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateScopeUrl = () => {\n\n\n return `/api/accessi/permission/scopes`\n}\n\nexport const createScope = async (createScopeRequest: CreateScopeRequest, options?: RequestInit): Promise<createScopeResponse> => {\nreturn accessiFetch<Promise<createScopeResponse>>(getCreateScopeUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createScopeRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna uno scope applicativo\n */\nexport type updateScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateScopeUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}`\n}\n\nexport const updateScope = async (codiceScope: string,\n updateScopeRequest: UpdateScopeRequest, options?: RequestInit): Promise<updateScopeResponse> => {\nreturn accessiFetch<Promise<updateScopeResponse>>(getUpdateScopeUrl(codiceScope),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateScopeRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina uno scope applicativo\n */\nexport type deleteScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteScopeUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}`\n}\n\nexport const deleteScope = async (codiceScope: string, options?: RequestInit): Promise<deleteScopeResponse> => {\nreturn accessiFetch<Promise<deleteScopeResponse>>(getDeleteScopeUrl(codiceScope),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Scope associati a un menu\n */\nexport type getMenuScopesResponse = {\n data: GetMenuScopesResponse;\n status: number;\n}\n\nexport const getGetMenuScopesUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}/scopes`\n}\n\nexport const getMenuScopes = async (codiceMenu: string, options?: RequestInit): Promise<getMenuScopesResponse> => {\nreturn accessiFetch<Promise<getMenuScopesResponse>>(getGetMenuScopesUrl(codiceMenu),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Sostituisce gli scope di un menu\n */\nexport type setMenuScopesResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetMenuScopesUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}/scopes`\n}\n\nexport const setMenuScopes = async (codiceMenu: string,\n setMenuScopesRequest: SetMenuScopesRequest, options?: RequestInit): Promise<setMenuScopesResponse> => {\nreturn accessiFetch<Promise<setMenuScopesResponse>>(getSetMenuScopesUrl(codiceMenu),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n setMenuScopesRequest,)\n }\n);}\n\n\n/**\n * @summary Sostituisce i menu di uno scope\n */\nexport type setScopeMenusResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetScopeMenusUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}/menus`\n}\n\nexport const setScopeMenus = async (codiceScope: string,\n setScopeMenusRequest: SetScopeMenusRequest, options?: RequestInit): Promise<setScopeMenusResponse> => {\nreturn accessiFetch<Promise<setScopeMenusResponse>>(getSetScopeMenusUrl(codiceScope),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n setScopeMenusRequest,)\n }\n);}\n\n\n/**\n * @summary Serve la pagina di reset password\n */\nexport type serveResetPasswordPageUserResponse = {\n data: void;\n status: number;\n}\n\nexport const getServeResetPasswordPageUserUrl = (token: string,) => {\n\n\n return `/api/accessi/user/reset-password/${token}`\n}\n\nexport const serveResetPasswordPageUser = async (token: string, options?: RequestInit): Promise<serveResetPasswordPageUserResponse> => {\nreturn accessiFetch<Promise<serveResetPasswordPageUserResponse>>(getServeResetPasswordPageUserUrl(token),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera la lista degli utenti\n */\nexport type getUsersResponse = {\n data: GetUsersResponse;\n status: number;\n}\n\nexport const getGetUsersUrl = (params?: GetUsersParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/user/get-users?${normalizedParams.toString()}`\n}\n\nexport const getUsers = async (params?: GetUsersParams, options?: RequestInit): Promise<getUsersResponse> => {\nreturn accessiFetch<Promise<getUsersResponse>>(getGetUsersUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Imposta lo stato di un utente a eliminato senza rimuovere i record.\n * @summary Elimina un utente\n */\nexport type deleteUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/delete-user/${codiceUtente}`\n}\n\nexport const deleteUser = async (codiceUtente: number, options?: RequestInit): Promise<deleteUserResponse> => {\nreturn accessiFetch<Promise<deleteUserResponse>>(getDeleteUserUrl(codiceUtente),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Rimuove l utente e tutti i record collegati. Operazione distruttiva riservata agli admin.\n * @summary Elimina definitivamente un utente\n */\nexport type deleteUserPermanentlyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteUserPermanentlyUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/delete-user-permanent/${codiceUtente}`\n}\n\nexport const deleteUserPermanently = async (codiceUtente: number, options?: RequestInit): Promise<deleteUserPermanentlyResponse> => {\nreturn accessiFetch<Promise<deleteUserPermanentlyResponse>>(getDeleteUserPermanentlyUrl(codiceUtente),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato al superutente. Richiede un servizio email configurato; altrimenti risponde con ACCESSI_EMAIL_NOT_CONFIGURED.\n * @summary Forza l invio dell email di reset password a un utente\n */\nexport type forcePasswordResetResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getForcePasswordResetUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/force-password-reset/${codiceUtente}`\n}\n\nexport const forcePasswordReset = async (codiceUtente: number, options?: RequestInit): Promise<forcePasswordResetResponse> => {\nreturn accessiFetch<Promise<forcePasswordResetResponse>>(getForcePasswordResetUrl(codiceUtente),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Riservato al superutente. Invia l email di reset a tutti gli utenti la cui password non e ancora nel formato moderno. Richiede un servizio email configurato.\n * @summary Forza il reset password per tutti gli utenti con password legacy\n */\nexport type forcePasswordResetLegacyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getForcePasswordResetLegacyUrl = () => {\n\n\n return `/api/accessi/user/force-password-reset-legacy`\n}\n\nexport const forcePasswordResetLegacy = async ( options?: RequestInit): Promise<forcePasswordResetLegacyResponse> => {\nreturn accessiFetch<Promise<forcePasswordResetLegacyResponse>>(getForcePasswordResetLegacyUrl(),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Riservato a superutenti e admin (con la gerarchia ADMIN > SUPER). Genera un token per l utente target, con la stessa durata della sessione Accessi standard (jwtOptions.expiresIn), e lo allega all URL indicato come query parameter loginAsToken. Il token e una credenziale: non condividerlo e non registrarlo. Da quel momento l applicazione di destinazione decide come consumarlo.\n * @summary Genera un URL di accesso temporaneo come un altro utente\n */\nexport type createLoginAsUrlResponse = {\n data: LoginAsResponse;\n status: number;\n}\n\nexport const getCreateLoginAsUrlUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/login-as/${codiceUtente}`\n}\n\nexport const createLoginAsUrl = async (codiceUtente: number,\n loginAsRequest: LoginAsRequest, options?: RequestInit): Promise<createLoginAsUrlResponse> => {\nreturn accessiFetch<Promise<createLoginAsUrlResponse>>(getCreateLoginAsUrlUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n loginAsRequest,)\n }\n);}\n\n\n/**\n * Riservato agli amministratori. Hasha la password, aggiorna la scadenza secondo la policy e non invia email.\n * @summary Imposta direttamente la password di un utente\n */\nexport type setUserPasswordResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetUserPasswordUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/set-password/${codiceUtente}`\n}\n\nexport const setUserPassword = async (codiceUtente: number,\n setUserPasswordRequest: SetUserPasswordRequest, options?: RequestInit): Promise<setUserPasswordResponse> => {\nreturn accessiFetch<Promise<setUserPasswordResponse>>(getSetUserPasswordUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n setUserPasswordRequest,)\n }\n);}\n\n\n/**\n * @summary Imposta lo stato di registrazione di un utente\n */\nexport type setStatoRegistrazioneResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetStatoRegistrazioneUrl = () => {\n\n\n return `/api/accessi/user/set-stato`\n}\n\nexport const setStatoRegistrazione = async (setStatoRegistrazioneDto: SetStatoRegistrazioneDto, options?: RequestInit): Promise<setStatoRegistrazioneResponse> => {\nreturn accessiFetch<Promise<setStatoRegistrazioneResponse>>(getSetStatoRegistrazioneUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n setStatoRegistrazioneDto,)\n }\n);}\n\n\n/**\n * Disponibile soltanto quando publicRegistration.enabled e true. Per utenti SSO usare il provisioning master nel tag Federated authentication.\n * @summary Registra un nuovo utente\n */\nexport type registerResponse = {\n data: RegisterResponse;\n status: number;\n}\n\nexport const getRegisterUrl = () => {\n\n\n return `/api/accessi/user/register`\n}\n\nexport const register = async (publicRegisterRequest: PublicRegisterRequest, options?: RequestInit): Promise<registerResponse> => {\nreturn accessiFetch<Promise<registerResponse>>(getRegisterUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n publicRegisterRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Crea un utente in attesa di impostazione password e invia la mail di reset.\n * @summary Crea un utente locale da amministrazione\n */\nexport type createManagedUserResponse = {\n data: RegisterResponse;\n status: number;\n}\n\nexport const getCreateManagedUserUrl = () => {\n\n\n return `/api/accessi/user/create-managed-user`\n}\n\nexport const createManagedUser = async (registerRequest: RegisterRequest, options?: RequestInit): Promise<createManagedUserResponse> => {\nreturn accessiFetch<Promise<createManagedUserResponse>>(getCreateManagedUserUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n registerRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un utente esistente\n */\nexport type updateUtenteResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateUtenteUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/update-user/${codiceUtente}`\n}\n\nexport const updateUtente = async (codiceUtente: number,\n userDto: UserDto, options?: RequestInit): Promise<updateUtenteResponse> => {\nreturn accessiFetch<Promise<updateUtenteResponse>>(getUpdateUtenteUrl(codiceUtente),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n userDto,)\n }\n);}\n\n\n/**\n * @summary Imposta il consenso GDPR per un utente\n */\nexport type setGdprResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetGdprUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/set-gdpr/${codiceUtente}`\n}\n\nexport const setGdpr = async (codiceUtente: number, options?: RequestInit): Promise<setGdprResponse> => {\nreturn accessiFetch<Promise<setGdprResponse>>(getSetGdprUrl(codiceUtente),\n { \n ...options,\n method: 'PATCH'\n \n }\n);}\n\n\n/**\n * Ritorna tutti i tipi di filtri disponibili nel sistema\n * @deprecated\n * @summary Recupera la lista dei tipi di filtri\n */\nexport type getTipiFiltroResponse = {\n data: GetFiltriResponse;\n status: number;\n}\n\nexport const getGetTipiFiltroUrl = () => {\n\n\n return `/api/accessi/filtri/tipi`\n}\n\nexport const getTipiFiltro = async ( options?: RequestInit): Promise<getTipiFiltroResponse> => {\nreturn accessiFetch<Promise<getTipiFiltroResponse>>(getGetTipiFiltroUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Inserisce una nuova voce nel catalogo dei tipi di filtro. Operazione riservata al superutente.\n * @deprecated\n * @summary Crea un tipo di filtro\n */\nexport type createTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateTipoFiltroUrl = () => {\n\n\n return `/api/accessi/filtri/tipi`\n}\n\nexport const createTipoFiltro = async (createFilterTypeRequest: CreateFilterTypeRequest, options?: RequestInit): Promise<createTipoFiltroResponse> => {\nreturn accessiFetch<Promise<createTipoFiltroResponse>>(getCreateTipoFiltroUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFilterTypeRequest,)\n }\n);}\n\n\n/**\n * Aggiorna descrizione, campo o stato di un tipo di filtro esistente.\n * @deprecated\n * @summary Aggiorna un tipo di filtro\n */\nexport type updateTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateTipoFiltroUrl = (tipFil: number,) => {\n\n\n return `/api/accessi/filtri/tipi/${tipFil}`\n}\n\nexport const updateTipoFiltro = async (tipFil: number,\n updateFilterTypeRequest: UpdateFilterTypeRequest, options?: RequestInit): Promise<updateTipoFiltroResponse> => {\nreturn accessiFetch<Promise<updateTipoFiltroResponse>>(getUpdateTipoFiltroUrl(tipFil),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateFilterTypeRequest,)\n }\n);}\n\n\n/**\n * Elimina un tipo di filtro solo se nessun filtro utente lo utilizza.\n * @deprecated\n * @summary Elimina un tipo di filtro\n */\nexport type deleteTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteTipoFiltroUrl = (tipFil: number,) => {\n\n\n return `/api/accessi/filtri/tipi/${tipFil}`\n}\n\nexport const deleteTipoFiltro = async (tipFil: number, options?: RequestInit): Promise<deleteTipoFiltroResponse> => {\nreturn accessiFetch<Promise<deleteTipoFiltroResponse>>(getDeleteTipoFiltroUrl(tipFil),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Ritorna tutti i filtri associati ad un utente specifico\n * @deprecated\n * @summary Recupera i filtri di un utente\n */\nexport type getFiltriUtenteResponse = {\n data: GetFiltriUtenteResponse;\n status: number;\n}\n\nexport const getGetFiltriUtenteUrl = (params?: GetFiltriUtenteParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/filtri/utente?${normalizedParams.toString()}`\n}\n\nexport const getFiltriUtente = async (params?: GetFiltriUtenteParams, options?: RequestInit): Promise<getFiltriUtenteResponse> => {\nreturn accessiFetch<Promise<getFiltriUtenteResponse>>(getGetFiltriUtenteUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Permette di salvare i filtri associati ad un utente specifico\n * @deprecated\n * @summary Inserisce o aggiorna i filtri di un utente\n */\nexport type saveFiltriUtenteResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSaveFiltriUtenteUrl = () => {\n\n\n return `/api/accessi/filtri/utente`\n}\n\nexport const saveFiltriUtente = async (filtriUtente: FiltriUtente, options?: RequestInit): Promise<saveFiltriUtenteResponse> => {\nreturn accessiFetch<Promise<saveFiltriUtenteResponse>>(getSaveFiltriUtenteUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n filtriUtente,)\n }\n);}\n\n\n/**\n * @summary Aggiorna lo stato di abilitazione di un menu\n */\nexport type setMenuEnabledResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetMenuEnabledUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/configurator/menus/${codiceMenu}/enabled`\n}\n\nexport const setMenuEnabled = async (codiceMenu: string,\n updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit): Promise<setMenuEnabledResponse> => {\nreturn accessiFetch<Promise<setMenuEnabledResponse>>(getSetMenuEnabledUrl(codiceMenu),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateEnabledStatusRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna lo stato di abilitazione di un gruppo menu\n */\nexport type setGroupEnabledResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetGroupEnabledUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/configurator/groups/${codiceGruppo}/enabled`\n}\n\nexport const setGroupEnabled = async (codiceGruppo: string,\n updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit): Promise<setGroupEnabledResponse> => {\nreturn accessiFetch<Promise<setGroupEnabledResponse>>(getSetGroupEnabledUrl(codiceGruppo),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateEnabledStatusRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Restituisce solo catalogo e stato Accessi; issuer, secret e configurazioni SSO restano nel backend.\n * @summary Elenca i provider SSO censiti\n */\nexport type getFederatedProvidersResponse = {\n data: FederatedProviderListResponse;\n status: number;\n}\n\nexport const getGetFederatedProvidersUrl = () => {\n\n\n return `/api/accessi/federated-auth/providers`\n}\n\nexport const getFederatedProviders = async ( options?: RequestInit): Promise<getFederatedProvidersResponse> => {\nreturn accessiFetch<Promise<getFederatedProvidersResponse>>(getGetFederatedProvidersUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Riservato a superutente. La chiave provider deve corrispondere alla configurazione stabile del backend; non salvare segreti, issuer o token.\n * @summary Censisce un provider SSO\n */\nexport type createFederatedProviderResponse = {\n data: FederatedProviderResponse;\n status: number;\n}\n\nexport const getCreateFederatedProviderUrl = () => {\n\n\n return `/api/accessi/federated-auth/providers`\n}\n\nexport const createFederatedProvider = async (createFederatedProviderRequest: CreateFederatedProviderRequest, options?: RequestInit): Promise<createFederatedProviderResponse> => {\nreturn accessiFetch<Promise<createFederatedProviderResponse>>(getCreateFederatedProviderUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedProviderRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. La chiave provider è immutabile: disabilitarla blocca nuovi login SSO ma conserva i collegamenti storici.\n * @summary Aggiorna o disabilita un provider SSO\n */\nexport type updateFederatedProviderResponse = {\n data: FederatedProviderResponse;\n status: number;\n}\n\nexport const getUpdateFederatedProviderUrl = (provider: string,) => {\n\n\n return `/api/accessi/federated-auth/providers/${provider}`\n}\n\nexport const updateFederatedProvider = async (provider: string,\n updateFederatedProviderRequest: UpdateFederatedProviderRequest, options?: RequestInit): Promise<updateFederatedProviderResponse> => {\nreturn accessiFetch<Promise<updateFederatedProviderResponse>>(getUpdateFederatedProviderUrl(provider),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateFederatedProviderRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Consentito solo se nessuna identita e collegata al provider; in alternativa disabilitalo.\n * @summary Elimina un provider SSO\n */\nexport type deleteFederatedProviderResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteFederatedProviderUrl = (provider: string,) => {\n\n\n return `/api/accessi/federated-auth/providers/${provider}`\n}\n\nexport const deleteFederatedProvider = async (provider: string, options?: RequestInit): Promise<deleteFederatedProviderResponse> => {\nreturn accessiFetch<Promise<deleteFederatedProviderResponse>>(getDeleteFederatedProviderUrl(provider),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato a superutente. Non restituisce token esterni o claim del provider.\n * @summary Elenca le identita SSO di un utente\n */\nexport type getFederatedIdentitiesResponse = {\n data: FederatedIdentityListResponse;\n status: number;\n}\n\nexport const getGetFederatedIdentitiesUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities`\n}\n\nexport const getFederatedIdentities = async (codiceUtente: number, options?: RequestInit): Promise<getFederatedIdentitiesResponse> => {\nreturn accessiFetch<Promise<getFederatedIdentitiesResponse>>(getGetFederatedIdentitiesUrl(codiceUtente),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Il master deve fornire un provider e subject ottenuti da una verifica SSO lato backend; questo endpoint non verifica token esterni.\n * @summary Associa un SSO gia verificato a un utente esistente\n */\nexport type linkFederatedIdentityResponse = {\n data: FederatedIdentityResponse;\n status: number;\n}\n\nexport const getLinkFederatedIdentityUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities`\n}\n\nexport const linkFederatedIdentity = async (codiceUtente: number,\n createFederatedIdentityRequest: CreateFederatedIdentityRequest, options?: RequestInit): Promise<linkFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<linkFederatedIdentityResponse>>(getLinkFederatedIdentityUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. L utente nasce confermato, con identita collegata e senza password salvo opt-in esplicito.\n * @summary Crea un utente gestito e SSO-only\n */\nexport type createFederatedUserResponse = {\n data: FederatedIdentityResponse;\n status: number;\n}\n\nexport const getCreateFederatedUserUrl = () => {\n\n\n return `/api/accessi/federated-auth/users`\n}\n\nexport const createFederatedUser = async (createFederatedUserRequest: CreateFederatedUserRequest, options?: RequestInit): Promise<createFederatedUserResponse> => {\nreturn accessiFetch<Promise<createFederatedUserResponse>>(getCreateFederatedUserUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedUserRequest,)\n }\n);}\n\n\n/**\n * Con false il login locale restituisce PASSWORD_LOGIN_DISABLED; le identita SSO attive restano utilizzabili.\n * @summary Abilita o disabilita il login con password\n */\nexport type setPasswordLoginPolicyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetPasswordLoginPolicyUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/password-login`\n}\n\nexport const setPasswordLoginPolicy = async (codiceUtente: number,\n setPasswordLoginPolicyRequest: SetPasswordLoginPolicyRequest, options?: RequestInit): Promise<setPasswordLoginPolicyResponse> => {\nreturn accessiFetch<Promise<setPasswordLoginPolicyResponse>>(getSetPasswordLoginPolicyUrl(codiceUtente),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n setPasswordLoginPolicyRequest,)\n }\n);}\n\n\n/**\n * Soft delete: l associazione resta tracciata ma non puo piu autenticare.\n * @summary Disabilita un identita SSO\n */\nexport type disableFederatedIdentityResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDisableFederatedIdentityUrl = (identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/identities/${identityKey}`\n}\n\nexport const disableFederatedIdentity = async (identityKey: string, options?: RequestInit): Promise<disableFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<disableFederatedIdentityResponse>>(getDisableFederatedIdentityUrl(identityKey),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Consente di modificare nota e stato attivo del collegamento. identityKey e una chiave tecnica, non un token SSO.\n * @summary Aggiorna un collegamento SSO\n */\nexport type updateFederatedIdentityResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateFederatedIdentityUrl = (identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/identities/${identityKey}`\n}\n\nexport const updateFederatedIdentity = async (identityKey: string,\n updateFederatedIdentityRequest: UpdateFederatedIdentityRequest, options?: RequestInit): Promise<updateFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<updateFederatedIdentityResponse>>(getUpdateFederatedIdentityUrl(identityKey),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Rimuove il collegamento provider e subject dall’utente, senza eliminare l’utente Accessi.\n * @summary Elimina definitivamente un collegamento SSO\n */\nexport type deleteFederatedIdentityPermanentlyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteFederatedIdentityPermanentlyUrl = (codiceUtente: number,\n identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities/${identityKey}`\n}\n\nexport const deleteFederatedIdentityPermanently = async (codiceUtente: number,\n identityKey: string, options?: RequestInit): Promise<deleteFederatedIdentityPermanentlyResponse> => {\nreturn accessiFetch<Promise<deleteFederatedIdentityPermanentlyResponse>>(getDeleteFederatedIdentityPermanentlyUrl(codiceUtente,identityKey),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato agli utenti abilitati alla console (FLGSUPER/FLGADMIN). Restituisce un ticket monouso legato all utente, valido pochi secondi.\n * @summary Emetti un ticket di ingresso alla console\n */\nexport type createConsoleEntryTicketResponse = {\n data: ConsoleEntryTicketResponse;\n status: number;\n}\n\nexport const getCreateConsoleEntryTicketUrl = () => {\n\n\n return `/api/accessi/console/entry`\n}\n\nexport const createConsoleEntryTicket = async ( options?: RequestInit): Promise<createConsoleEntryTicketResponse> => {\nreturn accessiFetch<Promise<createConsoleEntryTicketResponse>>(getCreateConsoleEntryTicketUrl(),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Endpoint pubblico (il ticket e l unica credenziale) protetto da rate limit; il ticket e monouso e scade in pochi secondi.\n * @summary Scambia il ticket con la sessione Accessi\n */\nexport type exchangeConsoleEntryTicketResponse = {\n data: ConsoleEntrySessionResponse;\n status: number;\n}\n\nexport const getExchangeConsoleEntryTicketUrl = () => {\n\n\n return `/api/accessi/console/entry/exchange`\n}\n\nexport const exchangeConsoleEntryTicket = async (consoleEntryExchangeRequest: ConsoleEntryExchangeRequest, options?: RequestInit): Promise<exchangeConsoleEntryTicketResponse> => {\nreturn accessiFetch<Promise<exchangeConsoleEntryTicketResponse>>(getExchangeConsoleEntryTicketUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n consoleEntryExchangeRequest,)\n }\n);}\n\n\n/**\n * Richiede un service token con scope accessi:federated:exchange. Il backend chiamante deve avere gia verificato il token del provider.\n * @summary Scambia un identita esterna verificata con una sessione Accessi\n */\nexport type exchangeFederatedIdentityResponse = {\n data: FederatedExchangeResponse;\n status: number;\n}\n\nexport const getExchangeFederatedIdentityUrl = () => {\n\n\n return `/api/accessi/federated-auth/exchange`\n}\n\nexport const exchangeFederatedIdentity = async (exchangeFederatedIdentityRequest: ExchangeFederatedIdentityRequest, options?: RequestInit): Promise<exchangeFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<exchangeFederatedIdentityResponse>>(getExchangeFederatedIdentityUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n exchangeFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato agli admin. Genera il DDL delle entita Accessi e segnala le tabelle presenti fuori schema.\n * @summary Esporta lo schema DDL e le entita presenti\n */\nexport type getSchemaResponse = {\n data: GetSchemaResponse;\n status: number;\n}\n\nexport const getGetSchemaUrl = () => {\n\n\n return `/api/accessi/schema`\n}\n\nexport const getSchema = async ( options?: RequestInit): Promise<getSchemaResponse> => {\nreturn accessiFetch<Promise<getSchemaResponse>>(getGetSchemaUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n"]}
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../../src/accessi/client/generated/admin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generated by orval v6.31.0 🍺\n * Do not edit manually.\n * Accessi API\n * OpenAPI spec version: 1.0\n */\nimport type {\n ActionResponse,\n AssignPermissionsToUserRequest,\n AssignRolesToUserRequest,\n ConsoleEntryExchangeRequest,\n ConsoleEntrySessionResponse,\n ConsoleEntryTicketResponse,\n CreateFederatedIdentityRequest,\n CreateFederatedProviderRequest,\n CreateFederatedUserRequest,\n CreateFilterTypeRequest,\n CreateMenuGroupRequest,\n CreateMenuRequest,\n CreateMenuTypeRequest,\n CreateScopeRequest,\n ExchangeFederatedIdentityRequest,\n ExportAuditParams,\n FederatedExchangeResponse,\n FederatedIdentityListResponse,\n FederatedIdentityResponse,\n FederatedProviderListResponse,\n FederatedProviderResponse,\n FiltriUtente,\n GetFiltriResponse,\n GetFiltriUtenteParams,\n GetFiltriUtenteResponse,\n GetGroupsWithMenusParams,\n GetGroupsWithMenusResponse,\n GetMenuScopesResponse,\n GetMenuTypesResponse,\n GetMenusParams,\n GetMenusResponse,\n GetRolesResponse,\n GetSchemaResponse,\n GetScopesResponse,\n GetUserRolesAndGrantsParams,\n GetUsersParams,\n GetUsersResponse,\n LoginAsRequest,\n LoginAsResponse,\n PublicRegisterRequest,\n QueryAuditParams,\n RegisterRequest,\n RegisterResponse,\n Role,\n SetMenuScopesRequest,\n SetPasswordLoginPolicyRequest,\n SetScopeMenusRequest,\n SetStatoRegistrazioneDto,\n SetUserPasswordRequest,\n UpdateEnabledStatusRequest,\n UpdateFederatedIdentityRequest,\n UpdateFederatedProviderRequest,\n UpdateFilterTypeRequest,\n UpdateMenuGroupRequest,\n UpdateMenuRequest,\n UpdateMenuTypeRequest,\n UpdateScopeRequest,\n UserDto,\n UserGrantsResponse\n} from '../../../accessi-module/Console/generated/model'\nimport { accessiFetch } from '../../../accessi-module/Console/accessiFetch';\n\n\n/**\n * Recupera tutti i ruoli presenti nel sistema con le relative voci di menu.\n * @summary Ritorna i ruoli disponibili con i relativi menu\n */\nexport type getRolesResponse = {\n data: GetRolesResponse;\n status: number;\n}\n\nexport const getGetRolesUrl = () => {\n\n\n return `/api/accessi/permission/roles`\n}\n\nexport const getRoles = async ( options?: RequestInit): Promise<getRolesResponse> => {\nreturn accessiFetch<Promise<getRolesResponse>>(getGetRolesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Aggiorna un ruolo esistente\n */\nexport type updateRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateRoleUrl = (codiceRuolo: number,) => {\n\n\n return `/api/accessi/permission/update-role/${codiceRuolo}`\n}\n\nexport const updateRole = async (codiceRuolo: number,\n role: Role, options?: RequestInit): Promise<updateRoleResponse> => {\nreturn accessiFetch<Promise<updateRoleResponse>>(getUpdateRoleUrl(codiceRuolo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n role,)\n }\n);}\n\n\n/**\n * @summary Crea un nuovo ruolo\n */\nexport type createRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateRoleUrl = () => {\n\n\n return `/api/accessi/permission/create-role`\n}\n\nexport const createRole = async (role: Role, options?: RequestInit): Promise<createRoleResponse> => {\nreturn accessiFetch<Promise<createRoleResponse>>(getCreateRoleUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n role,)\n }\n);}\n\n\n/**\n * @summary Assegna piu ruoli a un utente\n */\nexport type assignRolesToUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getAssignRolesToUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/permission/assign-roles/${codiceUtente}`\n}\n\nexport const assignRolesToUser = async (codiceUtente: number,\n assignRolesToUserRequest: AssignRolesToUserRequest, options?: RequestInit): Promise<assignRolesToUserResponse> => {\nreturn accessiFetch<Promise<assignRolesToUserResponse>>(getAssignRolesToUserUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n assignRolesToUserRequest,)\n }\n);}\n\n\n/**\n * @summary Assegna abilitazioni dirette a un utente\n */\nexport type assignPermissionsToUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getAssignPermissionsToUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/permission/assign-permissions/${codiceUtente}`\n}\n\nexport const assignPermissionsToUser = async (codiceUtente: number,\n assignPermissionsToUserRequest: AssignPermissionsToUserRequest, options?: RequestInit): Promise<assignPermissionsToUserResponse> => {\nreturn accessiFetch<Promise<assignPermissionsToUserResponse>>(getAssignPermissionsToUserUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n assignPermissionsToUserRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un ruolo esistente\n */\nexport type deleteRoleResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteRoleUrl = (codiceRuolo: number,) => {\n\n\n return `/api/accessi/permission/delete-role/${codiceRuolo}`\n}\n\nexport const deleteRole = async (codiceRuolo: number, options?: RequestInit): Promise<deleteRoleResponse> => {\nreturn accessiFetch<Promise<deleteRoleResponse>>(getDeleteRoleUrl(codiceRuolo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Recupera tutti i menu disponibili\n */\nexport type getMenusResponse = {\n data: GetMenusResponse;\n status: number;\n}\n\nexport const getGetMenusUrl = (params?: GetMenusParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/menus?${normalizedParams.toString()}`\n}\n\nexport const getMenus = async (params?: GetMenusParams, options?: RequestInit): Promise<getMenusResponse> => {\nreturn accessiFetch<Promise<getMenusResponse>>(getGetMenusUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo menu\n */\nexport type createMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuUrl = () => {\n\n\n return `/api/accessi/permission/menus`\n}\n\nexport const createMenu = async (createMenuRequest: CreateMenuRequest, options?: RequestInit): Promise<createMenuResponse> => {\nreturn accessiFetch<Promise<createMenuResponse>>(getCreateMenuUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuRequest,)\n }\n);}\n\n\n/**\n * @summary Recupera tutti i gruppi disponibili con i relativi menu\n */\nexport type getGroupsWithMenusResponse = {\n data: GetGroupsWithMenusResponse;\n status: number;\n}\n\nexport const getGetGroupsWithMenusUrl = (params?: GetGroupsWithMenusParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/groups-with-menus?${normalizedParams.toString()}`\n}\n\nexport const getGroupsWithMenus = async (params?: GetGroupsWithMenusParams, options?: RequestInit): Promise<getGroupsWithMenusResponse> => {\nreturn accessiFetch<Promise<getGroupsWithMenusResponse>>(getGetGroupsWithMenusUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera il catalogo dei tipi menu\n */\nexport type getMenuTypesResponse = {\n data: GetMenuTypesResponse;\n status: number;\n}\n\nexport const getGetMenuTypesUrl = () => {\n\n\n return `/api/accessi/permission/menu-types`\n}\n\nexport const getMenuTypes = async ( options?: RequestInit): Promise<getMenuTypesResponse> => {\nreturn accessiFetch<Promise<getMenuTypesResponse>>(getGetMenuTypesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo tipo menu\n */\nexport type createMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuTypeUrl = () => {\n\n\n return `/api/accessi/permission/menu-types`\n}\n\nexport const createMenuType = async (createMenuTypeRequest: CreateMenuTypeRequest, options?: RequestInit): Promise<createMenuTypeResponse> => {\nreturn accessiFetch<Promise<createMenuTypeResponse>>(getCreateMenuTypeUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuTypeRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un menu esistente\n */\nexport type updateMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}`\n}\n\nexport const updateMenu = async (codiceMenu: string,\n updateMenuRequest: UpdateMenuRequest, options?: RequestInit): Promise<updateMenuResponse> => {\nreturn accessiFetch<Promise<updateMenuResponse>>(getUpdateMenuUrl(codiceMenu),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un menu\n */\nexport type deleteMenuResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}`\n}\n\nexport const deleteMenu = async (codiceMenu: string, options?: RequestInit): Promise<deleteMenuResponse> => {\nreturn accessiFetch<Promise<deleteMenuResponse>>(getDeleteMenuUrl(codiceMenu),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Crea un nuovo gruppo menu\n */\nexport type createMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateMenuGroupUrl = () => {\n\n\n return `/api/accessi/permission/menu-groups`\n}\n\nexport const createMenuGroup = async (createMenuGroupRequest: CreateMenuGroupRequest, options?: RequestInit): Promise<createMenuGroupResponse> => {\nreturn accessiFetch<Promise<createMenuGroupResponse>>(getCreateMenuGroupUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createMenuGroupRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un gruppo menu\n */\nexport type updateMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuGroupUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/permission/menu-groups/${codiceGruppo}`\n}\n\nexport const updateMenuGroup = async (codiceGruppo: string,\n updateMenuGroupRequest: UpdateMenuGroupRequest, options?: RequestInit): Promise<updateMenuGroupResponse> => {\nreturn accessiFetch<Promise<updateMenuGroupResponse>>(getUpdateMenuGroupUrl(codiceGruppo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuGroupRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un gruppo menu\n */\nexport type deleteMenuGroupResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuGroupUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/permission/menu-groups/${codiceGruppo}`\n}\n\nexport const deleteMenuGroup = async (codiceGruppo: string, options?: RequestInit): Promise<deleteMenuGroupResponse> => {\nreturn accessiFetch<Promise<deleteMenuGroupResponse>>(getDeleteMenuGroupUrl(codiceGruppo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Aggiorna un tipo menu\n */\nexport type updateMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateMenuTypeUrl = (codiceTipo: string,) => {\n\n\n return `/api/accessi/permission/menu-types/${codiceTipo}`\n}\n\nexport const updateMenuType = async (codiceTipo: string,\n updateMenuTypeRequest: UpdateMenuTypeRequest, options?: RequestInit): Promise<updateMenuTypeResponse> => {\nreturn accessiFetch<Promise<updateMenuTypeResponse>>(getUpdateMenuTypeUrl(codiceTipo),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateMenuTypeRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina un tipo menu\n */\nexport type deleteMenuTypeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteMenuTypeUrl = (codiceTipo: string,) => {\n\n\n return `/api/accessi/permission/menu-types/${codiceTipo}`\n}\n\nexport const deleteMenuType = async (codiceTipo: string, options?: RequestInit): Promise<deleteMenuTypeResponse> => {\nreturn accessiFetch<Promise<deleteMenuTypeResponse>>(getDeleteMenuTypeUrl(codiceTipo),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Recupera i ruoli e i menu di un utente\n */\nexport type getUserRolesAndGrantsResponse = {\n data: UserGrantsResponse;\n status: number;\n}\n\nexport const getGetUserRolesAndGrantsUrl = (codiceUtente: number,\n params?: GetUserRolesAndGrantsParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/permission/grants/${codiceUtente}?${normalizedParams.toString()}`\n}\n\nexport const getUserRolesAndGrants = async (codiceUtente: number,\n params?: GetUserRolesAndGrantsParams, options?: RequestInit): Promise<getUserRolesAndGrantsResponse> => {\nreturn accessiFetch<Promise<getUserRolesAndGrantsResponse>>(getGetUserRolesAndGrantsUrl(codiceUtente,params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera il catalogo degli scope applicativi\n */\nexport type getScopesResponse = {\n data: GetScopesResponse;\n status: number;\n}\n\nexport const getGetScopesUrl = () => {\n\n\n return `/api/accessi/permission/scopes`\n}\n\nexport const getScopes = async ( options?: RequestInit): Promise<getScopesResponse> => {\nreturn accessiFetch<Promise<getScopesResponse>>(getGetScopesUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Crea uno scope applicativo\n */\nexport type createScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateScopeUrl = () => {\n\n\n return `/api/accessi/permission/scopes`\n}\n\nexport const createScope = async (createScopeRequest: CreateScopeRequest, options?: RequestInit): Promise<createScopeResponse> => {\nreturn accessiFetch<Promise<createScopeResponse>>(getCreateScopeUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createScopeRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna uno scope applicativo\n */\nexport type updateScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateScopeUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}`\n}\n\nexport const updateScope = async (codiceScope: string,\n updateScopeRequest: UpdateScopeRequest, options?: RequestInit): Promise<updateScopeResponse> => {\nreturn accessiFetch<Promise<updateScopeResponse>>(getUpdateScopeUrl(codiceScope),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateScopeRequest,)\n }\n);}\n\n\n/**\n * @summary Elimina uno scope applicativo\n */\nexport type deleteScopeResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteScopeUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}`\n}\n\nexport const deleteScope = async (codiceScope: string, options?: RequestInit): Promise<deleteScopeResponse> => {\nreturn accessiFetch<Promise<deleteScopeResponse>>(getDeleteScopeUrl(codiceScope),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * @summary Scope associati a un menu\n */\nexport type getMenuScopesResponse = {\n data: GetMenuScopesResponse;\n status: number;\n}\n\nexport const getGetMenuScopesUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}/scopes`\n}\n\nexport const getMenuScopes = async (codiceMenu: string, options?: RequestInit): Promise<getMenuScopesResponse> => {\nreturn accessiFetch<Promise<getMenuScopesResponse>>(getGetMenuScopesUrl(codiceMenu),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Sostituisce gli scope di un menu\n */\nexport type setMenuScopesResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetMenuScopesUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/permission/menus/${codiceMenu}/scopes`\n}\n\nexport const setMenuScopes = async (codiceMenu: string,\n setMenuScopesRequest: SetMenuScopesRequest, options?: RequestInit): Promise<setMenuScopesResponse> => {\nreturn accessiFetch<Promise<setMenuScopesResponse>>(getSetMenuScopesUrl(codiceMenu),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n setMenuScopesRequest,)\n }\n);}\n\n\n/**\n * @summary Sostituisce i menu di uno scope\n */\nexport type setScopeMenusResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetScopeMenusUrl = (codiceScope: string,) => {\n\n\n return `/api/accessi/permission/scopes/${codiceScope}/menus`\n}\n\nexport const setScopeMenus = async (codiceScope: string,\n setScopeMenusRequest: SetScopeMenusRequest, options?: RequestInit): Promise<setScopeMenusResponse> => {\nreturn accessiFetch<Promise<setScopeMenusResponse>>(getSetScopeMenusUrl(codiceScope),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n setScopeMenusRequest,)\n }\n);}\n\n\n/**\n * @summary Serve la pagina di reset password\n */\nexport type serveResetPasswordPageUserResponse = {\n data: void;\n status: number;\n}\n\nexport const getServeResetPasswordPageUserUrl = (token: string,) => {\n\n\n return `/api/accessi/user/reset-password/${token}`\n}\n\nexport const serveResetPasswordPageUser = async (token: string, options?: RequestInit): Promise<serveResetPasswordPageUserResponse> => {\nreturn accessiFetch<Promise<serveResetPasswordPageUserResponse>>(getServeResetPasswordPageUserUrl(token),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * @summary Recupera la lista degli utenti\n */\nexport type getUsersResponse = {\n data: GetUsersResponse;\n status: number;\n}\n\nexport const getGetUsersUrl = (params?: GetUsersParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/user/get-users?${normalizedParams.toString()}`\n}\n\nexport const getUsers = async (params?: GetUsersParams, options?: RequestInit): Promise<getUsersResponse> => {\nreturn accessiFetch<Promise<getUsersResponse>>(getGetUsersUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Imposta lo stato di un utente a eliminato senza rimuovere i record.\n * @summary Elimina un utente\n */\nexport type deleteUserResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteUserUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/delete-user/${codiceUtente}`\n}\n\nexport const deleteUser = async (codiceUtente: number, options?: RequestInit): Promise<deleteUserResponse> => {\nreturn accessiFetch<Promise<deleteUserResponse>>(getDeleteUserUrl(codiceUtente),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Rimuove l utente e tutti i record collegati. Operazione distruttiva riservata agli admin.\n * @summary Elimina definitivamente un utente\n */\nexport type deleteUserPermanentlyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteUserPermanentlyUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/delete-user-permanent/${codiceUtente}`\n}\n\nexport const deleteUserPermanently = async (codiceUtente: number, options?: RequestInit): Promise<deleteUserPermanentlyResponse> => {\nreturn accessiFetch<Promise<deleteUserPermanentlyResponse>>(getDeleteUserPermanentlyUrl(codiceUtente),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato al superutente. Richiede un servizio email configurato; altrimenti risponde con ACCESSI_EMAIL_NOT_CONFIGURED.\n * @summary Forza l invio dell email di reset password a un utente\n */\nexport type forcePasswordResetResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getForcePasswordResetUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/force-password-reset/${codiceUtente}`\n}\n\nexport const forcePasswordReset = async (codiceUtente: number, options?: RequestInit): Promise<forcePasswordResetResponse> => {\nreturn accessiFetch<Promise<forcePasswordResetResponse>>(getForcePasswordResetUrl(codiceUtente),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Riservato al superutente. Invia l email di reset a tutti gli utenti la cui password non e ancora nel formato moderno. Richiede un servizio email configurato.\n * @summary Forza il reset password per tutti gli utenti con password legacy\n */\nexport type forcePasswordResetLegacyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getForcePasswordResetLegacyUrl = () => {\n\n\n return `/api/accessi/user/force-password-reset-legacy`\n}\n\nexport const forcePasswordResetLegacy = async ( options?: RequestInit): Promise<forcePasswordResetLegacyResponse> => {\nreturn accessiFetch<Promise<forcePasswordResetLegacyResponse>>(getForcePasswordResetLegacyUrl(),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Riservato a superutenti e admin (con la gerarchia ADMIN > SUPER). Genera un token per l utente target, con la stessa durata della sessione Accessi standard (jwtOptions.expiresIn), e lo allega all URL indicato come query parameter loginAsToken. Il token e una credenziale: non condividerlo e non registrarlo. Da quel momento l applicazione di destinazione decide come consumarlo.\n * @summary Genera un URL di accesso temporaneo come un altro utente\n */\nexport type createLoginAsUrlResponse = {\n data: LoginAsResponse;\n status: number;\n}\n\nexport const getCreateLoginAsUrlUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/login-as/${codiceUtente}`\n}\n\nexport const createLoginAsUrl = async (codiceUtente: number,\n loginAsRequest: LoginAsRequest, options?: RequestInit): Promise<createLoginAsUrlResponse> => {\nreturn accessiFetch<Promise<createLoginAsUrlResponse>>(getCreateLoginAsUrlUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n loginAsRequest,)\n }\n);}\n\n\n/**\n * Riservato agli amministratori. Hasha la password, aggiorna la scadenza secondo la policy e non invia email.\n * @summary Imposta direttamente la password di un utente\n */\nexport type setUserPasswordResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetUserPasswordUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/set-password/${codiceUtente}`\n}\n\nexport const setUserPassword = async (codiceUtente: number,\n setUserPasswordRequest: SetUserPasswordRequest, options?: RequestInit): Promise<setUserPasswordResponse> => {\nreturn accessiFetch<Promise<setUserPasswordResponse>>(getSetUserPasswordUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n setUserPasswordRequest,)\n }\n);}\n\n\n/**\n * @summary Imposta lo stato di registrazione di un utente\n */\nexport type setStatoRegistrazioneResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetStatoRegistrazioneUrl = () => {\n\n\n return `/api/accessi/user/set-stato`\n}\n\nexport const setStatoRegistrazione = async (setStatoRegistrazioneDto: SetStatoRegistrazioneDto, options?: RequestInit): Promise<setStatoRegistrazioneResponse> => {\nreturn accessiFetch<Promise<setStatoRegistrazioneResponse>>(getSetStatoRegistrazioneUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n setStatoRegistrazioneDto,)\n }\n);}\n\n\n/**\n * Disponibile soltanto quando publicRegistration.enabled e true. Per utenti SSO usare il provisioning master nel tag Federated authentication.\n * @summary Registra un nuovo utente\n */\nexport type registerResponse = {\n data: RegisterResponse;\n status: number;\n}\n\nexport const getRegisterUrl = () => {\n\n\n return `/api/accessi/user/register`\n}\n\nexport const register = async (publicRegisterRequest: PublicRegisterRequest, options?: RequestInit): Promise<registerResponse> => {\nreturn accessiFetch<Promise<registerResponse>>(getRegisterUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n publicRegisterRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Crea un utente in attesa di impostazione password e invia la mail di reset.\n * @summary Crea un utente locale da amministrazione\n */\nexport type createManagedUserResponse = {\n data: RegisterResponse;\n status: number;\n}\n\nexport const getCreateManagedUserUrl = () => {\n\n\n return `/api/accessi/user/create-managed-user`\n}\n\nexport const createManagedUser = async (registerRequest: RegisterRequest, options?: RequestInit): Promise<createManagedUserResponse> => {\nreturn accessiFetch<Promise<createManagedUserResponse>>(getCreateManagedUserUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n registerRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna un utente esistente\n */\nexport type updateUtenteResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateUtenteUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/update-user/${codiceUtente}`\n}\n\nexport const updateUtente = async (codiceUtente: number,\n userDto: UserDto, options?: RequestInit): Promise<updateUtenteResponse> => {\nreturn accessiFetch<Promise<updateUtenteResponse>>(getUpdateUtenteUrl(codiceUtente),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n userDto,)\n }\n);}\n\n\n/**\n * @summary Imposta il consenso GDPR per un utente\n */\nexport type setGdprResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetGdprUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/user/set-gdpr/${codiceUtente}`\n}\n\nexport const setGdpr = async (codiceUtente: number, options?: RequestInit): Promise<setGdprResponse> => {\nreturn accessiFetch<Promise<setGdprResponse>>(getSetGdprUrl(codiceUtente),\n { \n ...options,\n method: 'PATCH'\n \n }\n);}\n\n\n/**\n * Ritorna tutti i tipi di filtri disponibili nel sistema\n * @deprecated\n * @summary Recupera la lista dei tipi di filtri\n */\nexport type getTipiFiltroResponse = {\n data: GetFiltriResponse;\n status: number;\n}\n\nexport const getGetTipiFiltroUrl = () => {\n\n\n return `/api/accessi/filtri/tipi`\n}\n\nexport const getTipiFiltro = async ( options?: RequestInit): Promise<getTipiFiltroResponse> => {\nreturn accessiFetch<Promise<getTipiFiltroResponse>>(getGetTipiFiltroUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Inserisce una nuova voce nel catalogo dei tipi di filtro. Operazione riservata al superutente.\n * @deprecated\n * @summary Crea un tipo di filtro\n */\nexport type createTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getCreateTipoFiltroUrl = () => {\n\n\n return `/api/accessi/filtri/tipi`\n}\n\nexport const createTipoFiltro = async (createFilterTypeRequest: CreateFilterTypeRequest, options?: RequestInit): Promise<createTipoFiltroResponse> => {\nreturn accessiFetch<Promise<createTipoFiltroResponse>>(getCreateTipoFiltroUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFilterTypeRequest,)\n }\n);}\n\n\n/**\n * Aggiorna descrizione, campo o stato di un tipo di filtro esistente.\n * @deprecated\n * @summary Aggiorna un tipo di filtro\n */\nexport type updateTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateTipoFiltroUrl = (tipFil: number,) => {\n\n\n return `/api/accessi/filtri/tipi/${tipFil}`\n}\n\nexport const updateTipoFiltro = async (tipFil: number,\n updateFilterTypeRequest: UpdateFilterTypeRequest, options?: RequestInit): Promise<updateTipoFiltroResponse> => {\nreturn accessiFetch<Promise<updateTipoFiltroResponse>>(getUpdateTipoFiltroUrl(tipFil),\n { \n ...options,\n method: 'PUT',\n body: JSON.stringify(\n updateFilterTypeRequest,)\n }\n);}\n\n\n/**\n * Elimina un tipo di filtro solo se nessun filtro utente lo utilizza.\n * @deprecated\n * @summary Elimina un tipo di filtro\n */\nexport type deleteTipoFiltroResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteTipoFiltroUrl = (tipFil: number,) => {\n\n\n return `/api/accessi/filtri/tipi/${tipFil}`\n}\n\nexport const deleteTipoFiltro = async (tipFil: number, options?: RequestInit): Promise<deleteTipoFiltroResponse> => {\nreturn accessiFetch<Promise<deleteTipoFiltroResponse>>(getDeleteTipoFiltroUrl(tipFil),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Ritorna tutti i filtri associati ad un utente specifico\n * @deprecated\n * @summary Recupera i filtri di un utente\n */\nexport type getFiltriUtenteResponse = {\n data: GetFiltriUtenteResponse;\n status: number;\n}\n\nexport const getGetFiltriUtenteUrl = (params?: GetFiltriUtenteParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/filtri/utente?${normalizedParams.toString()}`\n}\n\nexport const getFiltriUtente = async (params?: GetFiltriUtenteParams, options?: RequestInit): Promise<getFiltriUtenteResponse> => {\nreturn accessiFetch<Promise<getFiltriUtenteResponse>>(getGetFiltriUtenteUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Permette di salvare i filtri associati ad un utente specifico\n * @deprecated\n * @summary Inserisce o aggiorna i filtri di un utente\n */\nexport type saveFiltriUtenteResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSaveFiltriUtenteUrl = () => {\n\n\n return `/api/accessi/filtri/utente`\n}\n\nexport const saveFiltriUtente = async (filtriUtente: FiltriUtente, options?: RequestInit): Promise<saveFiltriUtenteResponse> => {\nreturn accessiFetch<Promise<saveFiltriUtenteResponse>>(getSaveFiltriUtenteUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n filtriUtente,)\n }\n);}\n\n\n/**\n * @summary Aggiorna lo stato di abilitazione di un menu\n */\nexport type setMenuEnabledResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetMenuEnabledUrl = (codiceMenu: string,) => {\n\n\n return `/api/accessi/configurator/menus/${codiceMenu}/enabled`\n}\n\nexport const setMenuEnabled = async (codiceMenu: string,\n updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit): Promise<setMenuEnabledResponse> => {\nreturn accessiFetch<Promise<setMenuEnabledResponse>>(getSetMenuEnabledUrl(codiceMenu),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateEnabledStatusRequest,)\n }\n);}\n\n\n/**\n * @summary Aggiorna lo stato di abilitazione di un gruppo menu\n */\nexport type setGroupEnabledResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetGroupEnabledUrl = (codiceGruppo: string,) => {\n\n\n return `/api/accessi/configurator/groups/${codiceGruppo}/enabled`\n}\n\nexport const setGroupEnabled = async (codiceGruppo: string,\n updateEnabledStatusRequest: UpdateEnabledStatusRequest, options?: RequestInit): Promise<setGroupEnabledResponse> => {\nreturn accessiFetch<Promise<setGroupEnabledResponse>>(getSetGroupEnabledUrl(codiceGruppo),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateEnabledStatusRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Restituisce solo catalogo e stato Accessi; issuer, secret e configurazioni SSO restano nel backend.\n * @summary Elenca i provider SSO censiti\n */\nexport type getFederatedProvidersResponse = {\n data: FederatedProviderListResponse;\n status: number;\n}\n\nexport const getGetFederatedProvidersUrl = () => {\n\n\n return `/api/accessi/federated-auth/providers`\n}\n\nexport const getFederatedProviders = async ( options?: RequestInit): Promise<getFederatedProvidersResponse> => {\nreturn accessiFetch<Promise<getFederatedProvidersResponse>>(getGetFederatedProvidersUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Riservato a superutente. La chiave provider deve corrispondere alla configurazione stabile del backend; non salvare segreti, issuer o token.\n * @summary Censisce un provider SSO\n */\nexport type createFederatedProviderResponse = {\n data: FederatedProviderResponse;\n status: number;\n}\n\nexport const getCreateFederatedProviderUrl = () => {\n\n\n return `/api/accessi/federated-auth/providers`\n}\n\nexport const createFederatedProvider = async (createFederatedProviderRequest: CreateFederatedProviderRequest, options?: RequestInit): Promise<createFederatedProviderResponse> => {\nreturn accessiFetch<Promise<createFederatedProviderResponse>>(getCreateFederatedProviderUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedProviderRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. La chiave provider è immutabile: disabilitarla blocca nuovi login SSO ma conserva i collegamenti storici.\n * @summary Aggiorna o disabilita un provider SSO\n */\nexport type updateFederatedProviderResponse = {\n data: FederatedProviderResponse;\n status: number;\n}\n\nexport const getUpdateFederatedProviderUrl = (provider: string,) => {\n\n\n return `/api/accessi/federated-auth/providers/${provider}`\n}\n\nexport const updateFederatedProvider = async (provider: string,\n updateFederatedProviderRequest: UpdateFederatedProviderRequest, options?: RequestInit): Promise<updateFederatedProviderResponse> => {\nreturn accessiFetch<Promise<updateFederatedProviderResponse>>(getUpdateFederatedProviderUrl(provider),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateFederatedProviderRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Consentito solo se nessuna identita e collegata al provider; in alternativa disabilitalo.\n * @summary Elimina un provider SSO\n */\nexport type deleteFederatedProviderResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteFederatedProviderUrl = (provider: string,) => {\n\n\n return `/api/accessi/federated-auth/providers/${provider}`\n}\n\nexport const deleteFederatedProvider = async (provider: string, options?: RequestInit): Promise<deleteFederatedProviderResponse> => {\nreturn accessiFetch<Promise<deleteFederatedProviderResponse>>(getDeleteFederatedProviderUrl(provider),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato a superutente. Non restituisce token esterni o claim del provider.\n * @summary Elenca le identita SSO di un utente\n */\nexport type getFederatedIdentitiesResponse = {\n data: FederatedIdentityListResponse;\n status: number;\n}\n\nexport const getGetFederatedIdentitiesUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities`\n}\n\nexport const getFederatedIdentities = async (codiceUtente: number, options?: RequestInit): Promise<getFederatedIdentitiesResponse> => {\nreturn accessiFetch<Promise<getFederatedIdentitiesResponse>>(getGetFederatedIdentitiesUrl(codiceUtente),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Il master deve fornire un provider e subject ottenuti da una verifica SSO lato backend; questo endpoint non verifica token esterni.\n * @summary Associa un SSO gia verificato a un utente esistente\n */\nexport type linkFederatedIdentityResponse = {\n data: FederatedIdentityResponse;\n status: number;\n}\n\nexport const getLinkFederatedIdentityUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities`\n}\n\nexport const linkFederatedIdentity = async (codiceUtente: number,\n createFederatedIdentityRequest: CreateFederatedIdentityRequest, options?: RequestInit): Promise<linkFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<linkFederatedIdentityResponse>>(getLinkFederatedIdentityUrl(codiceUtente),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. L utente nasce confermato, con identita collegata e senza password salvo opt-in esplicito.\n * @summary Crea un utente gestito e SSO-only\n */\nexport type createFederatedUserResponse = {\n data: FederatedIdentityResponse;\n status: number;\n}\n\nexport const getCreateFederatedUserUrl = () => {\n\n\n return `/api/accessi/federated-auth/users`\n}\n\nexport const createFederatedUser = async (createFederatedUserRequest: CreateFederatedUserRequest, options?: RequestInit): Promise<createFederatedUserResponse> => {\nreturn accessiFetch<Promise<createFederatedUserResponse>>(getCreateFederatedUserUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n createFederatedUserRequest,)\n }\n);}\n\n\n/**\n * Con false il login locale restituisce PASSWORD_LOGIN_DISABLED; le identita SSO attive restano utilizzabili.\n * @summary Abilita o disabilita il login con password\n */\nexport type setPasswordLoginPolicyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getSetPasswordLoginPolicyUrl = (codiceUtente: number,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/password-login`\n}\n\nexport const setPasswordLoginPolicy = async (codiceUtente: number,\n setPasswordLoginPolicyRequest: SetPasswordLoginPolicyRequest, options?: RequestInit): Promise<setPasswordLoginPolicyResponse> => {\nreturn accessiFetch<Promise<setPasswordLoginPolicyResponse>>(getSetPasswordLoginPolicyUrl(codiceUtente),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n setPasswordLoginPolicyRequest,)\n }\n);}\n\n\n/**\n * Soft delete: l associazione resta tracciata ma non puo piu autenticare.\n * @summary Disabilita un identita SSO\n */\nexport type disableFederatedIdentityResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDisableFederatedIdentityUrl = (identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/identities/${identityKey}`\n}\n\nexport const disableFederatedIdentity = async (identityKey: string, options?: RequestInit): Promise<disableFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<disableFederatedIdentityResponse>>(getDisableFederatedIdentityUrl(identityKey),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Consente di modificare nota e stato attivo del collegamento. identityKey e una chiave tecnica, non un token SSO.\n * @summary Aggiorna un collegamento SSO\n */\nexport type updateFederatedIdentityResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getUpdateFederatedIdentityUrl = (identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/identities/${identityKey}`\n}\n\nexport const updateFederatedIdentity = async (identityKey: string,\n updateFederatedIdentityRequest: UpdateFederatedIdentityRequest, options?: RequestInit): Promise<updateFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<updateFederatedIdentityResponse>>(getUpdateFederatedIdentityUrl(identityKey),\n { \n ...options,\n method: 'PATCH',\n body: JSON.stringify(\n updateFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato a superutente. Rimuove il collegamento provider e subject dall’utente, senza eliminare l’utente Accessi.\n * @summary Elimina definitivamente un collegamento SSO\n */\nexport type deleteFederatedIdentityPermanentlyResponse = {\n data: ActionResponse;\n status: number;\n}\n\nexport const getDeleteFederatedIdentityPermanentlyUrl = (codiceUtente: number,\n identityKey: string,) => {\n\n\n return `/api/accessi/federated-auth/users/${codiceUtente}/identities/${identityKey}`\n}\n\nexport const deleteFederatedIdentityPermanently = async (codiceUtente: number,\n identityKey: string, options?: RequestInit): Promise<deleteFederatedIdentityPermanentlyResponse> => {\nreturn accessiFetch<Promise<deleteFederatedIdentityPermanentlyResponse>>(getDeleteFederatedIdentityPermanentlyUrl(codiceUtente,identityKey),\n { \n ...options,\n method: 'DELETE'\n \n }\n);}\n\n\n/**\n * Riservato agli utenti abilitati alla console (FLGSUPER/FLGADMIN). Restituisce un ticket monouso legato all utente, valido pochi secondi.\n * @summary Emetti un ticket di ingresso alla console\n */\nexport type createConsoleEntryTicketResponse = {\n data: ConsoleEntryTicketResponse;\n status: number;\n}\n\nexport const getCreateConsoleEntryTicketUrl = () => {\n\n\n return `/api/accessi/console/entry`\n}\n\nexport const createConsoleEntryTicket = async ( options?: RequestInit): Promise<createConsoleEntryTicketResponse> => {\nreturn accessiFetch<Promise<createConsoleEntryTicketResponse>>(getCreateConsoleEntryTicketUrl(),\n { \n ...options,\n method: 'POST'\n \n }\n);}\n\n\n/**\n * Endpoint pubblico (il ticket e l unica credenziale) protetto da rate limit; il ticket e monouso e scade in pochi secondi.\n * @summary Scambia il ticket con la sessione Accessi\n */\nexport type exchangeConsoleEntryTicketResponse = {\n data: ConsoleEntrySessionResponse;\n status: number;\n}\n\nexport const getExchangeConsoleEntryTicketUrl = () => {\n\n\n return `/api/accessi/console/entry/exchange`\n}\n\nexport const exchangeConsoleEntryTicket = async (consoleEntryExchangeRequest: ConsoleEntryExchangeRequest, options?: RequestInit): Promise<exchangeConsoleEntryTicketResponse> => {\nreturn accessiFetch<Promise<exchangeConsoleEntryTicketResponse>>(getExchangeConsoleEntryTicketUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n consoleEntryExchangeRequest,)\n }\n);}\n\n\n/**\n * Richiede un service token con scope accessi:federated:exchange. Il backend chiamante deve avere gia verificato il token del provider.\n * @summary Scambia un identita esterna verificata con una sessione Accessi\n */\nexport type exchangeFederatedIdentityResponse = {\n data: FederatedExchangeResponse;\n status: number;\n}\n\nexport const getExchangeFederatedIdentityUrl = () => {\n\n\n return `/api/accessi/federated-auth/exchange`\n}\n\nexport const exchangeFederatedIdentity = async (exchangeFederatedIdentityRequest: ExchangeFederatedIdentityRequest, options?: RequestInit): Promise<exchangeFederatedIdentityResponse> => {\nreturn accessiFetch<Promise<exchangeFederatedIdentityResponse>>(getExchangeFederatedIdentityUrl(),\n { \n ...options,\n method: 'POST',\n body: JSON.stringify(\n exchangeFederatedIdentityRequest,)\n }\n);}\n\n\n/**\n * Riservato agli admin. Genera il DDL delle entita Accessi e segnala le tabelle presenti fuori schema.\n * @summary Esporta lo schema DDL e le entita presenti\n */\nexport type getSchemaResponse = {\n data: GetSchemaResponse;\n status: number;\n}\n\nexport const getGetSchemaUrl = () => {\n\n\n return `/api/accessi/schema`\n}\n\nexport const getSchema = async ( options?: RequestInit): Promise<getSchemaResponse> => {\nreturn accessiFetch<Promise<getSchemaResponse>>(getGetSchemaUrl(),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Richiede audit.store o un sink interrogabile. Supporta filtro per evento, intervallo, utente e paginazione.\n * @summary Elenca gli eventi di audit persistiti\n */\nexport type queryAuditResponse = {\n data: void;\n status: number;\n}\n\nexport const getQueryAuditUrl = (params?: QueryAuditParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/audit?${normalizedParams.toString()}`\n}\n\nexport const queryAudit = async (params?: QueryAuditParams, options?: RequestInit): Promise<queryAuditResponse> => {\nreturn accessiFetch<Promise<queryAuditResponse>>(getQueryAuditUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n/**\n * Stessi filtri della query, senza paginazione. Il file contiene record gia redatti; limite di sicurezza 100000 record.\n * @summary Esporta gli eventi di audit in NDJSON\n */\nexport type exportAuditResponse = {\n data: void;\n status: number;\n}\n\nexport const getExportAuditUrl = (params?: ExportAuditParams,) => {\n\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n if (value === null) {\n normalizedParams.append(key, 'null');\n } else if (value !== undefined) {\n normalizedParams.append(key, value.toString());\n }\n });\n\n return `/api/accessi/audit/export?${normalizedParams.toString()}`\n}\n\nexport const exportAudit = async (params?: ExportAuditParams, options?: RequestInit): Promise<exportAuditResponse> => {\nreturn accessiFetch<Promise<exportAuditResponse>>(getExportAuditUrl(params),\n { \n ...options,\n method: 'GET'\n \n }\n);}\n\n\n"]}
|
|
@@ -49,6 +49,7 @@ const jwt = __importStar(require("jsonwebtoken"));
|
|
|
49
49
|
const contracts_1 = require("../contracts");
|
|
50
50
|
const errors_1 = require("./errors");
|
|
51
51
|
const keys_1 = require("./keys");
|
|
52
|
+
const metrics_1 = require("../../accessi-module/observability/metrics");
|
|
52
53
|
function isRecord(value) {
|
|
53
54
|
return typeof value === "object" && value !== null;
|
|
54
55
|
}
|
|
@@ -133,6 +134,7 @@ function jwkToPem(jwk) {
|
|
|
133
134
|
/** L'alert non deve mai cambiare l'esito dell'autenticazione. */
|
|
134
135
|
function notifyUnknownKeyId(options, event) {
|
|
135
136
|
var _a;
|
|
137
|
+
(0, metrics_1.recordAccessiMetric)('accessi_jwt_unknown_key_id_total', 1, Object.assign({ purpose: 'access', source: event.source }, (event.algorithm ? { algorithm: event.algorithm } : {})));
|
|
136
138
|
try {
|
|
137
139
|
(_a = options.onUnknownKeyId) === null || _a === void 0 ? void 0 : _a.call(options, event);
|
|
138
140
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/token.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2IA,gEAuIC;AAGD,4DAKC;AA1RD,mCAAqD;AAErD,kDAAoC;AAEpC,4CAA8F;AAC9F,qCAA4C;AAC5C,iCAAmD;AAuBnD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,OAAgC;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC,CAAC,OAAO,CAAC,MAAM;QAChB,CAAC,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM;YACjB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwC;IACjE,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,UAAU,CAAC;IAEnF,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY;QAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AAC5D,CAAC;AAED,SAAe,SAAS,CACtB,OAA6D;;;QAE7D,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,UAAU,CAAC,KAAK,CAAC;QACpD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,qBAAqB,EAAE,6CAA6C,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAA,OAAO,CAAC,SAAS,mCAAI,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC5C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;gBACvC,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAA,yBAAgB,EACpB,GAAG,EACH,uBAAuB,EACvB,8BAA8B,QAAQ,CAAC,MAAM,IAAI,CAClD,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,uBAAuB,EAAE,2BAA2B,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC/E,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;QAClF,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CAAA;AAED,SAAS,SAAS,CAChB,IAAoC,EACpC,GAAuB,EACvB,SAAiB;IAEjB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qFAAqF;AACrF,SAAS,oBAAoB,CAAC,SAA0B;IACtD,MAAM,GAAG,GAAG,IAAA,wBAAe,EAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/E,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,GAA4B;IAC5C,OAAO,IAAA,wBAAe,EAAC,EAAE,GAAG,EAAE,GAA4B,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACzE,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SACvC,QAAQ,EAAE,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,SAAS,kBAAkB,CACzB,OAAwC,EACxC,KAA+B;;IAE/B,IAAI,CAAC;QACH,MAAA,OAAO,CAAC,cAAc,wDAAG,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,WAAM,CAAC;QACP,6DAA6D;IAC/D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,OAAwC;;IACjF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAA,yBAAgB,EACpB,GAAG,EACH,qBAAqB,EACrB,oFAAoF,CACrF,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,qBAAqB,mCAAI,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,MAAM,mCAC5B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAA,gCAAyB,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1F,IAAI,SAAqC,CAAC;IAC1C,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAA,MAAA,OAAO,CAAC,IAAI,0CAAE,oBAAoB,mCAAI,IAAK,CAAC,CAAC;IAExF,MAAM,WAAW,GAAG,YAAsE,EAAE,iDAAjE,YAAY,GAAG,KAAK;;QAC7C,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,GAAG,GAAG;YAAE,OAAO,SAAS,CAAC,IAAI,CAAC;QACnF,oFAAoF;QACpF,IAAI,YAAY,IAAI,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,GAAG,sBAAsB,EAAE,CAAC;YACpF,OAAO,SAAS,CAAC,IAAI,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,SAAS,GAAG;YACV,IAAI;YACJ,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAK,EAAE,MAAA,OAAO,CAAC,IAAI,CAAC,UAAU,mCAAI,MAAO,CAAC;YACpE,SAAS,EAAE,GAAG;SACf,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC,CAAA,CAAC;IAEF,MAAM,MAAM,GAAG,CAAO,KAAa,EAAqC,EAAE;;QACxE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAgC,CAAC,EAAE,CAAC;YACzE,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,+BAA+B,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE;YAC7E,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;YACpB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,GAAe,CAAC;QACpB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,eAAe,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAA,yBAAgB,EACpB,GAAG,EACH,qBAAqB,EACrB,8DAA8D,CAC/D,CAAC;YACJ,CAAC;YACD,GAAG,GAAG,UAAU,CAAC;QACnB,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YACxB,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,aAAa,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC/E,WAAW,GAAG,GAAG,KAAK,aAAa,CAAC;YACtC,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,GAAG,MAAM,WAAW,EAAE,CAAC;YAC/B,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;gBACrB,qEAAqE;gBACrE,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/B,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,GAAG,EAAE,CAAC;oBACR,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;oBAChE,MAAM,IAAA,yBAAgB,EACpB,GAAG,EACH,oBAAoB,EACpB,oCAAoC,GAAG,IAAI,CAC5C,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,uCAAuC,CAAC,CAAC;YAC7F,CAAC;YACD,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,qBAAqB,EAAE,yCAAyC,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC;YACH,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,8CAC9B,UAAU,EAAE,CAAC,SAA0B,CAAC,IACrC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAClD,CAAC,OAAO,CAAC,QAAQ;gBAClB,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAyC,EAAE;gBACjE,CAAC,CAAC,EAAE,CAAC,KACP,cAAc,IACd,CAAC;QACL,CAAC;QAAC,WAAM,CAAC;YACP,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;gBACvB,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,6BAA6B,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,yCAAyC,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,+CAAmC,EAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,wBAAwB,EAAE,kCAAkC,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO;YACL,KAAK;YACL,OAAO,EAAE,QAAqC;YAC9C,YAAY;YACZ,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;SAC5B,CAAC;IACJ,CAAC,CAAA,CAAC;IAEF,OAAO;QACL,MAAM;QACA,yBAAyB,CAAC,MAAe;;gBAC7C,MAAM,KAAK,GAAG,IAAA,qCAAyB,EAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAA,yBAAgB,EAAC,GAAG,EAAE,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;gBAC3F,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;SAAA;KACF,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,SAAsB,wBAAwB,CAC5C,MAAe,EACf,OAAwC;;QAExC,OAAO,0BAA0B,CAAC,OAAO,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;CAAA","sourcesContent":["import { createHash, createPublicKey } from \"crypto\";\nimport type { JsonWebKey } from \"crypto\";\nimport * as jwt from \"jsonwebtoken\";\nimport type { AccessiAccessTokenPayload } from \"../contracts\";\nimport { extractAccessiBearerToken, resolveCodiceUtenteFromTokenPayload } from \"../contracts\";\nimport { accessiAuthError } from \"./errors\";\nimport { deriveAccessiAccessSecret } from \"./keys\";\nimport type { AccessiJwtAlgorithm, AccessiResourceServerJwtOptions, AccessiUnknownKeyIdEvent } from \"./types\";\n\n/** Esito della verifica locale di un access token. */\nexport interface AccessiTokenVerification {\n token: string;\n payload: AccessiAccessTokenPayload;\n codiceUtente: number;\n user: Record<string, unknown>;\n}\n\n/** Verificatore riutilizzabile: conserva la cache JWKS tra una richiesta e l'altra. */\nexport interface AccessiTokenVerifier {\n verify(token: string): Promise<AccessiTokenVerification>;\n verifyAuthorizationHeader(header: unknown): Promise<AccessiTokenVerification>;\n}\n\ninterface JwksCacheEntry {\n keys: Array<Record<string, unknown>>;\n expiresAt: number;\n fetchedAt: number;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction extractUser(payload: Record<string, unknown>): Record<string, unknown> {\n const userData = isRecord(payload.userData) ? payload.userData : undefined;\n const utente = isRecord(payload.utente)\n ? payload.utente\n : isRecord(userData?.utente)\n ? userData.utente\n : undefined;\n return utente ?? {};\n}\n\nfunction defaultAlgorithms(options: AccessiResourceServerJwtOptions): AccessiJwtAlgorithm[] {\n if (options.algorithms && options.algorithms.length > 0) return options.algorithms;\n\n const algorithms: AccessiJwtAlgorithm[] = [];\n if (options.secret || options.serverSecret) algorithms.push(\"HS256\");\n if (options.publicKey || options.jwks) {\n algorithms.push(\"RS256\", \"RS384\", \"RS512\", \"ES256\", \"ES384\", \"ES512\");\n }\n return algorithms;\n}\n\nfunction algorithmFamily(algorithm: string): \"hmac\" | \"asymmetric\" {\n return algorithm.startsWith(\"HS\") ? \"hmac\" : \"asymmetric\";\n}\n\nasync function fetchJwks(\n options: NonNullable<AccessiResourceServerJwtOptions[\"jwks\"]>,\n): Promise<Array<Record<string, unknown>>> {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (typeof fetchImpl !== \"function\") {\n throw accessiAuthError(500, \"AUTH_CONFIG_INVALID\", \"fetch non disponibile per caricare la JWKS.\");\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? 3000);\n try {\n const response = await fetchImpl(options.url, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: controller.signal,\n });\n if (!response.ok) {\n throw accessiAuthError(\n 503,\n \"AUTH_JWKS_UNAVAILABLE\",\n `JWKS non disponibile (HTTP ${response.status}).`,\n );\n }\n const payload: unknown = await response.json();\n if (!isRecord(payload) || !Array.isArray(payload.keys)) {\n throw accessiAuthError(503, \"AUTH_JWKS_UNAVAILABLE\", \"Risposta JWKS non valida.\");\n }\n return payload.keys.filter(isRecord);\n } catch (error) {\n if (error && typeof error === \"object\" && \"code\" in error && \"status\" in error) {\n throw error;\n }\n throw accessiAuthError(503, \"AUTH_JWKS_UNAVAILABLE\", \"JWKS non raggiungibile.\");\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction selectJwk(\n keys: Array<Record<string, unknown>>,\n kid: string | undefined,\n algorithm: string,\n): Record<string, unknown> | undefined {\n return keys.find((key) => {\n const keyAlg = typeof key.alg === \"string\" ? key.alg : undefined;\n if (keyAlg && keyAlg !== algorithm) return false;\n if (!kid) return true;\n return typeof key.kid === \"string\" && key.kid === kid;\n });\n}\n\n/** Fingerprint della chiave pubblica, identico a quello usato dalla JWKS Accessi. */\nfunction fingerprintPublicKey(publicKey: string | Buffer): string {\n const der = createPublicKey(publicKey).export({ type: \"spki\", format: \"der\" });\n return createHash(\"sha256\").update(der).digest(\"base64url\").slice(0, 16);\n}\n\nfunction jwkToPem(jwk: Record<string, unknown>): string {\n return createPublicKey({ key: jwk as unknown as JsonWebKey, format: \"jwk\" })\n .export({ type: \"spki\", format: \"pem\" })\n .toString();\n}\n\n/** L'alert non deve mai cambiare l'esito dell'autenticazione. */\nfunction notifyUnknownKeyId(\n options: AccessiResourceServerJwtOptions,\n event: AccessiUnknownKeyIdEvent,\n): void {\n try {\n options.onUnknownKeyId?.(event);\n } catch {\n // Un logger o webhook guasto non trasforma un 401 in un 500.\n }\n}\n\n/**\n * Crea un verificatore locale riutilizzabile.\n *\n * Supporta HMAC, chiavi pubbliche PEM (RS ed ES) e JWKS remoto. La cache\n * JWKS e legata all'istanza del verificatore.\n */\nexport function createAccessiTokenVerifier(options: AccessiResourceServerJwtOptions): AccessiTokenVerifier {\n const algorithms = defaultAlgorithms(options);\n if (algorithms.length === 0) {\n throw accessiAuthError(\n 500,\n \"AUTH_CONFIG_INVALID\",\n \"Configurare almeno una tra jwt.secret, jwt.serverSecret, jwt.publicKey e jwt.jwks.\",\n );\n }\n\n const clockTolerance = options.clockToleranceSeconds ?? 5;\n const hmacSecret = options.secret\n ?? (options.serverSecret ? deriveAccessiAccessSecret(options.serverSecret) : undefined);\n let jwksCache: JwksCacheEntry | undefined;\n const jwksMinRefreshInterval = Math.max(0, options.jwks?.minRefreshIntervalMs ?? 5_000);\n\n const getJwksKeys = async (forceRefresh = false): Promise<Array<Record<string, unknown>>> => {\n if (!options.jwks) return [];\n const now = Date.now();\n if (!forceRefresh && jwksCache && jwksCache.expiresAt > now) return jwksCache.keys;\n // Refresh forzato ma troppo ravvicinato: riusa la cache per non martellare la JWKS.\n if (forceRefresh && jwksCache && now - jwksCache.fetchedAt < jwksMinRefreshInterval) {\n return jwksCache.keys;\n }\n const keys = await fetchJwks(options.jwks);\n jwksCache = {\n keys,\n expiresAt: now + Math.max(1_000, options.jwks.cacheTtlMs ?? 300_000),\n fetchedAt: now,\n };\n return keys;\n };\n\n const verify = async (token: string): Promise<AccessiTokenVerification> => {\n const decoded = jwt.decode(token, { complete: true });\n if (!decoded || typeof decoded === \"string\" || !isRecord(decoded.header)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Token JWT non valido.\");\n }\n\n const algorithm = typeof decoded.header.alg === \"string\" ? decoded.header.alg : undefined;\n if (!algorithm || !algorithms.includes(algorithm as AccessiJwtAlgorithm)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Algoritmo JWT non consentito.\");\n }\n\n const kid = typeof decoded.header.kid === \"string\" && decoded.header.kid !== \"\"\n ? decoded.header.kid\n : undefined;\n let key: jwt.Secret;\n let kidMismatch = false;\n if (algorithmFamily(algorithm) === \"hmac\") {\n if (!hmacSecret) {\n throw accessiAuthError(\n 500,\n \"AUTH_CONFIG_INVALID\",\n \"jwt.secret o jwt.serverSecret non configurato per token HS*.\",\n );\n }\n key = hmacSecret;\n } else if (options.publicKey) {\n key = options.publicKey;\n if (kid) {\n const expectedKeyId = options.keyId ?? fingerprintPublicKey(options.publicKey);\n kidMismatch = kid !== expectedKeyId;\n }\n } else if (options.jwks) {\n let keys = await getJwksKeys();\n let selected = selectJwk(keys, kid, algorithm);\n if (!selected && kid) {\n // La JWKS in cache potrebbe precedere una rotazione appena avvenuta.\n keys = await getJwksKeys(true);\n selected = selectJwk(keys, kid, algorithm);\n }\n if (!selected) {\n if (kid) {\n notifyUnknownKeyId(options, { kid, algorithm, source: \"jwks\" });\n throw accessiAuthError(\n 401,\n \"AUTH_TOKEN_INVALID\",\n `Chiave JWKS non trovata per kid \"${kid}\".`,\n );\n }\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Chiave JWKS non trovata per il token.\");\n }\n key = jwkToPem(selected);\n } else {\n throw accessiAuthError(500, \"AUTH_CONFIG_INVALID\", \"jwt.publicKey/jwt.jwks non configurati.\");\n }\n\n let verified: unknown;\n try {\n verified = jwt.verify(token, key, {\n algorithms: [algorithm as jwt.Algorithm],\n ...(options.issuer ? { issuer: options.issuer } : {}),\n ...(options.audience\n ? { audience: options.audience as jwt.VerifyOptions[\"audience\"] }\n : {}),\n clockTolerance,\n });\n } catch {\n if (kidMismatch && kid) {\n notifyUnknownKeyId(options, { kid, algorithm, source: \"publicKey\" });\n }\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Token non valido o scaduto.\");\n }\n\n if (!isRecord(verified)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Payload JWT non valido.\");\n }\n if (verified.typ !== \"access\") {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Il token non e un access token Accessi.\");\n }\n\n const codiceUtente = resolveCodiceUtenteFromTokenPayload(verified);\n if (!codiceUtente) {\n throw accessiAuthError(401, \"AUTH_USER_CODE_MISSING\", \"Token privo di un utente valido.\");\n }\n\n return {\n token,\n payload: verified as AccessiAccessTokenPayload,\n codiceUtente,\n user: extractUser(verified),\n };\n };\n\n return {\n verify,\n async verifyAuthorizationHeader(header: unknown): Promise<AccessiTokenVerification> {\n const token = extractAccessiBearerToken(header);\n if (!token) {\n throw accessiAuthError(401, \"AUTH_TOKEN_MISSING\", \"Token Bearer mancante o malformato.\");\n }\n return verify(token);\n },\n };\n}\n\n/** Converte un header `Authorization` in verifica del token, senza cache JWKS condivisa. */\nexport async function verifyAccessiAccessToken(\n header: unknown,\n options: AccessiResourceServerJwtOptions,\n): Promise<AccessiTokenVerification> {\n return createAccessiTokenVerifier(options).verifyAuthorizationHeader(header);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/accessi/resource-server/token.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, createPublicKey } from \"crypto\";\nimport type { JsonWebKey } from \"crypto\";\nimport * as jwt from \"jsonwebtoken\";\nimport type { AccessiAccessTokenPayload } from \"../contracts\";\nimport { extractAccessiBearerToken, resolveCodiceUtenteFromTokenPayload } from \"../contracts\";\nimport { accessiAuthError } from \"./errors\";\nimport { deriveAccessiAccessSecret } from \"./keys\";\nimport { recordAccessiMetric } from \"../../accessi-module/observability/metrics\";\nimport type { AccessiJwtAlgorithm, AccessiResourceServerJwtOptions, AccessiUnknownKeyIdEvent } from \"./types\";\n\n/** Esito della verifica locale di un access token. */\nexport interface AccessiTokenVerification {\n token: string;\n payload: AccessiAccessTokenPayload;\n codiceUtente: number;\n user: Record<string, unknown>;\n}\n\n/** Verificatore riutilizzabile: conserva la cache JWKS tra una richiesta e l'altra. */\nexport interface AccessiTokenVerifier {\n verify(token: string): Promise<AccessiTokenVerification>;\n verifyAuthorizationHeader(header: unknown): Promise<AccessiTokenVerification>;\n}\n\ninterface JwksCacheEntry {\n keys: Array<Record<string, unknown>>;\n expiresAt: number;\n fetchedAt: number;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction extractUser(payload: Record<string, unknown>): Record<string, unknown> {\n const userData = isRecord(payload.userData) ? payload.userData : undefined;\n const utente = isRecord(payload.utente)\n ? payload.utente\n : isRecord(userData?.utente)\n ? userData.utente\n : undefined;\n return utente ?? {};\n}\n\nfunction defaultAlgorithms(options: AccessiResourceServerJwtOptions): AccessiJwtAlgorithm[] {\n if (options.algorithms && options.algorithms.length > 0) return options.algorithms;\n\n const algorithms: AccessiJwtAlgorithm[] = [];\n if (options.secret || options.serverSecret) algorithms.push(\"HS256\");\n if (options.publicKey || options.jwks) {\n algorithms.push(\"RS256\", \"RS384\", \"RS512\", \"ES256\", \"ES384\", \"ES512\");\n }\n return algorithms;\n}\n\nfunction algorithmFamily(algorithm: string): \"hmac\" | \"asymmetric\" {\n return algorithm.startsWith(\"HS\") ? \"hmac\" : \"asymmetric\";\n}\n\nasync function fetchJwks(\n options: NonNullable<AccessiResourceServerJwtOptions[\"jwks\"]>,\n): Promise<Array<Record<string, unknown>>> {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (typeof fetchImpl !== \"function\") {\n throw accessiAuthError(500, \"AUTH_CONFIG_INVALID\", \"fetch non disponibile per caricare la JWKS.\");\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? 3000);\n try {\n const response = await fetchImpl(options.url, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: controller.signal,\n });\n if (!response.ok) {\n throw accessiAuthError(\n 503,\n \"AUTH_JWKS_UNAVAILABLE\",\n `JWKS non disponibile (HTTP ${response.status}).`,\n );\n }\n const payload: unknown = await response.json();\n if (!isRecord(payload) || !Array.isArray(payload.keys)) {\n throw accessiAuthError(503, \"AUTH_JWKS_UNAVAILABLE\", \"Risposta JWKS non valida.\");\n }\n return payload.keys.filter(isRecord);\n } catch (error) {\n if (error && typeof error === \"object\" && \"code\" in error && \"status\" in error) {\n throw error;\n }\n throw accessiAuthError(503, \"AUTH_JWKS_UNAVAILABLE\", \"JWKS non raggiungibile.\");\n } finally {\n clearTimeout(timeout);\n }\n}\n\nfunction selectJwk(\n keys: Array<Record<string, unknown>>,\n kid: string | undefined,\n algorithm: string,\n): Record<string, unknown> | undefined {\n return keys.find((key) => {\n const keyAlg = typeof key.alg === \"string\" ? key.alg : undefined;\n if (keyAlg && keyAlg !== algorithm) return false;\n if (!kid) return true;\n return typeof key.kid === \"string\" && key.kid === kid;\n });\n}\n\n/** Fingerprint della chiave pubblica, identico a quello usato dalla JWKS Accessi. */\nfunction fingerprintPublicKey(publicKey: string | Buffer): string {\n const der = createPublicKey(publicKey).export({ type: \"spki\", format: \"der\" });\n return createHash(\"sha256\").update(der).digest(\"base64url\").slice(0, 16);\n}\n\nfunction jwkToPem(jwk: Record<string, unknown>): string {\n return createPublicKey({ key: jwk as unknown as JsonWebKey, format: \"jwk\" })\n .export({ type: \"spki\", format: \"pem\" })\n .toString();\n}\n\n/** L'alert non deve mai cambiare l'esito dell'autenticazione. */\nfunction notifyUnknownKeyId(\n options: AccessiResourceServerJwtOptions,\n event: AccessiUnknownKeyIdEvent,\n): void {\n recordAccessiMetric('accessi_jwt_unknown_key_id_total', 1, {\n purpose: 'access',\n source: event.source,\n ...(event.algorithm ? { algorithm: event.algorithm } : {}),\n });\n try {\n options.onUnknownKeyId?.(event);\n } catch {\n // Un logger o webhook guasto non trasforma un 401 in un 500.\n }\n}\n\n/**\n * Crea un verificatore locale riutilizzabile.\n *\n * Supporta HMAC, chiavi pubbliche PEM (RS ed ES) e JWKS remoto. La cache\n * JWKS e legata all'istanza del verificatore.\n */\nexport function createAccessiTokenVerifier(options: AccessiResourceServerJwtOptions): AccessiTokenVerifier {\n const algorithms = defaultAlgorithms(options);\n if (algorithms.length === 0) {\n throw accessiAuthError(\n 500,\n \"AUTH_CONFIG_INVALID\",\n \"Configurare almeno una tra jwt.secret, jwt.serverSecret, jwt.publicKey e jwt.jwks.\",\n );\n }\n\n const clockTolerance = options.clockToleranceSeconds ?? 5;\n const hmacSecret = options.secret\n ?? (options.serverSecret ? deriveAccessiAccessSecret(options.serverSecret) : undefined);\n let jwksCache: JwksCacheEntry | undefined;\n const jwksMinRefreshInterval = Math.max(0, options.jwks?.minRefreshIntervalMs ?? 5_000);\n\n const getJwksKeys = async (forceRefresh = false): Promise<Array<Record<string, unknown>>> => {\n if (!options.jwks) return [];\n const now = Date.now();\n if (!forceRefresh && jwksCache && jwksCache.expiresAt > now) return jwksCache.keys;\n // Refresh forzato ma troppo ravvicinato: riusa la cache per non martellare la JWKS.\n if (forceRefresh && jwksCache && now - jwksCache.fetchedAt < jwksMinRefreshInterval) {\n return jwksCache.keys;\n }\n const keys = await fetchJwks(options.jwks);\n jwksCache = {\n keys,\n expiresAt: now + Math.max(1_000, options.jwks.cacheTtlMs ?? 300_000),\n fetchedAt: now,\n };\n return keys;\n };\n\n const verify = async (token: string): Promise<AccessiTokenVerification> => {\n const decoded = jwt.decode(token, { complete: true });\n if (!decoded || typeof decoded === \"string\" || !isRecord(decoded.header)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Token JWT non valido.\");\n }\n\n const algorithm = typeof decoded.header.alg === \"string\" ? decoded.header.alg : undefined;\n if (!algorithm || !algorithms.includes(algorithm as AccessiJwtAlgorithm)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Algoritmo JWT non consentito.\");\n }\n\n const kid = typeof decoded.header.kid === \"string\" && decoded.header.kid !== \"\"\n ? decoded.header.kid\n : undefined;\n let key: jwt.Secret;\n let kidMismatch = false;\n if (algorithmFamily(algorithm) === \"hmac\") {\n if (!hmacSecret) {\n throw accessiAuthError(\n 500,\n \"AUTH_CONFIG_INVALID\",\n \"jwt.secret o jwt.serverSecret non configurato per token HS*.\",\n );\n }\n key = hmacSecret;\n } else if (options.publicKey) {\n key = options.publicKey;\n if (kid) {\n const expectedKeyId = options.keyId ?? fingerprintPublicKey(options.publicKey);\n kidMismatch = kid !== expectedKeyId;\n }\n } else if (options.jwks) {\n let keys = await getJwksKeys();\n let selected = selectJwk(keys, kid, algorithm);\n if (!selected && kid) {\n // La JWKS in cache potrebbe precedere una rotazione appena avvenuta.\n keys = await getJwksKeys(true);\n selected = selectJwk(keys, kid, algorithm);\n }\n if (!selected) {\n if (kid) {\n notifyUnknownKeyId(options, { kid, algorithm, source: \"jwks\" });\n throw accessiAuthError(\n 401,\n \"AUTH_TOKEN_INVALID\",\n `Chiave JWKS non trovata per kid \"${kid}\".`,\n );\n }\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Chiave JWKS non trovata per il token.\");\n }\n key = jwkToPem(selected);\n } else {\n throw accessiAuthError(500, \"AUTH_CONFIG_INVALID\", \"jwt.publicKey/jwt.jwks non configurati.\");\n }\n\n let verified: unknown;\n try {\n verified = jwt.verify(token, key, {\n algorithms: [algorithm as jwt.Algorithm],\n ...(options.issuer ? { issuer: options.issuer } : {}),\n ...(options.audience\n ? { audience: options.audience as jwt.VerifyOptions[\"audience\"] }\n : {}),\n clockTolerance,\n });\n } catch {\n if (kidMismatch && kid) {\n notifyUnknownKeyId(options, { kid, algorithm, source: \"publicKey\" });\n }\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Token non valido o scaduto.\");\n }\n\n if (!isRecord(verified)) {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Payload JWT non valido.\");\n }\n if (verified.typ !== \"access\") {\n throw accessiAuthError(401, \"AUTH_TOKEN_INVALID\", \"Il token non e un access token Accessi.\");\n }\n\n const codiceUtente = resolveCodiceUtenteFromTokenPayload(verified);\n if (!codiceUtente) {\n throw accessiAuthError(401, \"AUTH_USER_CODE_MISSING\", \"Token privo di un utente valido.\");\n }\n\n return {\n token,\n payload: verified as AccessiAccessTokenPayload,\n codiceUtente,\n user: extractUser(verified),\n };\n };\n\n return {\n verify,\n async verifyAuthorizationHeader(header: unknown): Promise<AccessiTokenVerification> {\n const token = extractAccessiBearerToken(header);\n if (!token) {\n throw accessiAuthError(401, \"AUTH_TOKEN_MISSING\", \"Token Bearer mancante o malformato.\");\n }\n return verify(token);\n },\n };\n}\n\n/** Converte un header `Authorization` in verifica del token, senza cache JWKS condivisa. */\nexport async function verifyAccessiAccessToken(\n header: unknown,\n options: AccessiResourceServerJwtOptions,\n): Promise<AccessiTokenVerification> {\n return createAccessiTokenVerifier(options).verifyAuthorizationHeader(header);\n}\n"]}
|
|
@@ -21,6 +21,7 @@ const accessi_module_1 = require("../../accessi-module");
|
|
|
21
21
|
const accessiOptionsFromEnv_1 = require("../../accessi-module/database-updates/accessiOptionsFromEnv");
|
|
22
22
|
const readiness_1 = require("../../accessi-module/health/readiness");
|
|
23
23
|
const validateOptions_1 = require("../../accessi-module/security/validateOptions");
|
|
24
|
+
const metrics_1 = require("../../accessi-module/observability/metrics");
|
|
24
25
|
function normalizePath(value) {
|
|
25
26
|
return `/${value.replace(/^\/+|\/+$/g, '')}`;
|
|
26
27
|
}
|
|
@@ -106,7 +107,7 @@ function createAccessiService() {
|
|
|
106
107
|
if (options.metrics !== false) {
|
|
107
108
|
app.get(`${healthPath}/metrics`, (_req, res) => {
|
|
108
109
|
res.setHeader('Content-Type', 'text/plain; version=0.0.4');
|
|
109
|
-
res.status(200).send(metrics.render());
|
|
110
|
+
res.status(200).send(`${metrics.render()}${(0, metrics_1.renderAccessiMetrics)()}`);
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
const result = yield (0, accessi_module_1.initializeAccessiModule)(app, accessiOptions);
|