{"version":3,"file":"15236.2ef4db9693bc6b9e329e.js","mappings":"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","sources":["webpack://[name]/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://[name]/./node_modules/date-fns/esm/startOfDay/index.js","webpack://[name]/./node_modules/date-fns/esm/toDate/index.js","webpack://[name]/./src/constant/ApplicationPermissionsEnum.ts","webpack://[name]/./src/classes/PermissionDataFormatter.ts","webpack://[name]/./src/constant/DeviceConstants.ts","webpack://[name]/./src/constant/ModalEnum.ts","webpack://[name]/./src/constant/Organizations.ts","webpack://[name]/./src/constant/RoleOwnerEnum.ts","webpack://[name]/./src/constant/Roles.ts","webpack://[name]/./src/constant/UserOwnerEnum.ts","webpack://[name]/./src/interfaces/user.ts","webpack://[name]/./src/interfaces/userGroup.ts","webpack://[name]/./src/store/Permission-store-mutations.ts","webpack://[name]/./src/classes/utils/PermissionsParser.ts","webpack://[name]/./src/store/Permission-store-actions.ts","webpack://[name]/./src/store/Permission-store-getters.ts","webpack://[name]/./src/store/Permission-store.ts","webpack://[name]/./src/utils/organizationUtils.ts"],"sourcesContent":["export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","enum ApplicationPermissionsEntity {\n PORTAL = 'portal',\n USERS = 'users',\n USERGROUPS = 'usergroups',\n ORGANIZATIONS = 'organizations',\n ROLES = 'roles',\n DASHBOARDS = 'dashboards',\n MODELS = 'models',\n DEVICES = 'devices',\n DEVICEGROUPS = 'devicegroups',\n NOTIFICATIONS = 'notifications',\n ALARMS = 'alarms',\n VPN = 'vpn',\n PRODUCTS = 'products',\n AUDIT = 'audit'\n}\n\nexport default ApplicationPermissionsEntity;","import{\n _map,\n _omit,\n _difference,\n _filter,\n _join,\n _includes,\n _pick,\n _each,\n _concat\n} from \"../lodashboot\";\nimport store from '../store/store';\nimport ApplicationPermissionsEntity from '../constant/ApplicationPermissionsEnum';\nimport { UserGroupInDTO, UserGroupMembershipRole } from \"@/interfaces/userGroup\";\nimport { UserUpdateDTO } from \"@/interfaces/user\";\n\nexport interface UserGroupMembershipDifference {\n id: number;\n membershipRole: UserGroupMembershipRole;\n}\nexport default class PermissionDataFormatter {\n static getOrganizationName() {\n const organization = store.getters[\"permission/getOrganizations\"].selectedSubOrganization;\n return organization.name;\n }\n\n static formatModelRoleData(modelRoleData) {\n const { name, description, label, modelPaths, deviceGroups, type, deviceGeneralPermission, vpnGeneralPermission } = modelRoleData;\n const formattedModelPaths = _map(modelPaths, (element) => {\n return _omit(element, [\"name\", \"id\"]);\n });\n const formattedDeviceGroups = _map(deviceGroups, \"id\");\n const formattedModelRoleData = {\n label,\n description,\n name,\n modelPathPermissions: formattedModelPaths,\n deviceGroups: formattedDeviceGroups,\n type,\n deviceGeneralPermission,\n vpnGeneralPermission,\n };\n return formattedModelRoleData;\n }\n\n static formatModelPathsData(modelPaths) {\n const formattedModelPaths = _map(modelPaths, (element) => {\n const { read, write, history, modelPath } = element;\n return { read, write, history, name: modelPath.path, modelPath: modelPath.id };\n });\n return formattedModelPaths;\n }\n\n static formatUserEditedData(userData : {\n userData: UserUpdateDTO,\n memberOf: number[],\n regularUserOf: number[],\n adminUserOf: number[],\n userRoles: number[],\n userGroups: UserGroupInDTO[],\n userSpecialGroupRoles: UserGroupInDTO[],\n associatedDevices: number[],\n userAssociatedDevices: number[],\n }) : {\n groupsToAdd: UserGroupMembershipDifference[],\n groupsToRemove: number[],\n rolesToAdd: number[],\n rolesToRemove: number[],\n passwordChangeInvitation: boolean,\n associatedDevicesToAdd: number[],\n associatedDevicesToRemove: number[],\n } {\n const { memberOf, regularUserOf, adminUserOf, userRoles, userSpecialGroupRoles, associatedDevices, userAssociatedDevices } = userData;\n let { userGroups } = userData;\n let groupsToAdd = [];\n let groupsToRemove = [];\n if(!userGroups) userGroups = [];\n\n\n let processedGroups = new Set();\n const userGroupsMap = new Map();\n for(let g of userGroups) {\n userGroupsMap.set(g.id, g);\n }\n if ( userData.userData.groupPoliciesEnabled ) {\n for(let g of adminUserOf) {\n const currentGroup = userGroupsMap.get(g);\n if (!currentGroup || currentGroup.membershipRole != UserGroupMembershipRole.ADMIN) {\n groupsToAdd.push({id: g, membershipRole: UserGroupMembershipRole.ADMIN});\n }\n processedGroups.add(g);\n }\n for(let g of regularUserOf) {\n const currentGroup = userGroupsMap.get(g);\n if (!currentGroup || currentGroup.membershipRole == UserGroupMembershipRole.ADMIN) {\n groupsToAdd.push({id: g, membershipRole: UserGroupMembershipRole.USER});\n }\n processedGroups.add(g);\n }\n\n } else { // group policies disabled\n for(let g of memberOf) {\n if (!userGroupsMap.has(g)) {\n groupsToAdd.push({id: g, UserGroupMembershipRole: undefined});\n }\n processedGroups.add(g);\n }\n }\n\n // old groups not processed must be removed\n for(let g of userGroups) {\n if (!processedGroups.has(g.id)) {\n groupsToRemove.push(g.id);\n }\n }\n const userRolesId = _map(userSpecialGroupRoles, \"id\");\n const rolesToAdd = _difference(userRoles, userRolesId);\n const rolesToRemove = _difference(userRolesId, userRoles);\n\n const associatedDevicesToAdd = _difference(associatedDevices, userAssociatedDevices);\n const associatedDevicesToRemove = _difference(userAssociatedDevices, associatedDevices);\n\n return { \n groupsToAdd, \n groupsToRemove, \n rolesToAdd, \n rolesToRemove, \n passwordChangeInvitation: userData.userData.passwordChangeInvitation,\n associatedDevicesToAdd,\n associatedDevicesToRemove,\n };\n }\n\n static formatRolesAssociatedToDevicePermissions(roles) {\n const rolesFilteredByLabel = _map(roles, \"label\");\n return _join(rolesFilteredByLabel, \", \");\n }\n\n static getDefaultGroupPermissions(deviceGroups) {\n const organizationResourceId = PermissionDataFormatter.getOrganizationName();\n const defaultDeviceGroup = _filter(deviceGroups, (deviceGroup: any) => {\n return deviceGroup.name === `*`;\n });\n return defaultDeviceGroup[0];\n }\n\n static getFormattedDefaultGroupPermissions(deviceGroups) {\n const defaultDeviceGroup = _filter(deviceGroups, (deviceGroup: any) => {\n return deviceGroup.name === `*`;\n });\n return defaultDeviceGroup[0];\n }\n\n static formatTableRow(elements, field) {\n return _map(elements, field).join(\", \");\n }\n\n static formatSpanTableRow(elements, field) {\n const label = _map(elements, field);\n return label.join(`,\n `);\n }\n\n static formatModelPermissionsData(permissions) {\n const modelPermissions = _map(permissions, (permission) => {\n return _omit(permission, \"modelRoleOutDTO\");\n });\n\n let modelRole = {};\n if (permissions.length) modelRole = permissions[0].modelRoleOutDTO;\n\n return { modelPermissions, modelRole: _pick(modelRole, [\"id\", \"name\"]) };\n }\n\n static sortPermissions(permissionGroups) {\n for (let prop in permissionGroups) {\n if (permissionGroups.hasOwnProperty(prop)) {\n permissionGroups[prop].sort((a, b) => {\n return a.name > b.name ? 1 : -1;\n });\n }\n }\n }\n\n static groupsApplicationPermissions(permissions, iot, vpn, dealer) {\n let formattedPermission = {};\n let toOmit = [ApplicationPermissionsEntity.PORTAL];\n if (!iot) {\n toOmit.push(ApplicationPermissionsEntity.DASHBOARDS, ApplicationPermissionsEntity.MODELS, ApplicationPermissionsEntity.NOTIFICATIONS, ApplicationPermissionsEntity.ALARMS);\n }\n if (!vpn) {\n toOmit.push(ApplicationPermissionsEntity.VPN);\n }\n if (!dealer) {\n toOmit.push(ApplicationPermissionsEntity.PRODUCTS);\n }\n const allEntities = Object.values(ApplicationPermissionsEntity);\n const entities = allEntities.filter((x) => !toOmit.includes(x));\n _each(entities, (entity) => {\n const entityPermission = _filter(permissions, (permission: any) => {\n return _includes(permission.name, \".\" + entity + \".\");\n });\n formattedPermission[entity] = entityPermission;\n });\n\n this.sortPermissions(formattedPermission);\n return formattedPermission;\n }\n\n static formatUserData({\n username,\n email,\n groups,\n roles,\n password = null,\n isServiceAccount = false,\n serviceAccountClientWebOrigins = [],\n passwordChangeInvitation = false,\n groupPoliciesEnabled = false,\n associatedDevices = [],\n }: {\n username: string;\n email: string;\n groups: Array;\n roles: Array;\n password: string;\n isServiceAccount: boolean;\n serviceAccountClientWebOrigins: string[];\n passwordChangeInvitation: boolean;\n groupPoliciesEnabled: boolean;\n associatedDevices: Array;\n }) {\n const user_name = username ? username : email;\n const userData = {\n email: email,\n username: user_name,\n emailVerified: true,\n temporaryPassword: true,\n serviceAccount: isServiceAccount,\n serviceAccountClientWebOrigins,\n passwordChangeInvitation,\n groupPoliciesEnabled,\n };\n const memberOf = groupPoliciesEnabled ? [] : _map(groups, \"id\");\n \n let regularUserOf: number[] = [];\n let adminUserOf: number[] = [];\n if (groupPoliciesEnabled) {\n for(let g of groups){\n if (g.membershipRole == UserGroupMembershipRole.ADMIN) {\n adminUserOf.push(g.id);\n } else {\n regularUserOf.push(g.id);\n }\n }\n }\n \n if (password) {\n userData[\"password\"] = password;\n }\n\n return { userData, memberOf, regularUserOf, adminUserOf, userRoles: roles, associatedDevices };\n }\n\n static formatGroupData(isUpdating, name, roles, appStoreRoles, dataRoles, users) {\n const groupName = isUpdating ? undefined : name;\n const rolesId = _map(_concat(roles, ...appStoreRoles, ...dataRoles), \"id\");\n \n const membersId = [];\n const regularUserMembersId = [];\n const adminUserMembersId = [];\n\n users.forEach((user) => {\n if (!user.groupPoliciesEnabled) {\n membersId.push(user.id);\n } else {\n if (user.membershipRole == UserGroupMembershipRole.ADMIN) {\n adminUserMembersId.push(user.id);\n } else {\n regularUserMembersId.push(user.id);\n }\n } \n });\n\n return { name: groupName, rolesId, membersId, regularUserMembersId, adminUserMembersId };\n }\n}\n","export const DeviceGroupAllDevicesName = \"*\";\n","enum ModalEnum {\n ERROR_MODAL = 'errorModal',\n SUCCESS_MODAL = 'successModal',\n SPINNER_MODAL = 'spinnerModal',\n CONFIRMED_MODAL = 'confirmedModal',\n CUSTOM_MODAL = 'customModal',\n INPUT_MODAL = 'inputFieldModal',\n SNACKBAR = 'snackbar',\n}\n \nexport default ModalEnum;","export enum OrganizationStatus {\n DELETED = 'DELETED',\n DELETING = 'DELETING'\n}","export enum RoleOwnerEnum {\n SYSTEM = \"SYSTEM\",\n ORGANIZATION = \"ORGANIZATION\",\n APPLICATION = \"APPLICATION\",\n}\n\nexport namespace RoleOwnerEnum {\n \n export function canEdit(roleOwner: RoleOwnerEnum): boolean {\n return roleOwner === RoleOwnerEnum.ORGANIZATION;\n }\n\n export function canDelete(roleOwner: RoleOwnerEnum): boolean {\n return roleOwner === RoleOwnerEnum.ORGANIZATION;\n }\n\n /**\n * Returns the list of role that are created by the user of an organization or by corvina software automatically (es. when an organization is created)\n * @returns RoleOwnerEnum[] - SYSTEM, ORGANIZATION\n */\n export function getByUserOrByCorvina(): RoleOwnerEnum[] {\n return [\n RoleOwnerEnum.SYSTEM,\n RoleOwnerEnum.ORGANIZATION,\n ];\n }\n\n export function isByUserOrByCorvina(roleOwner: RoleOwnerEnum): boolean {\n return getByUserOrByCorvina().includes(roleOwner);\n }\n\n /**\n * Returns the list of role created when an application is installed\n * @returns RoleOwnerEnum[] - APPLICATION\n */\n export function getByAppStore(): RoleOwnerEnum[] {\n return [\n RoleOwnerEnum.APPLICATION,\n ];\n }\n \n export function isByAppStore(roleOwner: RoleOwnerEnum): boolean {\n return getByAppStore().includes(roleOwner);\n }\n}","enum RolesEnum {\n APPLICATION = 'APPLICATION',\n DATA = 'DEVICE',\n DEVICE = 'DEVICE', // legacy name?\n}\n\n// Using _ as separator\n// . (dot) causes problems on backend: e.g. POST has \"app.rolename\" and backend returns \"app:rolename\"\nexport enum RolesPrefix {\n ROLEDATA = 'data_', // keep in sync with ROLESEPARATOR\n ROLEAPP = 'app_', // keep in sync with ROLESEPARATOR\n ROLEVPN = 'vpn_', // keep in sync with ROLESEPARATOR\n ROLESEPARATOR = '_', // keep in sync with above\n}\n\n\nexport enum DEVICE_ROLE_PERMISSION {\n NONE = 'NONE',\n USER = 'REGULAR_USER',\n ADMIN = 'ADMINISTRATOR'\n};\n\nexport default RolesEnum;","export enum UserOwnerEnum {\n ORGANIZATION = \"ORGANIZATION\",\n APP = \"APP\",\n}\n\nexport namespace UserOwnerEnum {\n \n export function canEdit(roleOwner: UserOwnerEnum): boolean {\n return roleOwner === UserOwnerEnum.ORGANIZATION;\n }\n\n export function canDelete(roleOwner: UserOwnerEnum): boolean {\n return roleOwner === UserOwnerEnum.ORGANIZATION;\n }\n \n}","import { UserOwnerEnum } from '@/constant/UserOwnerEnum';\nimport PaginationQueryParamsDTO from './commons/PaginationQueryParamsDTO';\nimport { RoleInDTO } from './role';\nimport { UserGroupMembershipRole } from './userGroup';\n\nexport interface UserInDTO {\n id: number;\n email: string;\n username: string;\n serviceAccount?: boolean;\n serviceAccountSecret?: string;\n groupPoliciesEnabled?: boolean;\n membershipRole?: UserGroupMembershipRole;\n}\n\nexport interface DeepSearchUserDTO {\n id: number;\n email: string;\n username: string;\n serviceAccount?: boolean; \n organizations: {\n resourceId: string;\n }[]\n}\n\nexport interface UserOutDTO {\n email: string;\n username: string;\n password?: string;\n serviceAccount?: boolean;\n serviceAccountClientWebOrigins?: string;\n emailVerified?: boolean;\n temporaryPassword?: boolean;\n groupPoliciesEnabled?: boolean;\n membershipRole?: UserGroupMembershipRole;\n memberOf?: number[];\n regularUserOf?: number[];\n adminUserOf?: number[];\n}\n\nexport interface UserUpdateDTO {\n email: string;\n password?: string;\n passwordChangeInvitation?: boolean;\n groupPoliciesEnabled?: boolean;\n}\n\nexport enum UserTypes {\n ANY = 'ANY',\n\tSTANDARD = 'STANDARD',\n\tSERVICE = 'SERVICE',\n}\n\nexport interface UserQueryParamsDTO extends PaginationQueryParamsDTO {\n groupId?: number;\n orderBy?: string;\n orderDir?: string;\n username?: string;\n type?: UserTypes;\n}\n\nexport interface UserDeepSearchQueryParamsDTO extends PaginationQueryParamsDTO {\n orderBy?: string;\n orderDir?: string;\n username?: string;\n type?: UserTypes;\n orgResourceId?: string;\n}\n\nexport interface UserFormData {\n userData: UserOutDTO;\n memberOf: number[];\n regularUserOf: number[], \n adminUserOf: number[], \n userRoles: number[];\n associatedDevices: number[];\n}\n\nexport interface UserDataTable extends UserInDTO {\n organization: string;\n roles: RoleInDTO;\n owner: UserOwnerEnum;\n ownerRef: string;\n userImpersonation: boolean;\n}\n\nexport interface SecretOutDto {\n clientSecret: string;\n tokenEndpoint: string;\n}\n\nexport interface UserPreferenceInDTO{\n id: number;\n orgResourceId: string;\n username: string;\n serviceName: string;\n value: string;\n}\n\nexport interface ApiKeyInDTO{\n id: number;\n orgResourceId: string;\n userId: number;\n key: string;\n}","import PaginationQueryParamsDTO from './commons/PaginationQueryParamsDTO';\nimport { UserInDTO } from './user';\nimport {DEVICE_ROLE_PERMISSION} from '../constant/Roles';\nimport { UserOwnerEnum } from '../constant/UserOwnerEnum';\n\nexport enum UserGroupType {\n STANDARD = \"STANDARD\",\n SELF_USER_ANY = \"SELF_USER_ANY\",\n SELF_USER = \"SELF_USER\",\n ALL_USER = \"ALL_USER\",\n SELF_USER_SERVICE = \"SELF_USER_SERVICE\",\n ALL = \"ALL\",\n}\n\nexport enum UserGroupMembershipRole {\n ADMIN = \"ADMIN\",\n USER = \"USER\",\n}\nexport interface UserGroupInDTO {\n id: number;\n name: string;\n organizationId: number;\n type: UserGroupType;\n owner?: UserOwnerEnum;\n groupPoliciesEnabled?: boolean;\n membershipRole?: UserGroupMembershipRole;\n}\n\nexport interface UserGroupOutDTO extends UserGroupUpdateDTO {\n name: string;\n}\n\nexport interface UserGroupUpdateDTO {\n membersId: number[];\n regularUserMembersId: number[];\n adminUserMembersId: number[];\n rolesId: number[];\n}\n\nexport interface UserGroupQueryParamsDTO extends PaginationQueryParamsDTO {\n name?: string;\n orderBy?: string,\n orderDir?: string,\n roleId?: number,\n type?: UserGroupType,\n userId?: number,\n username?: string,\n adminOnly?: boolean,\n}\n\nexport interface UserGroupDataTable extends UserGroupInDTO {\n organization?: string;\n users?: UserInDTO[];\n}\n\nexport interface UserAuthorizationDTO {\n deviceGeneralPermission: DEVICE_ROLE_PERMISSION,\n vpnGeneralPermission: DEVICE_ROLE_PERMISSION\n}\n\nexport type DevicePermissionsCacheEntry = {\n timestamp: number;\n permissions: UserAuthorizationDTO;\n}\n\nexport interface DevicePermissionsCache {\n [deviceId: string] : DevicePermissionsCacheEntry;\n}\n","import { RoleOwnerEnum } from '@/constant/RoleOwnerEnum';\nimport Vue from 'vue';\n\nexport default {\n RESET_USER_FORM(state) {\n state.currentFormUser = {\n username: '',\n password: '',\n type: '',\n name: '',\n organization: '',\n roles: '',\n accessToken: '',\n accessSecret: '',\n organizationRoles: [],\n groupsMember: [],\n isServiceAccessUser: false\n }\n },\n RESET_GROUP_FORM(state) {\n state.currentFormGroup = {\n name: '',\n description: '',\n organizationRoles: [],\n users: []\n }\n },\n\n RESET_ROLE_FORM(state) {\n state.currentFormRole = {\n name: '',\n id: '',\n description: '',\n owner: RoleOwnerEnum.ORGANIZATION,\n permissions: []\n }\n },\n\n RESET_ORGANIZATION_FORM(state) {\n state.currentFormOrganization = {\n name: '',\n id: '',\n url: '',\n }\n },\n\n UPDATE_USER_FIELD(state, { field, value }) {\n state.currentFormUser[field] = value;\n },\n\n UPDATE_GROUP_FIELD(state, { field, value }) {\n state.currentFormGroup[field] = value;\n },\n\n UPDATE_ROLE_FIELD(state, { field, value }) {\n state.currentFormRole[field] = value;\n },\n\n UPDATE_ORGANIZATION_FIELD(state, { field, value }) {\n state.currentFormOrganization[field] = value;\n },\n\n SAVE_USERS(state, data) {\n state.users.data = data;\n },\n\n SAVE_USERS_PAGINATION(state, pagination) {\n state.users.pagination = pagination;\n },\n\n SAVE_USER_GROUPS(state, data) {\n state.userGroups.data = data;\n },\n\n SAVE_USER_GROUPS_PAGINATION(state, pagination) {\n state.userGroups.pagination = pagination;\n },\n\n SAVE_ROLES(state, data) {\n state.roles.data = data;\n },\n\n SAVE_MODEL_ROLES(state, data) {\n state.modelRoles.data = data;\n },\n\n SAVE_DATA_ROLES(state, data) {\n state.dataRoles.data = data;\n },\n\n SAVE_DATA_ROLES_PAGINATION(state, pagination) {\n state.dataRoles.pagination = pagination;\n },\n\n SAVE_ROLES_PAGINATION(state, pagination) {\n state.roles.pagination = pagination;\n },\n\n SAVE_MODEL_ROLES_PAGINATION(state, pagination) {\n state.modelRoles.pagination = pagination;\n },\n\n SELECT_ORGANIZATION_ID(state, organization) {\n state.organizations.selectedOrganization = organization;\n },\n\n SAVE_CURRENT_USER_ORGANIZATIONS(state, data) {\n state.organizations.currentUserOrg = data;\n },\n\n SAVE_ORGANIZATIONS(state, data) {\n state.organizations.data = data;\n },\n\n SAVE_ORGANIZATIONS_CONTROLLERS(state, data: Array) {\n if(data.length > 0) {\n if(state.organizations.controllerData.length == 0) {\n // take all data since we have none\n state.organizations.controllerData = data\n } else {\n // update single elements of the list instead of the entire list: the new list may be incomplete\n data.forEach(newCD => {\n const idx = state.organizations.controllerData.findIndex( curCD => curCD.name == newCD.name )\n if(idx >= 0) {\n state.organizations.controllerData[idx] = newCD\n } else {\n state.organizations.controllerData.push(newCD)\n }\n });\n }\n } else {\n console.warn(\"SAVE_ORGANIZATIONS_CONTROLLERS trying to add no data \" + data.length, data)\n return\n }\n },\n\n SAVE_CURRENT_RESOURCES(state, resources) {\n state.organizations.currentResources = resources\n },\n\n APPEND_ORGANIZATIONS_GLOBAL_SELECTOR(state, arNewOrgs) {\n state.organizations.globalSelectorOrganizations.data.push(...arNewOrgs);\n },\n SAVE_ORGANIZATIONS_GLOBAL_SELECTOR(state, organizations) {\n state.organizations.globalSelectorOrganizations.data = organizations;\n },\n SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_LASTPAGE(state, isLastPage) {\n state.organizations.globalSelectorOrganizations.lastPage = isLastPage;\n },\n SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_PAGENUM(state, pageNum) {\n state.organizations.globalSelectorOrganizations.pageNum = pageNum;\n },\n\n SELECT_CURRENT_ORGANIZATION(state, organization) {\n state.organizations.selectedSubOrganization = organization;\n state.vpn = organization.vpnEnabled;\n state.vpnPairingMode = organization.vpnPairingMode;\n state.iot = organization.dataEnabled;\n state.otpRequired = organization.vpnOtpRequired;\n },\n\n SAVE_ORGANIZATION_PAGINATION(state, pagination) {\n state.organizations.pagination = pagination;\n },\n\n SAVE_CACHED_ROLES_MAP(state, { userId, userRoles }) {\n Vue.set(state.users.cachedUserRolesMap, userId, userRoles);\n },\n\n SAVE_CACHED_ORGANIZATIONS_MAP(state, { groupId, organization }) {\n Vue.set(state.userGroups.cachedOrganizationsMap, groupId, organization);\n },\n\n SAVE_CACHED_ORGANIZATIONS_ROLES_MAP(state, { roleId, organization }) {\n Vue.set(state.roles.cachedOrganizationsMap, roleId, organization);\n },\n\n SAVE_PERMISSIONS(state, data) {\n state.applicationPermissions.data = data;\n },\n\n SAVE_PERMISSIONS_PAGINATION(state, pagination) {\n state.applicationPermissions.pagination = pagination;\n },\n\n RESET_USER_ROLES_CACHE(state) {\n state.users.userDataCache = {};\n },\n\n RESET_GROUP_ROLES_CACHE(state) {\n state.userGroups.groupDataCache = {};\n },\n\n SET_USERS_TABLE_PAGE(state, page) {\n Vue.set(state.users.usersTablePagination, 'page', page);\n },\n SET_USERS_TABLE_SORTBY(state, val) {\n Vue.set(state.users.usersTablePagination, 'sortBy', val);\n },\n SET_USERS_TABLE_DESCENDING(state, val) {\n Vue.set(state.users.usersTablePagination, 'sortDesc', val);\n },\n SET_USERS_TABLE_PAGE_SIZE(state, itemsPerPage) {\n Vue.set(state.users.usersTablePagination, 'itemsPerPage', itemsPerPage);\n },\n\n SET_GROUPS_TABLE_PAGE(state, page) {\n Vue.set(state.userGroups.groupsTablePagination, 'page', page);\n },\n SET_GROUPS_TABLE_SORTBY(state, val) {\n Vue.set(state.userGroups.groupsTablePagination, 'sortBy', val);\n },\n SET_GROUPS_TABLE_DESCENDING(state, val) {\n Vue.set(state.userGroups.groupsTablePagination, 'sortDesc', val);\n },\n SET_GROUPS_TABLE_PAGE_SIZE(state, itemsPerPage) {\n Vue.set(state.userGroups.groupsTablePagination, 'itemsPerPage', itemsPerPage);\n },\n \n SET_ROLES_TABLE_PAGE(state, page) {\n Vue.set(state.roles.rolesTablePagination, 'page', page);\n },\n SET_ROLES_TABLE_PAGE_SIZE(state, itemsPerPage) {\n Vue.set(state.roles.rolesTablePagination, 'itemsPerPage', itemsPerPage);\n },\n SET_ROLES_TABLE_SORTBY(state, val) {\n Vue.set(state.roles.rolesTablePagination, 'sortBy', val);\n },\n SET_ROLES_TABLE_DESCENDING(state, val) {\n Vue.set(state.roles.rolesTablePagination, 'sortDesc', val);\n },\n\n SET_MODEL_ROLES_TABLE_PAGE(state, page) {\n Vue.set(state.modelRoles.modelRolesTablePagination, 'page', page);\n },\n SET_MODEL_ROLES_TABLE_SORTBY(state, val) {\n Vue.set(state.modelRoles.modelRolesTablePagination, 'sortBy', val);\n },\n SET_MODEL_ROLES_TABLE_DESCENDING(state, val) {\n Vue.set(state.modelRoles.modelRolesTablePagination, 'sortDesc', val);\n },\n\n SET_DATA_ROLES_TABLE_PAGE(state, page) {\n Vue.set(state.dataRoles.dataRolesTablePagination, 'page', page);\n },\n SET_DATA_ROLES_TABLE_SORTBY(state, val) {\n Vue.set(state.dataRoles.dataRolesTablePagination, 'sortBy', val);\n },\n SET_DATA_ROLES_TABLE_DESCENDING(state, val) {\n Vue.set(state.dataRoles.dataRolesTablePagination, 'sortDesc', val);\n },\n SET_DATA_ROLES_TABLE_PAGE_SIZE(state, itemsPerPage) {\n Vue.set(state.dataRoles.dataRolesTablePagination, 'itemsPerPage', itemsPerPage);\n },\n\n SET_ORGS_TABLE_PAGE(state, page) {\n Vue.set(state.organizations.orgsTablePagination, 'page', page);\n },\n SET_ORGS_TABLE_SORTBY(state, val) {\n Vue.set(state.organizations.orgsTablePagination, 'sortBy', val);\n },\n SET_ORGS_TABLE_DESCENDING(state, val) {\n Vue.set(state.organizations.orgsTablePagination, 'sortDesc', val);\n },\n SET_ORGS_TABLE_PAGE_SIZE(state, val) {\n Vue.set(state.organizations.orgsTablePagination, 'itemsPerPage', val);\n },\n\n RESET_DATA_ROLE_CACHE(state) {\n state.dataRoles.dataRolesPermissionCache = {};\n },\n\n DELETE_DATA_ROLE_CACHE_BY_ID(state, dataRoleId) {\n Vue.delete(state.dataRoles.dataRolesPermissionCache, dataRoleId);\n },\n\n SAVE_ADDITIONAL_USER_DATA(state, { userId, data }) {\n Vue.set(state.users.userDataCache, userId, data);\n },\n\n SAVE_ADDITIONAL_GROUP_DATA(state, { groupId, data }) {\n Vue.set(state.userGroups.groupDataCache, groupId, data);\n },\n\n SET_HAS_RPT_TOKEN(state, hasRptToken) {\n state.hasRptToken = hasRptToken\n },\n\n SET_LOGIN_ERROR(state, loginError: string | null) {\n state.loginError = loginError\n },\n\n SET_AGREEMENTS_REMINDER_SHOWN_IN_SESSION(state, shown) {\n state.agreements.reminderShownInSession = shown\n },\n\n SET_TRIAL_EXPIRATION_DATE(state, expirationDate) {\n state.trial.expirationDate = expirationDate\n },\n\n SET_ACCESS_TOKEN(state, accessToken) {\n state.access_token = accessToken\n },\n\n SET_REFRESH_PERMISSIONS_REQUIRED(state) {\n state.refreshPermissionsRequired++;\n },\n\n SET_DEVICE_AUTHORIZATION(state, { cacheKey, permissions }) {\n state.deviceAuthorizationCache[cacheKey] = {\n timestamp: Date.now(),\n permissions: permissions\n };\n },\n\n CLEAR_DEVICE_AUTHORIZATION_CACHE(state) {\n state.deviceAuthorizationCache = {};\n }\n}","import{\n _isString,\n _toUpper,\n _upperCase,\n _isArray,\n _split,\n _map\n} from \"../../lodashboot\";\nimport { ParsedData } from '@/interfaces/utils';\n\nexport default class PermissionParser {\n \n static parse(stringPermission: string) : ParsedData {\n if (!_isString(stringPermission)) {\n throw new Error('Input permission must be a string');\n }\n const [prefix, entity, permission] = _split(stringPermission, '.');\n const formattedEntity = _toUpper(prefix + \".\" + entity);\n return {\n subject: formattedEntity,\n action: permission == \"*\" ? \"manage\" /** special keyword of ability library to say any action */ : _upperCase(permission)\n };\n }\n\n static parseArray(stringPermissions: string[]) : ParsedData[] {\n if (!_isArray(stringPermissions)) {\n throw new Error('Input permissions must be an array');\n }\n\n return _map(stringPermissions, permission => this.parse(permission));\n }\n}","import { \n _omit,\n _includes,\n _map,\n _flatMap,\n _each,\n _filter,\n} from '../lodashboot';\nimport CorvinaCoreAxiosInstance from '../communication/axios/implementation/CorvinaCoreAxiosInstance';\nimport Vue from 'vue';\nimport PermissionParser from '@/classes/utils/PermissionsParser';\nimport AbilityProvider from '../classes/utils/implementation/AbilityProvider';\nimport PermissionAction from '@/constant/PermissionAction';\nimport PermissionEntity from '@/constant/PermissionEntity';\nimport PermissionDataFormatter from '../classes/PermissionDataFormatter';\nimport RolesEnum from '@/constant/Roles';\n// import LicenseManagerAxiosInstance from '../communication/axios/implementation/LicenseManagerAxiosInstance';\nimport ProductsAxiosInstance from '../communication/axios/implementation/ProductsAxiosInstance';\nimport { ProductResourceType } from '../communication/axios/model/Product';\n\nimport { OrganizationStatus } from '../constant/Organizations';\nimport { removeOrganizationResourceIdPrefix } from '../utils/organizationUtils'\n\nimport store from '../store/store';\nimport { OrganizationGrantDTO, OrganizationInDTO } from '../interfaces/organization';\n\nimport { AgreementOutDTO, CheckAgreementOutDTO, AgreementService, AgreementType } from '../interfaces/agreements';\n\nimport {DeviceGroupAllDevicesName} from '../constant/DeviceConstants';\nimport ModalEnum from '../constant/ModalEnum';\nimport { SecretOutDto, UserTypes } from '@/interfaces/user';\nimport { datadogRum } from '@datadog/browser-rum';\nimport { getModule } from 'vuex-module-decorators';\nimport LimitsAndConsumptionsStore from './LimitsAndConsumptions-store';\nimport { RealmOutDTO } from '@/interfaces/realm';\nimport { RoleQueryParamsDTO } from '../interfaces/role';\nimport { RoleOwnerEnum } from '../constant/RoleOwnerEnum';\nimport { DevicePermissionsCacheEntry, UserAuthorizationDTO } from '@/interfaces/userGroup';\nimport { i18n } from '../main';\nimport { CommunicationSettings } from '../corvina-connect';\nimport { UserOwnerEnum } from '@/constant/UserOwnerEnum';\n\nconst limitsAndConsumptionsStore = getModule(LimitsAndConsumptionsStore);\n\nconst maxDevicePermissionCacheAge = 30 * 60 * 1000; // max age for device permissions cache\n\n// clear cache\nstore.watch(\n (_state, getters) => {return getters['permission/getRefreshPermissionsRequired'] },\n (value) => {\n store.commit('permission/CLEAR_DEVICE_AUTHORIZATION_CACHE');\n } \n)\n\nexport default {\n resetUserForm(context) {\n context.commit('RESET_USER_FORM')\n },\n\n resetGroupForm(context) {\n context.commit('RESET_GROUP_FORM');\n },\n\n resetRoleForm(context) {\n context.commit('RESET_ROLE_FORM');\n },\n\n resetOrganizationForm(context) {\n context.commit('RESET_ORGANIZATION_FORM');\n },\n\n updateUserField(context, { field, value }) {\n context.commit('UPDATE_USER_FIELD', { field, value });\n },\n\n updateGroupField(context, { field, value }) {\n context.commit('UPDATE_GROUP_FIELD', { field, value });\n },\n\n updateRoleField(context, { field, value }) {\n context.commit('UPDATE_ROLE_FIELD', { field, value });\n },\n\n updateOrganizationField(context, { field, value }) {\n context.commit('UPDATE_ORGANIZATION_FIELD', { field, value });\n },\n\n setUsersTablePage(context, page) {\n context.commit('SET_USERS_TABLE_PAGE', page);\n },\n setUsersTableSortBy(context, val) {\n context.commit('SET_USERS_TABLE_SORTBY', val);\n },\n setUsersTableDescending(context, val) {\n context.commit('SET_USERS_TABLE_DESCENDING', val);\n },\n setUsersTableItemsPerPage(context, itemsPerPage) {\n context.commit('SET_USERS_TABLE_PAGE_SIZE', itemsPerPage);\n },\n \n setGroupsTablePage(context, page) {\n context.commit('SET_GROUPS_TABLE_PAGE', page);\n },\n setGroupsTableSortBy(context, val) {\n context.commit('SET_GROUPS_TABLE_SORTBY', val);\n },\n setGroupsTableDescending(context, val) {\n context.commit('SET_GROUPS_TABLE_DESCENDING', val);\n },\n setGroupsTableItemsPerPage(context, itemsPerPage) {\n context.commit('SET_GROUPS_TABLE_PAGE_SIZE', itemsPerPage);\n },\n\n setRolesTablePage(context, page) {\n context.commit('SET_ROLES_TABLE_PAGE', page);\n },\n setRolesTableItemsPerPage(context, itemsPerPage) {\n context.commit('SET_ROLES_TABLE_PAGE_SIZE', itemsPerPage);\n },\n setRolesTableSortBy(context, val) {\n context.commit('SET_ROLES_TABLE_SORTBY', val);\n },\n setRolesTableDescending(context, val) {\n context.commit('SET_ROLES_TABLE_DESCENDING', val);\n },\n\n setModelRolesTablePage(context, page) {\n context.commit('SET_MODEL_ROLES_TABLE_PAGE', page);\n },\n setModelRolesTableSortBy(context, val) {\n context.commit('SET_MODEL_ROLES_TABLE_SORTBY', val);\n },\n setModelRolesTableDescending(context, val) {\n context.commit('SET_MODEL_ROLES_TABLE_DESCENDING', val);\n },\n\n setDataRolesTablePage(context, page) {\n context.commit('SET_DATA_ROLES_TABLE_PAGE', page);\n },\n setDataRolesTableSortBy(context, val) {\n context.commit('SET_DATA_ROLES_TABLE_SORTBY', val);\n },\n setDataRolesTableDescending(context, val) {\n context.commit('SET_DATA_ROLES_TABLE_DESCENDING', val);\n },\n setDataRolesTableItemsPerPage(context, itemsPerPage) {\n context.commit('SET_DATA_ROLES_TABLE_PAGE_SIZE', itemsPerPage);\n },\n setOrgsTablePage(context, page) {\n context.commit('SET_ORGS_TABLE_PAGE', page);\n },\n setOrgsTableSortBy(context, val) {\n context.commit('SET_ORGS_TABLE_SORTBY', val);\n },\n setOrgsTableDescending(context, val) {\n context.commit('SET_ORGS_TABLE_DESCENDING', val);\n },\n setOrgsTableItemsPerPage(context, itemsPerPage) {\n context.commit('SET_ORGS_TABLE_PAGE_SIZE', itemsPerPage);\n },\n\n async fetchUserGroupMembers(context, groupId) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERS)) {\n const response = await CorvinaCoreAxiosInstance.fetchUserGroupMembers(organizationId, groupId);\n return response.sort((a, b) => a.username.localeCompare(b.username));\n }\n return [];\n } catch (error) {\n throw error;\n }\n },\n\n async fetchUsers(context, filter = { page: 0, pageSize: 20, username: '', type: UserTypes.ANY }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERS)) {\n const response = await CorvinaCoreAxiosInstance.fetchUsers(organizationId, filter);\n return response;\n }\n return [];\n } catch (error) {\n throw error;\n }\n },\n\n async fetchUsersWithPagination(context, filter = { page: 0, pageSize: 20, username: '', type: 'ANY' }) {\n try {\n const users = await context.dispatch('fetchUsers', filter);\n context.commit('SAVE_USERS', users.content);\n context.commit('SAVE_USERS_PAGINATION', _omit(users, 'content'));\n return users.content;\n } catch (error) {\n throw error;\n }\n },\n\n async checkUserExists(context, username: string): Promise {\n const response = await CorvinaCoreAxiosInstance.checkUserExists(username);\n return response;\n },\n\n async fetchUserByUsername(context, username) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(!abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERS)) {\n return [];\n }\n const response = await CorvinaCoreAxiosInstance.fetchUserByUsername(organizationId, username);\n return response;\n } catch(error) {\n throw error;\n }\n },\n\n async fetchUserById(context, userId) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(!abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERS)) {\n return [];\n }\n const response = await CorvinaCoreAxiosInstance.fetchUser(organizationId, userId);\n return response;\n } catch(error) {\n throw error;\n }\n },\n\n /**\n * Returns true if nameToCheck is duplicated, \n * false otherwise\n * @param context \n * @param nameToCheck Name to check \n */\n async fetchDuplicateGroups(context, nameToCheck) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERGROUPS)) {\n const response = await CorvinaCoreAxiosInstance.fetchUserGroups(organizationId, { name: nameToCheck });\n return response.content.filter(m=>m.name == nameToCheck).length != 0;\n }\n return true;\n },\n\n async fetchGroups(context, filter = { page: 0, pageSize: 20, name: '', adminOnly: false }){\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.USERGROUPS)) {\n const response = await CorvinaCoreAxiosInstance.fetchUserGroups(organizationId, filter);\n return response;\n }\n return [];\n },\n\n async fetchGroupsWithPagination(context, filter = { page: 0, pageSize: 20, name: '' }){\n try {\n const groups = await context.dispatch('fetchGroups', filter);\n context.commit('SAVE_USER_GROUPS', groups.content);\n context.commit('SAVE_USER_GROUPS_PAGINATION', _omit(groups, 'content'));\n return groups.content;\n } catch (error) {\n \n throw error;\n }\n },\n\n async fetchRoles(context, filter: RoleQueryParamsDTO = { page: 0, pageSize: 20, name: '', orderBy: '', orderDir: 'desc' }){\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.fetchRoles(organizationId, filter);\n return response;\n }\n return [];\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * Returns true if duplicate name (id?) (not label), false otherwise\n * TODO: this will be correct only if ECC-863 will be closed\n * @param context \n * @param duplicateName name to check for duplicate\n */\n async fetchDuplicatedApplicationRoles(context, duplicateName){\n try {\n const filter = { page: 0, pageSize: 1, name: duplicateName, orderBy: 'name', orderDir: 'ASC', type: RolesEnum.APPLICATION }\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.fetchRoles(organizationId, filter);\n return response.content.filter(m=>m.name == duplicateName).length > 0;\n }\n return true;\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * Returns duplicate object if duplicate label (not name), false otherwise\n * The returned duplicate is useful to check if it is the same object being edited\n * TODO: this will be correct only if ECC-863 will be closed\n * @param context \n * @param duplicateLabel label to check for duplicate\n */\n async fetchDuplicatedApplicationRolesLabel(context, duplicateLabel){\n try {\n const filter = { page: 0, pageSize: 1, label: duplicateLabel, orderBy: 'label', orderDir: 'ASC', type: RolesEnum.APPLICATION }\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.fetchRoles(organizationId, filter);\n const match = response.content.filter(m=>m.label == duplicateLabel);\n return match.length > 0 ? match[0] : false\n }\n return true;\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * Returns true if duplicate name (id?) (not label), false otherwise\n * TODO: this will be correct only if ECC-863 will be closed\n * @param context \n * @param duplicateName name to check for duplicate\n */\n async fetchDuplicatedDeviceRoles(context, duplicateName){\n try {\n const filter = { page: 0, pageSize: 1, name: duplicateName, orderBy: 'name', orderDir: 'ASC', type: RolesEnum.DEVICE }\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n return await CorvinaCoreAxiosInstance.checkRoleExists(organizationId, duplicateName);\n }\n return true;\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * Returns duplicate object if duplicate label (not name), false otherwise\n * The returned duplicate is useful to check if it is the same object being edited\n * TODO: this will be correct only if ECC-863 will be closed\n * @param context \n * @param duplicateLabel label to check for duplicate\n */\n async fetchDuplicatedDeviceRolesLabel(context, duplicateLabel){\n try {\n const filter = { page: 0, pageSize: 1, label: duplicateLabel, orderBy: 'label', orderDir: 'ASC', type: RolesEnum.DEVICE }\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.fetchRoles(organizationId, filter);\n const match = response.content.filter(m=>m.label == duplicateLabel);\n return match.length > 0 ? match[0] : false\n }\n return true;\n } catch (error) {\n throw error;\n }\n },\n\n async fetchRolesWithPagination(context, filter = { page: 0, pageSize: 20, name: '', type: RolesEnum.APPLICATION }) {\n try {\n const roleFilter = {...filter, type: RolesEnum.APPLICATION};\n const roles = await context.dispatch('fetchRoles', roleFilter);\n context.commit('SAVE_ROLES', roles.content);\n context.commit('SAVE_ROLES_PAGINATION', _omit(roles, 'content'));\n return roles.content;\n } catch (error) {\n \n throw error;\n }\n },\n\n async fetchDataRolesWithPagination(context, filter = { page: 0, pageSize: 20, name: '', type: RolesEnum.DEVICE, orderBy: '', orderDir: 'desc'}) {\n try {\n const roleFilter = {...filter, type: RolesEnum.DEVICE};\n const roles = await context.dispatch('fetchRoles', roleFilter);\n context.commit('SAVE_DATA_ROLES', roles.content);\n context.commit('SAVE_DATA_ROLES_PAGINATION', _omit(roles, 'content'));\n return roles.content;\n } catch (error) {\n throw error;\n }\n },\n\n async fetchModelPaths(context, filter = { page: 0, pageSize: 20 }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.fetchModelPaths(organizationId, filter);\n return response.content;\n } catch (error) {\n throw error;\n }\n },\n \n async createModelPath(context, modelPathData) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.createModelPath(organizationId, modelPathData);\n return response;\n } catch(error) {\n \n throw error;\n } \n },\n\n resetOrganizationsGlobalSelectorPagination(context) {\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_LASTPAGE', false);\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_PAGENUM', 0);\n },\n\n async fetchOrganizationsGlobalSelector(context, filter = { page: 0, pageSize: 20 }) {\n try {\n const filterDefaults = {\n name: '',\n page: 0,\n pageSize: 20,\n onlyFirstLevel:false,\n includePrivateAccess: false,\n orderBy: 'name',\n orderDir: 'ASC'\n }\n const apiFilter = {...filterDefaults, ...filter}\n const response = await context.dispatch('fetchOrganizations', {filter: apiFilter, useSelectedSuborg: false, ignoreResources: true});\n\n if(response) {\n const nonBeingDeletedOrgs = response.content.filter( o => o.status != OrganizationStatus.DELETED && o.status != OrganizationStatus.DELETING )\n\n // TODO: search does not find suborgs' children e.g. search = s1, shows s1, s12, s123 but not org1.s1 org1.s1s2\n // what is the desired behaviour?\n const rootOrg = context.state.organizations.selectedOrganization\n const parentOrg = context.state.organizations.selectedSubOrganization\n\n // remove root org and selected suborg: will be added anyway\n const allSuborgs = nonBeingDeletedOrgs\n const suborgs = allSuborgs.filter(o => (o.resourceId != rootOrg.resourceId && o.resourceId != parentOrg.resourceId))\n \n let orgs = suborgs.map(item => ({ \n text: removeOrganizationResourceIdPrefix(item.resourceId, rootOrg, true), \n value: item,\n disabled: !item.userCanAccess\n }));\n orgs.sort( (a,b) => a.text > b.text ? 1 : -1)\n // add root org and current selected suborg on top of the list\n let topOrgs = [\n {text: rootOrg.label, value: rootOrg, divider: false},\n ]\n if( context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.resourceId != rootOrg.resourceId ) {\n topOrgs.push({text:removeOrganizationResourceIdPrefix(context.state.organizations.selectedSubOrganization.resourceId, rootOrg, true), value: context.state.organizations.selectedSubOrganization, divider: false})\n }\n topOrgs.push({text:\"\", value:null, divider: true})\n\n if(response.last) {\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_LASTPAGE', true); \n } else {\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_LASTPAGE', false);\n }\n\n if(filter.page == 0) {\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR', [...topOrgs, ...orgs])\n } else if(orgs.length > 0) {\n context.commit('APPEND_ORGANIZATIONS_GLOBAL_SELECTOR', orgs)\n }\n context.commit('SAVE_ORGANIZATIONS_GLOBAL_SELECTOR_PAGENUM', filter.page)\n } \n return response.content;\n } catch (error) { \n throw error;\n }\n },\n\n async fetchOrganizationsDataTable(context, filter = { page: 0, pageSize: 20, name: '', search:'', orderBy: '', orderDir: 'ASC' }) {\n try {\n const response = await context.dispatch('fetchOrganizations', {filter, useSelectedSuborg: true});\n if(filter.page === 0 && (!filter.name || _includes(context.state.organizations.selectedOrganization.label, filter.name))) {\n response.content.unshift(context.state.organizations.selectedSubOrganization);\n }\n context.commit('SAVE_ORGANIZATIONS', response.content);\n context.commit('SAVE_ORGANIZATION_PAGINATION', _omit(response, 'content'));\n return response.content;\n } catch(error) {\n \n throw error;\n }\n },\n\n /**\n * Returns true if organization name is already taken,\n * false otherwise\n * @param context\n * @param parentOrgId the organization Id to check within: the search happens on sub organizations of this org\n * otherwise the search has to happen on resourceId but there is no API for that at the moment\n * @param subOrgNameToCheck the name of the organization to check\n */\n async fetchDuplicateOrganizations(context, {parentOrgId, subOrgNameToCheck}) {\n try {\n // const organizationId = context.state.organizations.selectedOrganization && context.state.organizations.selectedOrganization.id;\n const response = await CorvinaCoreAxiosInstance.fetchOrganizations(parentOrgId, {name: subOrgNameToCheck});\n if(response.content.filter(m => m.name == subOrgNameToCheck).length > 0) {\n return true;\n } else {\n return false;\n }\n } catch (error) {\n throw error;\n }\n },\n\n /**\n * Returns true if organization hostname is already taken,\n * false otherwise\n * @param context \n * @param hostnameToCheck the name of the organization to check\n */\n async fetchDuplicateOrganizationHostname(context, hostnameToCheck) {\n try {\n const response = await CorvinaCoreAxiosInstance.getLoginInfo(hostnameToCheck);\n if(response) {\n return true;\n } else {\n return false;\n }\n } catch (error) {\n if (error.response?.status === 404) {\n return false;\n }\n throw error;\n }\n },\n\n async fetchOrganizations(context, payload = { filter: { page: 0, pageSize: 20, name: '', search: '', orderBy: '', orderDir: 'ASC' }, useSelectedSuborg: true, ignoreResources: false }) {\n try {\n \n // FIXME: understand why here we do not have the permissions in token (may be a racing condition)\n \n /* \n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\t\t\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ORGANIZATIONS)) {\n const response = await CorvinaCoreAxiosInstance.fetchOrganizations(organizationId, filter);\n\t\t return response;\n } \n return []; \n */\n let organizationId\n if(payload.useSelectedSuborg) {\n // const organization = store.getters['permission/getOrganizations'].selectedSubOrganization;\n // organizationId = organization && organization.id \n organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id\n } else {\n // used in fetchOrganizationsGlobalSelector otherwise we cannot access parent organizations any more once we select a sub-org\n organizationId = context.state.organizations.selectedOrganization && context.state.organizations.selectedOrganization.id;\n }\n \n const response = await CorvinaCoreAxiosInstance.fetchOrganizations(organizationId, payload.filter);\n // const dealer = await CorvinaCoreAxiosInstance.fetchOrganizations(organizationId, filter);\n \n if(!payload.ignoreResources) {\n // update controller data when updating organizations\n let controllerData = []\n let promises = response.content.map( o => {\n return ProductsAxiosInstance.getOrganization(o.resourceId).then(res => {\n controllerData.push(res)\n })\n })\n await Promise\n .all(promises)\n .then(() => context.commit('SAVE_ORGANIZATIONS_CONTROLLERS', controllerData))\n .catch(err => console.log(err))\n }\n\n // update limits\n // let resourceLimitsData = []\n // let promisesLimits = response.content.map( o => {\n // return store.dispatch('limits/fetchLimits', o.resourceId).then( res => {\n // console.log(\"store fetchOrganizations fetchLimits \" + o.resourceId, res)\n // resourceLimitsData.push({orgId: o.resourceId, limits: res})\n // })\n // })\n // console.log(\"promises 2\", promisesLimits)\n // await Promise.all(promisesLimits)\n // store.commit('limits/SAVE_ORGANIZATIONS_LIMITS', resourceLimitsData);\n\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async fetchSubOrganizations(context, filter = { page: 0, pageSize: 20, name: '', orderBy: '', orderDir: 'ASC', organizationId: undefined }) {\n try {\n const organizationId = filter.organizationId;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ORGANIZATIONS)) {\n const response = await CorvinaCoreAxiosInstance.fetchOrganizations(organizationId, filter);\n return response.content;\n }\n console.warn(\"Permission-store-actions fetchSubOrganizations not enough privileges\")\n return [];\n } catch (error) {\n \n throw error;\n }\n },\n\n async fetchCurrentSubOrgResources(context, params = {forceUpdate: false}) {\n let controllerData = context.getters['getCurrentSubOrganizationController']\n let res = [];\n if(params.forceUpdate || !controllerData) {\n let newControllerData = await ProductsAxiosInstance.getOrganization(context.state.organizations.selectedSubOrganization.resourceId)\n context.commit('SAVE_ORGANIZATIONS_CONTROLLERS', [newControllerData]);\n }\n controllerData = context.getters['getCurrentSubOrganizationController']\n if(controllerData && controllerData.hasOwnResources) {\n res = await store.dispatch('product/fetchCurrentSubscription');\n\n // check is trial\n const suborg = context.state.organizations.selectedSubOrganization\n const trialExpirationDate = await store.dispatch('product/fetchTrialExpiration', suborg.resourceId);\n context.commit('SET_TRIAL_EXPIRATION_DATE', trialExpirationDate);\n } else {\n context.commit('SET_TRIAL_EXPIRATION_DATE', null); // no trial if limits\n res = await store.dispatch('product/fetchCurrentSubscription');\n // res = await limitsAndConsumptionsStore.fetchCurrentOrganizationLimits();\n }\n // TODO: should we check each resource individually?\n if (res.length == 0) {\n console.warn('Subscription result is []')\n res = [\n {\n resourceType: ProductResourceType.USERS,\n quantity: 0,\n used: 0\n },\n {\n resourceType: ProductResourceType.ORGANIZATIONS,\n quantity: 0,\n used: 0\n },\n {\n resourceType: ProductResourceType.DEVICES,\n quantity: 0,\n used: 0\n },\n {\n resourceType: ProductResourceType.DEVICE_DATA,\n quantity: 0,\n used: 0\n }\n // TODO: add VPN\n ];\n }\n context.commit('SAVE_CURRENT_RESOURCES', res);\n\n // clear limits\n await limitsAndConsumptionsStore.setForceUpdate();\n return res\n },\n \n async fetchRole(context, roleId) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.fetchRole(organizationId, roleId);\n return response;\n }\n } catch (error) {\n \n throw error;\n }\n },\n\n async fetchDataRolesPermission(context, roles) {\n for(let i = 0; i < roles.length; i++) {\n const role = roles[i];\n context.dispatch('fetchDataRolePermissionIfNeeded', role);\n }\n },\n\n async fetchModelPathPermissions(context, { roleId, filter }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.fetchModelPathPermissions(organizationId, roleId, filter);\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async fetchDataRolePermissionIfNeeded(context, role) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const organizationName = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.name;\n\n if (role.id) {\n const dataRolesCache = context.state.dataRoles.dataRolesPermissionCache;\n if (!(role.id in dataRolesCache)) {\n const modelPermissions = await context.dispatch('fetchModelPathPermissions', { roleId: role.id, filter: { page: 0, pageSize: 500 } });\n const formattedModelPermission = PermissionDataFormatter.formatModelPermissionsData(modelPermissions.content);\n const deviceGroups = await CorvinaCoreAxiosInstance.fetchSecurityPolicyGroups(organizationId, { page: 0, pageSize: 500, roleId: role.id });\n \n Vue.set(dataRolesCache, role.id, { ...formattedModelPermission, deviceGroups: deviceGroups.content });\n }\n }\n } catch (error) {\n throw error;\n }\n },\n\n deleteDataRolePermissionCache(context, devicePermissionId) {\n context.commit('DELETE_DATA_ROLE_CACHE_BY_ID', devicePermissionId);\n },\n \n resetDataRolePermissionCache(context) {\n context.commit('RESET_DATA_ROLE_CACHE');\n },\n\n fetchAdditionalUsersData(context, users) {\n for(let i = 0; i < users.length; i++) {\n const user = users[i];\n let isAppUser = user.owner == UserOwnerEnum.APP\n context.dispatch('fetchAdditionalUserDataIfNeeded', {\n userId: user.id,\n isAppUser}\n );\n }\n },\n\n async fetchAdditionalUserDataIfNeeded(context, user) {\n let userId;\n let isAppUser = false;\n if (typeof user === 'object') {\n userId = user.userId;\n isAppUser = user.isAppUser;\n } else { // string\n userId = user;\n }\n\n try {\n if (userId) {\n const userDataCache = context.state.users.userDataCache;\n if (!(userId in userDataCache)) {\n const [roles, groups] = await Promise.all([\n context.dispatch('fetchRoles', { userId, page: 0, pageSize: 500, owners: isAppUser ? RoleOwnerEnum.getByAppStore() : RoleOwnerEnum.getByUserOrByCorvina() }),\n context.dispatch('fetchGroups', { userId, page: 0, pageSize: 500 })\n ]);\n \n const data = { \n groups: groups.content, \n applicationRoles: roles?.content?.filter(role => role.type === RolesEnum.APPLICATION) || [], \n dataRoles: roles?.content?.filter(role => role.type === RolesEnum.DEVICE) || []\n };\n\n context.commit('SAVE_ADDITIONAL_USER_DATA', { userId, data });\n }\n }\n } catch (error) {\n throw error;\n }\n },\n\n fetchAdditionalGroupsData(context, groups) {\n for(let i = 0; i < groups.length; i++) {\n const group = groups[i];\n context.dispatch('fetchAdditionalGroupDataIfNeeded', group.id);\n }\n },\n\n async fetchAdditionalGroupDataIfNeeded(context, groupId) {\n try {\n if (groupId) {\n const groupDataCache = context.state.userGroups.groupDataCache;\n if (!(groupId in groupDataCache)) {\n const roles = await context.dispatch('fetchRoles', { userGroupId: groupId, page: 0, pageSize: 500, owners: RoleOwnerEnum.getByUserOrByCorvina() });\n \n const data = { \n applicationRoles: roles.content.filter(role => role.type === RolesEnum.APPLICATION), \n dataRoles: roles.content.filter(role => role.type === RolesEnum.DEVICE)\n };\n\n context.commit('SAVE_ADDITIONAL_GROUP_DATA', { groupId, data });\n }\n }\n } catch (error) {\n throw error;\n }\n },\n \n async fetchUserRoleIfNeedeed(context, userId) {\n try {\n if (userId) {\n const cachedUserRolesMap = context.state.users.cachedUserRolesMap;\n if (!(userId in cachedUserRolesMap)) {\n await context.dispatch('fetchUserRoles', userId);\n }\n }\n } catch (error) {\n throw error;\n }\n },\n\n async fetchUserRoles(context, userId) {\n const roles = await context.dispatch('fetchRoles', { page: 0, pageSize: 500, userId: userId });\n context.commit('SAVE_CACHED_ROLES_MAP', { userId, userRoles: roles.content });\n },\n\n async createUser(context, userData) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.CREATE, PermissionEntity.USERS)) {\n const response = await CorvinaCoreAxiosInstance.createUser(organizationId, userData);\n return response;\n }\n } catch(error) {\n throw error;\n } \n },\n\n async updateUser(context, data: {passwordChangeInvitation, userId, newEmail, newPassword, groupPoliciesEnabled}) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.UPDATE, PermissionEntity.USERS)) {\n const response = await CorvinaCoreAxiosInstance.updateUser(organizationId, data.userId, data.newEmail, data.newPassword, data.passwordChangeInvitation, data.groupPoliciesEnabled);\n return response;\n }\n } catch(error) {\n throw error;\n } \n },\n\n async createUserGroup(context, userGroupData) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.createUserGroup(organizationId, userGroupData);\n return response; \n },\n\n selectOrganization(context, organization) {\n context.commit('SELECT_ORGANIZATION_ID', organization);\n },\n\n async fetchCurrentUserOrganizations(context) {\n try {\n const response = await CorvinaCoreAxiosInstance.fetchCurrentUserOrganizations();\n context.dispatch('saveCurrentUserOrganizations', response.sort((a,b) => { return (a.hostname||\"\").localeCompare(b.hostname) }));\n } catch (error) {\n throw error;\n }\n },\n\n async saveCurrentUserOrganizations(context, organizations) {\n context.commit('SAVE_CURRENT_USER_ORGANIZATIONS', organizations);\n },\n\n async addUserToGroup(context, { userGroupId, userId, role }) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.addUserToGroup(organizationId, userGroupId, userId, role);\n await context.dispatch('refreshToken');\n return response;\n },\n\n async addRolesToGroup(context, { userGroupId, roleIds }) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.addRolesToGroup(organizationId, userGroupId, roleIds);\n await context.dispatch(\"refreshToken\");\n return response;\n },\n\n async removeUserFromGroup(context, { userGroupId, userId }) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.removeUserFromGroup(organizationId, userGroupId, userId);\n await context.dispatch('refreshToken');\n return response;\n },\n\n async removeRolesFromGroup(context, { userGroupId, roleIds }) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.removeRolesFromGroup(organizationId, userGroupId, roleIds);\n await context.dispatch('refreshToken');\n return response;\n },\n\n async verifyApplicationPermissionChanges(context, { groupsToAdd, rolesToAdd, groupsToRemove, rolesToRemove } ) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n const response = await CorvinaCoreAxiosInstance.verifyApplicationPermissionChanges(organizationId, { groupsToAdd, rolesToAdd, groupsToRemove, rolesToRemove });\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async fetchOrganization(context, organizationId) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.READ, PermissionEntity.ORGANIZATIONS)) {\n const response = await CorvinaCoreAxiosInstance.fetchOrganization(organizationId);\n return response;\n }\n } catch (error) {\n \n throw error;\n }\n },\n\n // async fetchApplicationPermissions(context, filter = { page: 0, pageSize: 500 }) {\n // try {\n // const response = await CorvinaCoreAxiosInstance.fetchApplicationPermissions(filter);\n // context.commit('SAVE_PERMISSIONS', response.content);\n // context.commit('SAVE_PERMISSIONS_PAGINATION', _omit(response, 'content'));\n // return response.content;\n // } catch (error) {\n\n // throw error;\n // }\n // },\n\n async fetchAllApplicationPermissions(context) {\n try {\n const response = await CorvinaCoreAxiosInstance.fetchAllApplicationPermissions();\n context.commit('SAVE_PERMISSIONS', response.content);\n context.commit('SAVE_PERMISSIONS_PAGINATION', _omit(response, 'content'));\n return response.content;\n } catch (error) {\n \n throw error;\n }\n },\n\n async fetchSecurityPolicyGroups(context, myFilter = { page: 0, pageSize: 20, name: null }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const organizationName = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.name;\n const devGroupByName = await CorvinaCoreAxiosInstance.fetchSecurityPolicyGroups(organizationId, {...myFilter, name: myFilter.name || `*`});\n \n const allDevicesGroup = _filter(devGroupByName.content, (group) => {\n return group.name === DeviceGroupAllDevicesName;\n });\n \n const response = await CorvinaCoreAxiosInstance.fetchSecurityPolicyGroups(organizationId, myFilter);\n\n _each(response.content, permission => {\n if (permission && permission.name === DeviceGroupAllDevicesName) permission.name = '( All Devices )';\n });\n \n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async createSecurityPolicyGroup(context, securityPolicyData) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.createSecurityPolicyGroup(organizationId, securityPolicyData);\n return response;\n } catch(error) {\n throw error;\n }\n },\n\n async fetchSecurityPolicyGroup(context, securityPolicyGroupId) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.fetchSecurityPolicyGroup(organizationId, securityPolicyGroupId);\n return response;\n } catch (error) {\n throw error;\n } \n },\n\n async updateSecurityPolicyGroup(context, { securityPolicyGroupId, securityPolicyGroupData }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.updateSecurityPolicyGroup(organizationId, securityPolicyGroupId, securityPolicyGroupData);\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async deleteSecurityPolicyGroup(context, securityPolicyGroupId) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.deleteSecurityPolicyGroup(organizationId, securityPolicyGroupId);\n return response;\n } catch(error) {\n throw error;\n }\n },\n\n async addDeviceToSecurityGroup(context, { securityPolicyGroupId, deviceId }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.addDeviceToSecurityGroup(organizationId, securityPolicyGroupId, deviceId);\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async removeDeviceFromSecurityGroup(context, { securityPolicyGroupId, deviceId }) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.removeDeviceFromSecurityGroup(organizationId, securityPolicyGroupId, deviceId);\n return response;\n } catch (error) {\n throw error;\n }\n },\n\n async createRole(context, roleData) {\n try {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await context.dispatch('createRoleInSubOrganization', { organizationId, roleData });\n return response;\n } catch(error) {\n \n throw error;\n } \n },\n\n async createRoleInSubOrganization(context, { organizationId, roleData }) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.CREATE, PermissionEntity.ROLES)) {\n const response = await CorvinaCoreAxiosInstance.createRole(organizationId, roleData);\n return response;\n }\n } catch(error) {\n throw error;\n }\n },\n\n async createDataRole(context, roleData) {\n const { label, description, name, modelPathPermissions, deviceGroups, type, deviceGeneralPermission, vpnGeneralPermission } = roleData;\n \n const response = await context.dispatch('createRole', { label, description, name, type, deviceGeneralPermission, vpnGeneralPermission, modelPathPermissions, deviceGroups });\n \n return response;\n },\n\n async updateDataRole(context, { roleId, roleData }) {\n const { label, description, name, modelPathPermissions, deviceGroups, type, deviceGeneralPermission, vpnGeneralPermission } = roleData;\n \n const response = await context.dispatch('updateRole', {\n roleId,\n roleData: {\n label,\n description,\n name,\n type,\n deviceGeneralPermission,\n modelPathPermissions,\n deviceGroups,\n vpnGeneralPermission\n }\n });\n\n return response;\n },\n\n async deleteUserGroup(context, userGroupId) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.deleteUserGroup(organizationId, userGroupId);\n return response;\n },\n\n async deleteUser(context, userId) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.DELETE, PermissionEntity.USERS)) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.deleteUser(organizationId, userId);\n return response;\n }\n } catch(error) {\n \n throw error;\n }\n },\n\n async deleteRole(context, roleId) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.DELETE, PermissionEntity.ROLES)) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.deleteRole(organizationId, roleId);\n return response;\n }\n } catch(error) {\n \n throw error;\n }\n },\n\n async createSubOrg(context, { organizationId, orgData, options }) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.CREATE, PermissionEntity.ORGANIZATIONS)) {\n const response = await CorvinaCoreAxiosInstance.createSubOrganization(organizationId, orgData, options);\n return response;\n }\n } catch(error) {\n throw error;\n } \n },\n\n async selectCurrentOrganization(context, organization : OrganizationInDTO) {\n context.commit('SELECT_CURRENT_ORGANIZATION', organization);\n\n datadogRum.setGlobalContextProperty('orgId', organization.id);\n datadogRum.setGlobalContextProperty('orgResourceId', organization.name);\n\n if (!sessionStorage.getItem('selectedOrganization') || !localStorage.getItem('theme')) {\n // first time let the loading be synchronous so that we don't see any visual switch (is not expected)\n sessionStorage.setItem('selectedOrganization', organization.id.toString());\n await store.dispatch('theme/loadTheme'); // refresh the theme \n }\n else if (sessionStorage.getItem('selectedOrganization') != organization.id.toString() || !localStorage.getItem('theme')) {\n sessionStorage.setItem('selectedOrganization', organization.id.toString());\n // in this case we don't wait. The user is aware he used a different organization so he might \n // accept the theme appearance change after the page is loaded. This is in favor of loading speed\n store.dispatch('theme/loadTheme'); // refresh the theme\n } else {\n await store.dispatch('theme/calculateCollateralColors');\n }\n\n },\n\n resetUserRolesCache(context) {\n context.commit('RESET_USER_ROLES_CACHE');\n },\n\n resetGroupRolesCache(context) {\n context.commit('RESET_GROUP_ROLES_CACHE');\n },\n \n async updateRole(context, { roleId, roleData }) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.UPDATE, PermissionEntity.ROLES)) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.editRole(organizationId, roleId, roleData);\n await context.dispatch('refreshToken');\n return response;\n }\n } catch (error) {\n throw error;\n }\n },\n\n async updateOrganization(context, { organizationId, organizationData }) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.UPDATE, PermissionEntity.ORGANIZATIONS)) {\n const response = CorvinaCoreAxiosInstance.updateSubOrganization(organizationId, organizationData);\n return response;\n }\n } catch (error) {\n \n throw error;\n }\n },\n\n async deleteOrganization(context, organizationId) {\n try {\n const abilityHelper = AbilityProvider.getRootCompanyAbilityHelper();\n if(abilityHelper.hasPermission(PermissionAction.DELETE, PermissionEntity.ORGANIZATIONS)) {\n const response = await CorvinaCoreAxiosInstance.deleteOrganization(organizationId);\n return response;\n }\n } catch(error) {\n \n throw error;\n }\n },\n\n async updateUserGroup(context, { userGroupId, userGroupData }) {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.editUserGroup(organizationId, userGroupId, userGroupData);\n await context.dispatch('refreshToken');\n return response;\n },\n\n async getPermissions(context, token) {\n const permissions = token?.authorization?.permissions[0]?.scopes;\n\n if (!permissions) {\n return { permissions: [] }\n }\n\n return {\n permissions: PermissionParser.parseArray(permissions),\n };\n },\n\n async setUserPermissions(context, { decoded, access_token }) {\n context.commit('SET_ACCESS_TOKEN', access_token);\n\n const rolePermissions = await context.dispatch('getPermissions', decoded);\n const abilityProviderHelper = AbilityProvider.getRootCompanyAbilityHelper();\n abilityProviderHelper.updateAbilities(rolePermissions.permissions);\n },\n\n async getLoginInfo(context, organizationHostname) {\n try{\n return await CorvinaCoreAxiosInstance.getLoginInfo(organizationHostname);\n } catch(error) {\n throw error;\n }\n },\n\n async userSelfOnboarding(context, userData) {\n try {\n return await CorvinaCoreAxiosInstance.userSelfOnboarding(userData);\n } catch (error) {\n throw error;\n }\n },\n\n async askRevokePermissionConfirmation(context, permissionsRemoved: []) {\n const iot = context.getters['permission/getCurrentOrganizationIOTEnabled'];\n const vpn = context.getters['permission/getCurrentOrganizationVPNEnabled'];\n const controllerData = context.getters['permission/getCurrentSubOrganizationController'];\n let dealer = false;\n if(controllerData) {\n dealer = controllerData.dealer\n }\n\n const formattedPermissions = PermissionDataFormatter.groupsApplicationPermissions(permissionsRemoved.map((x) => { return { name : x } }), iot, vpn, dealer);\n const filteredPermissions = _flatMap(formattedPermissions, x => x).map((x: any)=>x.name)\n\n \n if (filteredPermissions.length > 0) {\n const message = i18n.t(\"IAMUsers.revokePermissionsMessage\", { permissions: filteredPermissions.join(\", \") });\n return await new Promise( \n (resolve, reject) => { \n store.dispatch('modal/showModal', { \n id: ModalEnum.CONFIRMED_MODAL,\n title: i18n.t(\"IAMUsers.revokePermissions\"),\n maxWidth: \"80%\",\n message,\n onSuccess: () => { store.dispatch('modal/hideModal', ModalEnum.CONFIRMED_MODAL); resolve(true) },\n onClose: () => { store.dispatch('modal/hideModal', ModalEnum.CONFIRMED_MODAL); resolve(false) }\n })\n }\n )\n } else {\n return true;\n }\n },\n\n async fetchServiceAccountClientSecret(context, clientId) : Promise {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.fetchServiceAccountClientSecret(organizationId, clientId);\n return response;\n },\n\n async refreshServiceAccountClientSecret(context, clientId) : Promise {\n const organizationId = context.state.organizations.selectedSubOrganization && context.state.organizations.selectedSubOrganization.id;\n const response = await CorvinaCoreAxiosInstance.refreshServiceAccountClientSecret(organizationId, clientId);\n return response;\n },\n\n /**********************************************************************\n * AGREEMENTS \n **********************************************************************/\n async fetchAgreements(_context, orgId: number) : Promise{\n try {\n const ags = await CorvinaCoreAxiosInstance.fetchAgreements(orgId, AgreementService.AGREEMENTS_SERVICE_NAME);\n return ags.filter( ags => ags.type == AgreementType.TERM || ags.type == AgreementType.PRIVACY)\n } catch (error) {\n throw error;\n }\n },\n\n async checkAgreements(_context, orgId: number) : Promise {\n try {\n const agsTypes = await CorvinaCoreAxiosInstance.checkAgreements(orgId, AgreementService.AGREEMENTS_SERVICE_NAME);\n return { types: agsTypes.types.filter( agsType => agsType == AgreementType.TERM || agsType == AgreementType.PRIVACY) }\n } catch (error) {\n throw error;\n }\n },\n\n async acceptAgreements(_context, args: {orgId: number, idsToAccept: number[]}) : Promise {\n try {\n return await CorvinaCoreAxiosInstance.acceptAgreements(args.orgId, args.idsToAccept);\n } catch (error) {\n throw error;\n }\n },\n\n setAgreementsReminderShownInSession(context, shown: boolean) {\n context.commit('SET_AGREEMENTS_REMINDER_SHOWN_IN_SESSION', shown);\n },\n\n setLoginError(context, loginError: string | null) {\n context.commit('SET_LOGIN_ERROR', loginError)\n },\n \n /**********************************************************************\n * GLOBAL NOTIFICATIONS \n **********************************************************************/\n async fetchGlobalNotifications(_context, orgId: number) : Promise{\n try {\n return await CorvinaCoreAxiosInstance.fetchAgreements(orgId, AgreementService.GLOBAL_NOTIFICATIONS_SERVICE_NAME);\n } catch (error) { \n throw error;\n }\n },\n\n async checkGlobalNotifications(_context, orgId: number) : Promise {\n try {\n return await CorvinaCoreAxiosInstance.checkAgreements(orgId, AgreementService.GLOBAL_NOTIFICATIONS_SERVICE_NAME);\n } catch (error) {\n throw error;\n }\n },\n\n async acceptGlobalNotifications(_context, args: {orgId: number, idsToAccept: number[]}) : Promise {\n try {\n return await CorvinaCoreAxiosInstance.acceptAgreements(args.orgId, args.idsToAccept);\n } catch (error) {\n throw error;\n }\n },\n\n /**********************************************************************\n * USER PREFERENCES \n **********************************************************************/\n async getUserPreferences(context, params){\n try {\n return await CorvinaCoreAxiosInstance.getUserPreferences(params);\n } catch (error) {\n throw error;\n }\n },\n\n async postUserPreferences(context, params){\n try {\n return await CorvinaCoreAxiosInstance.postUserPreferences(params);\n } catch (error) {\n throw error;\n }\n },\n\n async deleteUserPreferences(context, userPrefId){\n try {\n return await CorvinaCoreAxiosInstance.deleteUserPreferences( userPrefId);\n } catch (error) {\n throw error;\n }\n },\n\n async deleteAllUserPreferences(context, userPrefIds: number[]) {\n for(let id of userPrefIds) {\n await context.dispatch(\"deleteUserPreferences\", id);\n }\n },\n\n /**********************************************************************\n * USER Api KEYS\n **********************************************************************/\n async getUserApiKeys(context, username: string ){\n try {\n return await CorvinaCoreAxiosInstance.getUserApiKeys(username);\n } catch (error) {\n throw error;\n }\n },\n\n async createUserApiKey(context, params: { username: string }){\n try {\n return await CorvinaCoreAxiosInstance.postUserApiKey(params);\n } catch (error) {\n throw error;\n }\n },\n\n async deleteUserApiKey(context, params: { id: number, username: string } ){\n try {\n return await CorvinaCoreAxiosInstance.deleteUserApiKey( params.id, params.username );\n } catch (error) {\n throw error;\n }\n },\n\n async fetchUserRealms() : Promise {\n try {\n return await CorvinaCoreAxiosInstance.fetchUserRealms( );\n } catch (error) {\n throw error;\n }\n },\n\n async fetchOrganizationGrants(context, params: { parentOrg: string }) : Promise {\n return await CorvinaCoreAxiosInstance.fetchOrganizationGrants(params.parentOrg);\n },\n\n async refreshToken(context) {\n await CommunicationSettings.$keycloak.updateToken(-1);\n\n store.dispatch('permission/setUserPermissions', {\n decoded: CommunicationSettings.$keycloak.tokenParsed,\n access_token: CommunicationSettings.$keycloak.token,\n });\n context.commit('SET_REFRESH_PERMISSIONS_REQUIRED');\n },\n\n \n async getDeviceAuthorization(context, { deviceId, groupName, noCache } : { deviceId?: string, groupName?: string, noCache?: boolean}) : Promise {\n const cacheKey = deviceId || groupName;\n let cacheHit : DevicePermissionsCacheEntry | undefined = noCache ? undefined : context.state.deviceAuthorizationCache[cacheKey]\n if(cacheHit != undefined) {\n if(Date.now() - cacheHit.timestamp < maxDevicePermissionCacheAge) {\n return cacheHit.permissions;\n }\n }\n const organizations = context.state.organizations;\n const orgResourceId = organizations.selectedSubOrganization && organizations.selectedSubOrganization.resourceId;\n const permissions = await CorvinaCoreAxiosInstance.isAuthorized(groupName, deviceId, orgResourceId, null);\n context.commit('SET_DEVICE_AUTHORIZATION', { cacheKey, permissions });\n return permissions;\n },\n\n async getDevicesAuthorizations(context, { deviceIds, noCache } : { deviceIds: string[], noCache?: boolean}) : Promise > {\n // filter cached\n const result : Record = {};\n const cacheMisses: string[] = [];\n for(let deviceId of deviceIds) {\n const cacheKey = deviceId;\n let cacheHit : DevicePermissionsCacheEntry | undefined = noCache ? undefined : context.state.deviceAuthorizationCache[cacheKey]\n if(cacheHit != undefined && Date.now() - cacheHit.timestamp < maxDevicePermissionCacheAge) {\n result[deviceId] = cacheHit.permissions;\n } else {\n cacheMisses.push(deviceId);\n }\n }\n if (cacheMisses.length > 0) {\n const organizations = context.state.organizations;\n const orgResourceId = organizations.selectedSubOrganization && organizations.selectedSubOrganization.resourceId;\n const permissions = await CorvinaCoreAxiosInstance.areAuthorized(cacheMisses, orgResourceId);\n for(let d in permissions) {\n context.commit('SET_DEVICE_AUTHORIZATION', { cacheKey: d, permissions: permissions[d] });\n result[d] = permissions[d];\n }\n }\n\n return result;\n }\n\n\n}\n","import { CommunicationSettings } from \"../corvina-connect\";\nimport { CurrentUserOrganizations } from \"../interfaces/organization\";\n\nexport default {\n getCurrentOrganizationIOTEnabled(state) {\n return state.iot;\n },\n \n getCurrentOrganizationVPNEnabled(state) {\n return state.vpn;\n },\n\n getCurrentOrganizationOPTRequired(state) {\n return state.otpRequired;\n },\n\n getCurrentOrganizationVPNPairingMode(state) {\n return state.vpnPairingMode;\n },\n \n getCurrentFormUser(state) {\n return state.currentFormUser;\n },\n\n getCurrentFormGroup(state) {\n return state.currentFormGroup;\n },\n\n getCurrentFormRole(state) {\n return state.currentFormRole;\n },\n\n getCurrentFormOrganization(state) {\n return state.currentFormOrganization;\n },\n\n getUsers(state) {\n return state.users;\n },\n\n getUserGroups(state) {\n return state.userGroups;\n },\n\n getRoles(state) {\n return state.roles;\n },\n\n getDataRoles(state) {\n return state.dataRoles;\n },\n\n getModelRoles(state) {\n return state.modelRoles;\n },\n\n getOrganizations(state) : CurrentUserOrganizations {\n return state.organizations;\n },\n\n getDevicePermissions(state) {\n return state.devicePermissions;\n },\n\n getCurrentUserOrg(state) {\n return state.organizations.currentUserOrg;\n },\n\n getCurrentSubOrganizationController(state) {\n const lookForName = state.organizations.selectedSubOrganization.resourceId\n const controllerData = state.organizations.controllerData.find( o => o.name == lookForName )\n return controllerData\n },\n getOrganizationController(state) {\n // method-style access: https://vuex.vuejs.org/guide/getters.html\n return (orgId) => {\n const controllerData = state.organizations.controllerData.find( o => o.name == orgId )\n return controllerData\n }\n },\n getCurrentResources(state) {\n return state.organizations.currentResources\n },\n // return the content to use in router queries, \n getRouteQueryOrg(state) : [string, string] {\n return [state.organizations.selectedOrganization.id, state.organizations.selectedSubOrganization ? state.organizations.selectedSubOrganization.id : state.organizations.selectedOrganization.id]\n },\n\n getGlobalSelectorOrganizationsData(state) {\n return state.organizations.globalSelectorOrganizations.data\n },\n getGlobalSelectorOrganizationsIsLastPage(state) {\n return state.organizations.globalSelectorOrganizations.lastPage\n },\n getGlobalSelectorOrganizationsPageNum(state) {\n return state.organizations.globalSelectorOrganizations.pageNum\n },\n\n getHasRptToken(state) {\n return state.hasRptToken\n },\n\n getLoginError(state): string | null {\n return state.loginError;\n },\n\n getAgreementsReminderShownInSession(state) {\n return state.agreements.reminderShownInSession\n },\n \n getOrganizationAllowRegister(state, getters, rootState, rootGetters) {\n // info is stored on theme but theme may be inherited by parent org\n const theme = rootGetters['theme/values']\n const orgAllowRegister = !!theme['organization-allow-register']\n const themeOrgId = theme['organizationId']\n const curSubOrg = getters[\"getOrganizations\"].selectedSubOrganization\n return curSubOrg.id == themeOrgId && orgAllowRegister\n },\n\n getLoggedUser(state) {\n const keycloak = CommunicationSettings.$keycloak;\n const idTokenParsed = keycloak && keycloak.idTokenParsed;\n const loggedUser = idTokenParsed && idTokenParsed.preferred_username;\n return loggedUser;\n },\n\n getIsTrial(state) {\n return state.trial.expirationDate != null\n },\n getTrialExpirationDate(state) {\n return state.trial.expirationDate\n },\n\n getIsEditingSuborg(state) {\n try { \n return state.organizations.selectedOrganization.id != state.organizations.selectedSubOrganization.id\n } catch(e) {\n return false;\n }\n },\n\n getSelectedOrganization(state) {\n return state.organizations.selectedOrganization\n },\n\n getSelectedSubOrganization(state) {\n return state.organizations.selectedSubOrganization\n },\n\n getAccessToken(state) {\n // don't return null. In some cases, like the theme api during the early \n // stages of login, we simple don't have a token and we don't want to set \n // the authorization token to null because it will trigger a 401 in the backend\n return state.access_token || undefined\n },\n\n getRefreshPermissionsRequired(state) : number {\n return state.refreshPermissionsRequired\n }\n}","import mutations from './Permission-store-mutations';\nimport actions from './Permission-store-actions';\nimport getters from './Permission-store-getters';\nimport { DevicePermissionsCache } from './VPNApp-store';\n\nexport default {\n namespaced: true,\n state: {\n iot: false,\n vpn: false,\n vpnPairingMode: '',\n otpRequired: false,\n organizations: {\n data: [],\n pagination: {},\n currentUserOrg: [],\n selectedOrganization: null,\n selectedSubOrganization: null,\n orgsTablePagination: {\n page: 1,\n },\n globalSelectorOrganizations: {\n lastPage: false,\n pageNum: 0,\n data: []\n },\n controllerData: [],\n currentResources: null,\n },\n currentFormUser: {\n email: '',\n username: '',\n type: '',\n name: '',\n organization: '',\n roles: '',\n accessToken: '',\n accessSecret: '',\n organizationRoles: [],\n groupsMember: [],\n isServiceAccessUser: false\n },\n currentFormGroup: {\n name: '',\n description: '',\n organizationRoles: [],\n users: []\n },\n currentFormRole: {\n name: '',\n id: '',\n description: '',\n owner: '',\n permissions: []\n },\n currentFormOrganization: {\n name: '',\n id: '',\n url: ''\n },\n users: {\n data: [],\n pagination: {},\n cachedUserRolesMap: {},\n userDataCache: {},\n usersTablePagination: {\n page: 1,\n },\n },\n userGroups: {\n data: [],\n groupDataCache: {},\n pagination: {},\n groupsTablePagination: {\n page: 1,\n },\n expanded: {}\n },\n roles: {\n data: [],\n pagination: {},\n rolesTablePagination: {\n page: 1,\n },\n },\n dataRoles: {\n data: [],\n pagination: {},\n dataRolesPermissionCache: {},\n dataRolesTablePagination: {\n page: 1,\n },\n },\n modelRoles: {\n data: [],\n pagination: {},\n modelRolesTablePagination: {\n page: 1,\n },\n },\n applicationPermissions: {\n data: [],\n pagination: {}\n },\n devicePermissions: {\n data: [],\n infiniteLoadingListIdentifier: 0,\n pagination: {},\n },\n hasRptToken: false,\n loginError: null as string | null,\n agreements: {\n reminderShownInSession: false\n },\n trial: {\n expirationDate: null\n },\n access_token: null,\n refreshPermissionsRequired: 0,\n deviceAuthorizationCache: {} as DevicePermissionsCache,\n },\n mutations,\n actions,\n getters\n };","export function removeOrganizationResourceIdPrefix(orgResId, rootOrg, fullRemoval=false) : string {\n // assuming suborgs' resourceId have common prefix with parent organization (the one the user logged into)\n let commonPrefix = \"\"\n if(fullRemoval) {\n commonPrefix = rootOrg.resourceId + \".\"\n } else {\n commonPrefix = rootOrg.resourceId.replace(rootOrg.label, '')\n }\n return orgResId.replace(commonPrefix, '')\n}"],"names":["requiredArgs","required","args","startOfDay","dirtyDate","date","toDate","argument","argStr","ApplicationPermissionsEntity","organization","store","modelRoleData","name","description","label","modelPaths","deviceGroups","type","deviceGeneralPermission","vpnGeneralPermission","formattedModelPaths","element","formattedDeviceGroups","formattedModelRoleData","read","write","history","modelPath","userData","memberOf","regularUserOf","adminUserOf","userRoles","userSpecialGroupRoles","associatedDevices","userAssociatedDevices","userGroups","groupsToAdd","groupsToRemove","processedGroups","userGroupsMap","g","currentGroup","userRolesId","rolesToAdd","rolesToRemove","associatedDevicesToAdd","associatedDevicesToRemove","roles","rolesFilteredByLabel","organizationResourceId","PermissionDataFormatter","defaultDeviceGroup","deviceGroup","elements","field","permissions","modelPermissions","permission","modelRole","permissionGroups","prop","a","b","iot","vpn","dealer","formattedPermission","toOmit","allEntities","entities","x","entity","entityPermission","username","email","groups","password","isServiceAccount","serviceAccountClientWebOrigins","passwordChangeInvitation","groupPoliciesEnabled","user_name","isUpdating","appStoreRoles","dataRoles","users","groupName","rolesId","membersId","regularUserMembersId","adminUserMembersId","user","DeviceGroupAllDevicesName","ModalEnum","OrganizationStatus","RoleOwnerEnum","canEdit","roleOwner","canDelete","getByUserOrByCorvina","isByUserOrByCorvina","getByAppStore","isByAppStore","RolesEnum","RolesPrefix","DEVICE_ROLE_PERMISSION","UserOwnerEnum","UserTypes","UserGroupType","UserGroupMembershipRole","state","value","data","pagination","newCD","idx","curCD","resources","arNewOrgs","organizations","isLastPage","pageNum","userId","groupId","roleId","page","val","itemsPerPage","dataRoleId","hasRptToken","loginError","shown","expirationDate","accessToken","cacheKey","stringPermission","prefix","formattedEntity","stringPermissions","limitsAndConsumptionsStore","maxDevicePermissionCacheAge","_state","getters","context","organizationId","abilityHelper","AbilityProvider","PermissionAction","PermissionEntity","CorvinaCoreAxiosInstance","response","filter","nameToCheck","m","duplicateName","Roles","duplicateLabel","match","roleFilter","modelPathData","filterDefaults","apiFilter","nonBeingDeletedOrgs","o","allSuborgs","suborgs","orgs","item","topOrgs","parentOrgId","subOrgNameToCheck","hostnameToCheck","payload","promises","ProductsAxiosInstance","res","err","params","controllerData","newControllerData","suborg","trialExpirationDate","Product","i","role","organizationName","dataRolesCache","formattedModelPermission","devicePermissionId","isAppUser","userDataCache","group","groupDataCache","cachedUserRolesMap","userGroupData","userGroupId","roleIds","myFilter","devGroupByName","allDevicesGroup","securityPolicyData","securityPolicyGroupId","securityPolicyGroupData","deviceId","roleData","modelPathPermissions","orgData","options","organizationData","error","token","decoded","access_token","rolePermissions","abilityProviderHelper","organizationHostname","permissionsRemoved","formattedPermissions","filteredPermissions","resolve","reject","clientId","_context","orgId","ags","agsTypes","agsType","userPrefId","userPrefIds","id","noCache","cacheHit","orgResourceId","deviceIds","result","cacheMisses","d","lookForName","rootState","rootGetters","theme","orgAllowRegister","themeOrgId","curSubOrg","keycloak","idTokenParsed","loggedUser","e","removeOrganizationResourceIdPrefix","orgResId","rootOrg","fullRemoval","commonPrefix"],"sourceRoot":""}