graphdb-workbench 3.3.2 → 3.3.3-TR1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/{13231.d7107e7549453805e13a.bundle.js → 13231.8bbbe30c10e6c0dfdba3.bundle.js} +2 -2
  2. package/dist/13231.8bbbe30c10e6c0dfdba3.bundle.js.map +1 -0
  3. package/dist/21015.6db2b66597f78d4b83cc.bundle.js +2 -0
  4. package/dist/21015.6db2b66597f78d4b83cc.bundle.js.map +1 -0
  5. package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js +2 -0
  6. package/dist/2975.c5ebc3e3ad52df3ab907.bundle.js.map +1 -0
  7. package/dist/38644.cc471c67239fa24901cc.bundle.js +2 -0
  8. package/dist/38644.cc471c67239fa24901cc.bundle.js.map +1 -0
  9. package/dist/39518.1c641a7dc1c50a526845.bundle.js +2 -0
  10. package/dist/{39518.4d72b74fffba395c6b2a.bundle.js.map → 39518.1c641a7dc1c50a526845.bundle.js.map} +1 -1
  11. package/dist/{64118.b06aebc9f8d7e822244f.bundle.js → 64118.177457589341de779668.bundle.js} +2 -2
  12. package/dist/64118.177457589341de779668.bundle.js.map +1 -0
  13. package/dist/67888.7224e1b2689d73c4d468.bundle.js +2 -0
  14. package/dist/67888.7224e1b2689d73c4d468.bundle.js.map +1 -0
  15. package/dist/71099.ba1073458b96d9789756.bundle.js +2 -0
  16. package/dist/71099.ba1073458b96d9789756.bundle.js.map +1 -0
  17. package/dist/75881.148ce498d06784abfd6c.bundle.js +2 -0
  18. package/dist/75881.148ce498d06784abfd6c.bundle.js.map +1 -0
  19. package/dist/78070.d54ede951a08e1c8689d.bundle.js +2 -0
  20. package/dist/78070.d54ede951a08e1c8689d.bundle.js.map +1 -0
  21. package/dist/{82926.ce1d6bf65b09288a2b10.bundle.js → 82926.bbdac6a7e9eb883ae97b.bundle.js} +2 -2
  22. package/dist/{82926.ce1d6bf65b09288a2b10.bundle.js.map → 82926.bbdac6a7e9eb883ae97b.bundle.js.map} +1 -1
  23. package/dist/{94229.47dbdba202106c61dff1.bundle.js → 94229.5a853fae006f6ef633af.bundle.js} +2 -2
  24. package/dist/94229.5a853fae006f6ef633af.bundle.js.map +1 -0
  25. package/dist/95953.1350a9dc14b22372b4e2.bundle.js +2 -0
  26. package/dist/95953.1350a9dc14b22372b4e2.bundle.js.map +1 -0
  27. package/dist/98268.a1bd17e40ede031a0a00.bundle.js +2 -0
  28. package/dist/98268.a1bd17e40ede031a0a00.bundle.js.map +1 -0
  29. package/dist/99448.b9922814bd15808a9d1c.bundle.js +2 -0
  30. package/dist/99448.b9922814bd15808a9d1c.bundle.js.map +1 -0
  31. package/dist/index.html +8 -8
  32. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  33. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  34. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  35. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  36. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  37. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  38. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
  39. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  40. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  41. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  42. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  43. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  44. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  45. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  46. package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
  47. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  48. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  49. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  50. package/dist/js/angular/security/templates/user.html +2 -2
  51. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  52. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  53. package/dist/js/angular/ttyg/templates/chat-item-detail.html +3 -2
  54. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  55. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  56. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  57. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
  58. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  59. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  60. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  61. package/dist/legacyWorkbench.4d8a4e8dde83fc9ac427.js +3 -0
  62. package/dist/{legacyWorkbench.40eba9e09196e1483221.js.map → legacyWorkbench.4d8a4e8dde83fc9ac427.js.map} +1 -1
  63. package/dist/pages/aclmanagement.html +1 -1
  64. package/dist/pages/autocomplete.html +1 -1
  65. package/dist/pages/choose-repository-type.html +1 -1
  66. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  67. package/dist/pages/create-index.html +1 -1
  68. package/dist/pages/dependencies.html +1 -1
  69. package/dist/pages/domainRangeInfo.html +2 -2
  70. package/dist/pages/edit.html +1 -1
  71. package/dist/pages/explore.html +1 -1
  72. package/dist/pages/export.html +1 -1
  73. package/dist/pages/find.html +1 -1
  74. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  75. package/dist/pages/graphs-visualizations.html +7 -7
  76. package/dist/pages/guides.html +1 -1
  77. package/dist/pages/home.html +1 -1
  78. package/dist/pages/import.html +2 -2
  79. package/dist/pages/jdbc-create.html +1 -1
  80. package/dist/pages/jdbc.html +1 -1
  81. package/dist/pages/monitor/backup-and-restore.html +1 -1
  82. package/dist/pages/monitor/queries.html +1 -1
  83. package/dist/pages/monitor/resources.html +1 -1
  84. package/dist/pages/namespaces.html +2 -2
  85. package/dist/pages/plugins.html +1 -1
  86. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  87. package/dist/pages/rdfrank.html +2 -2
  88. package/dist/pages/repositories.html +1 -1
  89. package/dist/pages/repository.html +1 -1
  90. package/dist/pages/similarity-indexes.html +1 -1
  91. package/dist/pages/sparql-editor.html +1 -1
  92. package/dist/pages/sparql-template-create.html +1 -1
  93. package/dist/pages/sparql-templates.html +1 -1
  94. package/dist/pages/ux-test1.html +2 -2
  95. package/dist/pages/webapi.html +4 -3
  96. package/dist/res/swagger5/index.html +11 -11
  97. package/dist/res/swagger5/swagger-initializer.js +1 -1
  98. package/package.json +1 -1
  99. package/dist/13231.d7107e7549453805e13a.bundle.js.map +0 -1
  100. package/dist/21015.ea34b563b4149ad0975e.bundle.js +0 -2
  101. package/dist/21015.ea34b563b4149ad0975e.bundle.js.map +0 -1
  102. package/dist/2975.8be1a79816fd811be223.bundle.js +0 -2
  103. package/dist/2975.8be1a79816fd811be223.bundle.js.map +0 -1
  104. package/dist/38644.0e8652c647a0f341abd7.bundle.js +0 -2
  105. package/dist/38644.0e8652c647a0f341abd7.bundle.js.map +0 -1
  106. package/dist/39518.4d72b74fffba395c6b2a.bundle.js +0 -2
  107. package/dist/64118.b06aebc9f8d7e822244f.bundle.js.map +0 -1
  108. package/dist/67888.41803878170b6c7a5ca5.bundle.js +0 -2
  109. package/dist/67888.41803878170b6c7a5ca5.bundle.js.map +0 -1
  110. package/dist/71099.ca7720893604e9d908d6.bundle.js +0 -2
  111. package/dist/71099.ca7720893604e9d908d6.bundle.js.map +0 -1
  112. package/dist/75881.54dc716f79b6fe29232a.bundle.js +0 -2
  113. package/dist/75881.54dc716f79b6fe29232a.bundle.js.map +0 -1
  114. package/dist/78070.13538271878de6a98862.bundle.js +0 -2
  115. package/dist/78070.13538271878de6a98862.bundle.js.map +0 -1
  116. package/dist/94229.47dbdba202106c61dff1.bundle.js.map +0 -1
  117. package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js +0 -2
  118. package/dist/95953.ec1b9d5e568d43ec3dcf.bundle.js.map +0 -1
  119. package/dist/98268.86ff371dde616b4e2a76.bundle.js +0 -2
  120. package/dist/98268.86ff371dde616b4e2a76.bundle.js.map +0 -1
  121. package/dist/99448.2a87f387a8062617d893.bundle.js +0 -2
  122. package/dist/99448.2a87f387a8062617d893.bundle.js.map +0 -1
  123. package/dist/legacyWorkbench.40eba9e09196e1483221.js +0 -3
  124. /package/dist/{legacyWorkbench.40eba9e09196e1483221.js.LICENSE.txt → legacyWorkbench.4d8a4e8dde83fc9ac427.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"78070.d54ede951a08e1c8689d.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/sparql/cancel-aborting-query.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontotext-yasgui/before-update-query-result.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/connectors/connector-command.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/sparql-editor/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/utils/string-utils.js"],"sourcesContent":["export class CancelAbortingQuery extends Error {}\n","export class BeforeUpdateQueryResult {\n constructor(status, messageLabelKey, parameters, mesage) {\n this.status = status;\n this.mesage = mesage;\n this.messageLabelKey = messageLabelKey;\n this.parameters = parameters;\n }\n}\n\nexport const BeforeUpdateQueryResultStatus = {\n ERROR: 'error',\n SUCCESS: 'success'\n};\n","export const ConnectorCommand = {\n 'CREATE': 'create',\n 'REPAIR': 'repair',\n 'DROP': 'drop'\n};\n","import {\n savedQueryResponseMapper, buildQueryModel,\n} from \"../rest/mappers/saved-query-mapper\";\nimport {RouteConstants} from \"../utils/route-constants\";\nimport 'angular/rest/connectors.rest.service';\nimport 'angular/externalsync/controllers';\nimport {YasguiComponentDirectiveUtil} from \"../core/directives/yasgui-component/yasgui-component-directive.util\";\nimport {QueryType} from \"../models/ontotext-yasgui/query-type\";\nimport {ConnectorCommand} from \"../models/connectors/connector-command\";\nimport {BeforeUpdateQueryResult, BeforeUpdateQueryResultStatus} from \"../models/ontotext-yasgui/before-update-query-result\";\nimport {EventDataType} from \"../models/ontotext-yasgui/event-data-type\";\nimport {decodeHTML} from \"../../../app\";\nimport {toBoolean} from \"../utils/string-utils\";\nimport {VIEW_SPARQL_EDITOR} from \"../models/sparql/constants\";\nimport {CancelAbortingQuery} from \"../models/sparql/cancel-aborting-query\";\nimport {QueryMode} from \"../models/ontotext-yasgui/query-mode\";\nimport 'angular/core/services/event-emitter-service';\nimport {LoggerProvider} from \"../core/services/logger-provider\";\nimport {\n navigateTo,\n LanguageContextService,\n ServiceProvider,\n EventService,\n EventName,\n SecurityContextService,\n service,\n REPOSITORY_ID_PARAM,\n} from \"@ontotext/workbench-api\";\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.rest.connectors.service',\n 'graphdb.framework.externalsync.controllers',\n 'graphdb.framework.utils.event-emitter-service',\n 'graphdb.framework.utils.localstorageadapter',\n];\n\nconst logger = LoggerProvider.logger;\n\nangular\n .module('graphdb.framework.sparql-editor.controllers', modules)\n .controller('SparqlEditorCtrl', SparqlEditorCtrl);\n\nSparqlEditorCtrl.$inject = [\n '$rootScope',\n '$scope',\n '$q',\n '$location',\n '$languageService',\n '$repositories',\n '$uibModal',\n 'toastr',\n '$translate',\n 'SparqlRestService',\n 'ConnectorsRestService',\n 'GuidesService',\n 'ModalService',\n 'MonitoringRestService',\n 'EventEmitterService',\n 'LocalStorageAdapter',\n 'LSKeys'];\n\nfunction SparqlEditorCtrl($rootScope,\n $scope,\n $q,\n $location,\n $languageService,\n $repositories,\n $uibModal,\n toastr,\n $translate,\n SparqlRestService,\n ConnectorsRestService,\n GuidesService,\n ModalService,\n MonitoringRestService,\n EventEmitterService,\n LocalStorageAdapter,\n LSKeys) {\n const securityContextService = service(SecurityContextService);\n\n this.repository = '';\n\n const QUERY_EDITOR_ID = '#query-editor';\n let activeRepository = $repositories.getActiveRepository();\n let isOntopRepo = $repositories.isActiveRepoOntopType();\n\n /**\n * @type {OntotextYasguiConfig}\n */\n $scope.yasguiConfig = undefined;\n $scope.savedQueryConfig = undefined;\n $scope.prefixes = {};\n $scope.inferUserSetting = true;\n $scope.sameAsUserSetting = true;\n\n const tabIdToConnectorProgressModalMapping = new Map();\n let internallyReloaded = false;\n\n // =========================\n // Public functions\n // =========================\n /**\n * Updates the Yasgui configuration\n * @param {boolean} clearYasguiState if set to true, the Yasgui will reinitialize and clear all tab results. Queries will remain.\n */\n $scope.updateConfig = (clearYasguiState) => {\n $scope.yasguiConfig = {\n endpoint: getEndpoint,\n componentId: VIEW_SPARQL_EDITOR,\n prefixes: $scope.prefixes,\n infer: isOntopRepo || $scope.inferUserSetting,\n sameAs: isOntopRepo || $scope.sameAsUserSetting,\n yasrToolbarPlugins: [exploreVisualGraphYasrToolbarElementBuilder],\n beforeUpdateQuery: getBeforeUpdateQueryHandler(),\n outputHandlers: new Map([\n [EventDataType.QUERY_EXECUTED, queryExecutedHandler],\n [EventDataType.REQUEST_ABORTED, requestAbortedHandler],\n ]),\n clearState: clearYasguiState !== undefined ? clearYasguiState : false,\n };\n };\n\n $scope.getActiveRepositoryNoError = () => {\n return activeRepository;\n };\n\n // =========================\n // Private functions\n // =========================\n const getYasqe = (yasgui) => {\n const tab = yasgui.getTab();\n if (!tab) {\n return;\n }\n return tab.getYasqe();\n };\n\n const getEndpoint = (yasgui) => {\n const yasqe = getYasqe(yasgui);\n if (!yasqe) {\n // this can happen if open saprql view for first time (browser local store is clear);\n return;\n }\n return $repositories.resolveSparqlEndpoint(yasqe.getQueryMode());\n };\n\n /**\n * Initializes the editor from the URL parameters.\n * @param {boolean} clearYasguiState if set to true, the Yasgui will reinitialize and clear all tab results. Queries will remain.\n * The default is false.\n */\n const initViewFromUrlParams = (clearYasguiState = false) => {\n $scope.updateConfig(clearYasguiState);\n const queryParams = $location.search();\n if (queryParams.hasOwnProperty(RouteConstants.savedQueryName)) {\n // init new tab from shared saved query link\n initTabFromSavedQuery(queryParams);\n } else if (queryParams.hasOwnProperty(RouteConstants.query)) {\n // init new tab from shared query link\n initTabFromSharedQuery(queryParams);\n } else if (GuidesService.isActive()) {\n openNewTab();\n }\n };\n\n // ================================\n // = Setup output handlers\n // ================================\n /**\n * Handles the \"queryExecuted\" event emitted by ontotext-yasgui. The event is fired immediately after the request is executed, whether it succeeds or fails.\n * @param {QueryExecutedEvent} queryExecutedRequest - the event payload.\n */\n const queryExecutedHandler = (queryExecutedRequest) => {\n const connectorProgressModal = tabIdToConnectorProgressModalMapping.get(queryExecutedRequest.tabId);\n if (connectorProgressModal) {\n connectorProgressModal.dismiss();\n tabIdToConnectorProgressModalMapping.delete(queryExecutedRequest.tabId);\n }\n };\n\n /**\n * Handles the \"requestAborted\" event emitted by the ontotext-yasgui. The event is fired when a request is aborted.\n *\n * @param {RequestAbortedEvent} requestAbortedEvent the event payload containing the request object and the query mode.\n */\n const requestAbortedHandler = (requestAbortedEvent) => {\n if (requestAbortedEvent && QueryMode.UPDATE !== requestAbortedEvent.queryMode) {\n const repository = requestAbortedEvent.getRepository();\n const currentTrackAlias = requestAbortedEvent.getQueryTrackAlias();\n if (repository && currentTrackAlias) {\n MonitoringRestService.deleteQuery(currentTrackAlias, repository);\n }\n }\n };\n\n // =========================\n // Private function\n // =========================\n\n const initTabFromSavedQuery = (queryParams) => {\n const savedQueryName = queryParams[RouteConstants.savedQueryName];\n const savedQueryOwner = queryParams[RouteConstants.savedQueryOwner];\n const isExecuteRequested = toBoolean(queryParams.execute);\n\n SparqlRestService.getSavedQuery(savedQueryName, savedQueryOwner).then((res) => {\n const savedQuery = savedQueryResponseMapper(res);\n openNewTab(savedQuery)\n .then(clearUrlParameters)\n .then(() => autoExecuteQueryIfRequested(isExecuteRequested));\n }).catch((err) => {\n toastr.error($translate.instant('query.editor.missing.saved.query.data.error', {\n savedQueryName: savedQueryName,\n error: getError(err),\n }));\n });\n };\n\n const initTabFromSharedQuery = (queryParams) => {\n const queryName = queryParams[RouteConstants.name];\n const query = queryParams[RouteConstants.query];\n const queryOwner = queryParams[RouteConstants.owner];\n const isExecuteRequested = toBoolean(queryParams.execute);\n const sharedQueryModel = buildQueryModel(query, queryName, queryOwner, true);\n openNewTab(sharedQueryModel)\n .then(clearUrlParameters)\n .then(() => autoExecuteQueryIfRequested(isExecuteRequested));\n };\n\n /**\n * Open a new tab with query described in <code>sparqlQuery</code>.\n *\n * @param {TabQueryModel} sparqlQuery\n *\n * @return {Promise<void>}\n */\n const openNewTab = (sparqlQuery) => {\n return YasguiComponentDirectiveUtil.getOntotextYasguiElementAsync(QUERY_EDITOR_ID)\n .then((yasguiComponent) => yasguiComponent.openTab(sparqlQuery))\n .then((tab) => YasguiComponentDirectiveUtil.highlightTabName(tab));\n };\n\n const clearUrlParameters = () => {\n internallyReloaded = true;\n const currentParams = $location.search();\n // Keep only the repositoryId parameter (if any). This will prevent router event from being triggered again and\n // reinitializing the repositoryId param thus adding a new history entry.\n const repositoryId = currentParams[REPOSITORY_ID_PARAM];\n $location.search(repositoryId ? {repositoryId} : {});\n // Replace current URL without adding a new history entry\n $location.replace();\n };\n\n const autoExecuteQueryIfRequested = (isRequested) => {\n if (isRequested) {\n return YasguiComponentDirectiveUtil.getOntotextYasguiElementAsync(QUERY_EDITOR_ID)\n .then(getQueryMode)\n .then(confirmAndExecuteQuery);\n }\n return Promise.resolve();\n };\n\n const getQueryMode = (yasguiComponent) => {\n return yasguiComponent.getQueryMode()\n .then((queryMode) => {\n return {yasguiComponent, queryMode};\n });\n };\n\n const confirmAndExecuteQuery = ({yasguiComponent, queryMode}) => {\n if (queryMode !== 'update') {\n return yasguiComponent.query();\n }\n\n return new Promise((resolve) => {\n const title = $translate.instant('confirm.execute');\n const message = decodeHTML($translate.instant('query.editor.automatically.execute.update.warning'));\n ModalService.openConfirmation(title, message, () => resolve(yasguiComponent.query()), () => resolve());\n });\n };\n\n const setInferAndSameAs = (principal) => {\n $scope.inferUserSetting = principal?.appSettings.DEFAULT_INFERENCE;\n $scope.sameAsUserSetting = principal?.appSettings.DEFAULT_SAMEAS;\n };\n\n const exploreVisualGraphYasrToolbarElementBuilder = {\n createElement: (yasr) => {\n const buttonName = document.createElement('span');\n buttonName.classList.add(\"explore-visual-graph-button-name\");\n const exploreVisualButtonWrapperElement = document.createElement('button');\n exploreVisualButtonWrapperElement.classList.add(\"explore-visual-graph-button\");\n exploreVisualButtonWrapperElement.classList.add(\"icon-data\");\n exploreVisualButtonWrapperElement.onclick = function() {\n const paramsToParse = {\n query: yasr.yasqe.getValue(),\n sameAs: yasr.yasqe.getSameAs(),\n inference: yasr.yasqe.getInfer(),\n };\n const navigate = function() {\n $location.path('graphs-visualizations').search(paramsToParse);\n };\n // This button is embedded in the Yasr toolbar, which is outside the Angular context, so we need to\n // manually trigger the navigation inside the Angular context. Otherwise, the navigation will be\n // triggered on the next digest cycle that might never happen. In our case there is a constant server\n // polling that triggers the digest cycle, so the navigation will be triggered, but it can lead to a\n // noticeable delay. By manually triggering the navigation inside the Angular context, we ensure that\n // the navigation is triggered immediately.\n if ($scope.$$phase || $rootScope.$$phase) {\n navigate();\n } else {\n $scope.$apply(navigate);\n }\n };\n exploreVisualButtonWrapperElement.appendChild(buttonName);\n return exploreVisualButtonWrapperElement;\n },\n updateElement: (element, yasr) => {\n element.classList.add('hidden');\n if (!yasr.hasResults()) {\n return;\n }\n const queryType = yasr.yasqe.getQueryType();\n\n if (QueryType.CONSTRUCT === queryType || QueryType.DESCRIBE === queryType) {\n element.classList.remove('hidden');\n }\n element.querySelector('.explore-visual-graph-button-name').innerText = $translate.instant(\"query.editor.visual.btn\");\n },\n getOrder: () => {\n return 2;\n },\n };\n\n const createParameter = (key, value) => {\n return {key, value};\n };\n\n const getCommandParameters = (response) => {\n return [createParameter('name', response.data.name)];\n };\n\n const toNoCommandResponse = () => {\n return new BeforeUpdateQueryResult(BeforeUpdateQueryResultStatus.SUCCESS);\n };\n\n const toHasNotSupport = (response) => {\n const parameters = [\n createParameter('connectorName', response.data.connectorName),\n createParameter('pluginName', response.data.pluginName),\n ];\n return new BeforeUpdateQueryResult(BeforeUpdateQueryResultStatus.ERROR, 'query.editor.inactive.plugin.warning.msg', parameters);\n };\n\n const createConnectorProgressDialog = (actionName, iri, connectorName) => {\n const progressScope = $scope.$new(true);\n progressScope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0,\n },\n actionName,\n eta: \"-\",\n inline: false,\n iri,\n name: connectorName,\n doneCallback: function() {\n connectorProgressModal.dismiss('cancel');\n },\n };\n progressScope.getHumanReadableSeconds = $scope.getHumanReadableSeconds;\n\n const connectorProgressModal = $uibModal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: progressScope,\n });\n return connectorProgressModal;\n };\n\n const toCreateCommandResponse = (response, tabId) => {\n const connectorProgressModal = createConnectorProgressDialog($translate.instant('externalsync.creating'), response.data.iri, response.data.name);\n tabIdToConnectorProgressModalMapping.set(tabId, connectorProgressModal);\n return new BeforeUpdateQueryResult(BeforeUpdateQueryResultStatus.SUCCESS, 'created.connector', getCommandParameters(response));\n };\n\n const toRepairCommandResponse = (response, tabId) => {\n const connectorProgressModal = createConnectorProgressDialog($translate.instant('externalsync.repairing'), response.data.iri, response.data.name);\n tabIdToConnectorProgressModalMapping.set(tabId, connectorProgressModal);\n return new BeforeUpdateQueryResult(BeforeUpdateQueryResultStatus.SUCCESS, 'query.editor.repaired.connector', getCommandParameters(response));\n };\n\n const toDropCommandResponse = (response) => {\n return new BeforeUpdateQueryResult(BeforeUpdateQueryResultStatus.SUCCESS, 'externalsync.delete.success.msg', getCommandParameters(response));\n };\n\n const getBeforeUpdateQueryHandler = () => (query, tabId) => {\n return ConnectorsRestService.checkConnector(query)\n .then((response) => {\n if (!response.data.command) {\n return toNoCommandResponse();\n }\n if (!response.data.hasSupport) {\n return toHasNotSupport(response);\n }\n\n if (ConnectorCommand.CREATE === response.data.command) {\n return toCreateCommandResponse(response, tabId);\n }\n\n if (ConnectorCommand.REPAIR === response.data.command) {\n return toRepairCommandResponse(response, tabId);\n }\n\n if (ConnectorCommand.DROP === response.data.command) {\n return toDropCommandResponse(response);\n }\n }).catch((error) => {\n // For some reason we couldn't check if this is a connector update, so just catch the exception,\n // to not stop the execution of query.\n logger.error('Checking connector error: ', error);\n });\n };\n\n const getExitPageConfirmMessage = (ongoingRequestsInfo) => {\n let exitPageConfirmMessage = \"view.sparql-editor.leave_page.run_queries.confirmation.\";\n if (!ongoingRequestsInfo || ongoingRequestsInfo.queriesCount < 1) {\n exitPageConfirmMessage += \"none_queries_\";\n } else if (ongoingRequestsInfo.queriesCount === 1) {\n exitPageConfirmMessage += \"one_query_\";\n } else {\n exitPageConfirmMessage += \"queries_\";\n }\n\n if (!ongoingRequestsInfo.updatesCount || ongoingRequestsInfo.updatesCount === 0) {\n exitPageConfirmMessage += \"non_updates\";\n } else if (ongoingRequestsInfo.updatesCount === 1) {\n exitPageConfirmMessage += \"one_update\";\n } else {\n exitPageConfirmMessage += \"updates\";\n }\n\n exitPageConfirmMessage += \".message\";\n const params = {\n queriesCount: ongoingRequestsInfo.queriesCount,\n updatesCount: ongoingRequestsInfo.updatesCount,\n };\n return $translate.instant(exitPageConfirmMessage, params);\n };\n\n // Initialization and bootstrap\n const init = (clearYasguiState) => {\n // This script check is required, because of the following scenario:\n // I am in the SPARQL view;\n // Then I go to a different view and change the language;\n // Then I return to the SPARQL view. I will see that the Google chart and Pivot table will have their\n // original scripts loaded still.\n // THE FIX: Get all the scripts (if there are none, the correct language will be loaded). If there are\n // scripts, and they don't match those, which are loaded already, the page needs to reload when opening\n // the SPARQL view, otherwise the Google chart and Pivot table configs will be in the old language.\n const googleScripts = document.querySelectorAll(`script[src*=\"https://www.gstatic.com/\"]`);\n if (googleScripts.length > 0) {\n const currentLang = $languageService.getLanguage();\n let searchTerm = 'module.js';\n if ('en' !== currentLang) {\n searchTerm = `module__${currentLang}.js`;\n }\n if (!Array.prototype.some.call(googleScripts, (script) => script.src.includes(searchTerm))) {\n location.reload();\n return;\n }\n }\n const principal = securityContextService.getAuthenticatedUser();\n $q.when($repositories.getPrefixes(activeRepository))\n .then((usedPrefixes) => {\n $scope.prefixes = usedPrefixes;\n setInferAndSameAs(principal);\n // check is there is a saved query or query url parameter and init the editor\n initViewFromUrlParams(clearYasguiState);\n });\n // TODO: we should also watch for changes in namespaces\n // scope.$watch('namespaces', function () {});\n };\n\n // =========================\n // Event handlers\n // =========================\n const subscriptions = [];\n\n const repositoryChangedHandler = (object) => {\n if (!object) {\n return;\n }\n activeRepository = $repositories.getActiveRepository();\n isOntopRepo = $repositories.isActiveRepoOntopType(object);\n if (LocalStorageAdapter.get(LSKeys.SPARQL_LAST_REPO) !== activeRepository) {\n init(true);\n persistLasstUsedRepository();\n } else {\n init(false);\n }\n };\n\n const beforeunloadHandler = (event) => {\n const ontotextYasguiElement = YasguiComponentDirectiveUtil.getOntotextYasguiElement(QUERY_EDITOR_ID);\n if (!ontotextYasguiElement) {\n return;\n }\n // If we set event.returnValue, the browser will prompt the user for confirmation to leave the page,\n // but we don't have a way to handle the user's choice.\n // Therefore, we can't take any action, so we simply proceed to abort all requests.\n ontotextYasguiElement.abortAllRequests().then(() => {});\n };\n\n window.addEventListener('beforeunload', beforeunloadHandler);\n\n const confirmIfHaveRunQuery = (ongoingRequestsInfo) => new Promise((resolve, reject) => {\n if (!ongoingRequestsInfo || ongoingRequestsInfo.queriesCount < 1 && ongoingRequestsInfo.updatesCount < 1) {\n resolve();\n return;\n }\n\n const title = $translate.instant('common.confirm');\n const message = decodeHTML(getExitPageConfirmMessage(ongoingRequestsInfo));\n ModalService.openSimpleModal({\n title,\n message,\n warning: true,\n }).result.then(function() {\n resolve();\n }, function() {\n reject(new CancelAbortingQuery());\n });\n });\n let queriesAreCanceled = undefined;\n const locationChangeHandler = (eventPayload) => {\n if (internallyReloaded) {\n internallyReloaded = false;\n return;\n }\n const ontotextYasguiElement = YasguiComponentDirectiveUtil.getOntotextYasguiElement(QUERY_EDITOR_ID);\n if (!ontotextYasguiElement || queriesAreCanceled) {\n return;\n }\n\n const url = new URL(eventPayload.newUrl);\n const newUrl = url.pathname + url.search + url.hash;\n eventPayload.cancelNavigation();\n // First, we check if there are any ongoing requests initiated by the user.\n // If the user has ongoing requests, we request confirmation to abort them.\n // If the user confirms or there are no ongoing requests, we call the \"abortAllRequests\" method. This method will abort all requests.\n ontotextYasguiElement\n .getOngoingRequestsInfo()\n .then((hasRunQuery) => confirmIfHaveRunQuery(hasRunQuery))\n .then(() => ontotextYasguiElement.abortAllRequests())\n .then(() => {\n queriesAreCanceled = true;\n navigateTo(newUrl)();\n })\n .catch((error) => {\n if (!(error instanceof CancelAbortingQuery)) {\n logger.error(error);\n queriesAreCanceled = true;\n navigateTo(newUrl)();\n }\n });\n };\n\n subscriptions.push(\n ServiceProvider.get(EventService).subscribe(EventName.NAVIGATION_START, (eventPayload) => locationChangeHandler(eventPayload)),\n );\n\n const removeAllListeners = () => {\n subscriptions.forEach((subscription) => subscription());\n window.removeEventListener('beforeunload', beforeunloadHandler);\n };\n\n const finalizeAndDestroy = () => {\n persistLasstUsedRepository();\n removeAllListeners();\n };\n\n const persistLasstUsedRepository = () => {\n // The active repository is set when the controller is initialized and when the repository is changed.\n // It holds the actual repository when the YASGUI is initialized. DON'T use runtime fetching of the actual repository here, because there is a scenario:\n // 1. Open a tab with the SPARQL view open;\n // 2. Open the SPARQL view in another tab and execute a query;\n // 3. Switch to the repositories view and change the repository;\n // 4. Switch back to the SPARQL view, and the YASR is not cleared.\n // The problem occurs because of the second tab. When the repository is changed, its ID is persisted to local storage, which triggers the \"storage\" event to be fired.\n // In the main controller, a listener has been registered to listen to that event and refresh the page outside of the Angular scope.\n // Reloading the page triggers the destruction of the component and persistence of the active repository. The reloading of the page is out of the Angular scope, so the \"activeRepository\"\n // holds the real repository when the YASGUI is created. If we use $$repositories.getActiveRepository(), the new value will be fetched, which in this case will be incorrect.\n LocalStorageAdapter.set(LSKeys.SPARQL_LAST_REPO, activeRepository);\n };\n\n subscriptions.push(\n $scope.$on('language-changed', function() {\n location.reload();\n }),\n );\n\n const onLanguageChange = () => {\n // Do nothing on language change\n };\n\n const showLanguageChangeConfirmation = () => {\n return new Promise((resolve) => {\n ModalService.openSimpleModal({\n title: $translate.instant('query.editor.language.change.warning.title'),\n message: $translate.instant('query.editor.reload.page.warning'),\n warning: true,\n }).result.then(function() {\n resolve(true);\n }, function() {\n resolve(false);\n });\n });\n };\n\n const languageContextService = ServiceProvider.get(LanguageContextService);\n const onLanguageChangeSubscription = languageContextService.onSelectedLanguageChanged(onLanguageChange, showLanguageChangeConfirmation);\n\n // Subscribe to language change and ask to reload the page\n subscriptions.push(onLanguageChangeSubscription);\n\n // Deregister the watcher when the scope/directive is destroyed\n subscriptions.push($scope.$on('$destroy', finalizeAndDestroy));\n\n // Wait until the active repository object is set, otherwise \"canWriteActiveRepo()\" may return a wrong result and the \"ontotext-yasgui\"\n // readOnly configuration may be incorrect.\n subscriptions.push($scope.$watch($scope.getActiveRepositoryObject, repositoryChangedHandler));\n}\n","import {upperFirst} from \"lodash\";\n\n/**\n * Removes brackets and serial commas from IRIs\n * when used to create ids for links and markers,\n * because elements with ids that contain such\n * are not valid XHTML and cause a host problems\n * when trying to style individual elements\n * @param {string} string The string to be processed.\n * @return {string} A string where the special characters are removed.\n */\nconst removeSpecialChars = (string) => {\n return string.replace(/[()']/g, \"\");\n};\n\nconst toBoolean = (value) => {\n if (typeof value === 'string') {\n return value === 'true';\n }\n return Boolean(value);\n};\n\nconst toTitleCase = (text) => {\n if (!text) {\n return text;\n }\n return upperFirst(text.toLowerCase());\n};\n\nexport {\n removeSpecialChars,\n toBoolean,\n toTitleCase\n};\n\n"],"names":["CancelAbortingQuery","Error","BeforeUpdateQueryResult","constructor","status","messageLabelKey","parameters","mesage","this","BeforeUpdateQueryResultStatus","ERROR","SUCCESS","ConnectorCommand","logger","LoggerProvider","SparqlEditorCtrl","$rootScope","$scope","$q","$location","$languageService","$repositories","$uibModal","toastr","$translate","SparqlRestService","ConnectorsRestService","GuidesService","ModalService","MonitoringRestService","EventEmitterService","LocalStorageAdapter","LSKeys","securityContextService","service","SecurityContextService","repository","QUERY_EDITOR_ID","activeRepository","getActiveRepository","isOntopRepo","isActiveRepoOntopType","yasguiConfig","undefined","savedQueryConfig","prefixes","inferUserSetting","sameAsUserSetting","tabIdToConnectorProgressModalMapping","Map","internallyReloaded","updateConfig","clearYasguiState","endpoint","getEndpoint","componentId","VIEW_SPARQL_EDITOR","infer","sameAs","yasrToolbarPlugins","exploreVisualGraphYasrToolbarElementBuilder","beforeUpdateQuery","getBeforeUpdateQueryHandler","outputHandlers","EventDataType","QUERY_EXECUTED","queryExecutedHandler","REQUEST_ABORTED","requestAbortedHandler","clearState","getActiveRepositoryNoError","yasgui","yasqe","tab","getTab","getYasqe","resolveSparqlEndpoint","getQueryMode","queryExecutedRequest","connectorProgressModal","get","tabId","dismiss","delete","requestAbortedEvent","QueryMode","UPDATE","queryMode","getRepository","currentTrackAlias","getQueryTrackAlias","deleteQuery","openNewTab","sparqlQuery","YasguiComponentDirectiveUtil","getOntotextYasguiElementAsync","then","yasguiComponent","openTab","highlightTabName","clearUrlParameters","repositoryId","search","REPOSITORY_ID_PARAM","replace","autoExecuteQueryIfRequested","isRequested","confirmAndExecuteQuery","Promise","resolve","query","title","instant","message","decodeHTML","openConfirmation","createElement","yasr","buttonName","document","classList","add","exploreVisualButtonWrapperElement","onclick","paramsToParse","getValue","getSameAs","inference","getInfer","navigate","path","$$phase","$apply","appendChild","updateElement","element","hasResults","queryType","getQueryType","QueryType","CONSTRUCT","DESCRIBE","remove","querySelector","innerText","getOrder","createParameter","key","value","getCommandParameters","response","data","name","createConnectorProgressDialog","actionName","iri","connectorName","progressScope","$new","beingBuiltConnector","percentDone","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","eta","inline","doneCallback","getHumanReadableSeconds","open","templateUrl","controller","size","backdrop","scope","checkConnector","command","hasSupport","CREATE","toCreateCommandResponse","set","REPAIR","toRepairCommandResponse","DROP","toDropCommandResponse","pluginName","toHasNotSupport","catch","error","init","googleScripts","querySelectorAll","length","currentLang","getLanguage","searchTerm","Array","prototype","some","call","script","src","includes","location","reload","principal","getAuthenticatedUser","when","getPrefixes","usedPrefixes","appSettings","DEFAULT_INFERENCE","DEFAULT_SAMEAS","setInferAndSameAs","initViewFromUrlParams","queryParams","hasOwnProperty","RouteConstants","savedQueryName","savedQueryOwner","isExecuteRequested","toBoolean","execute","getSavedQuery","res","savedQuery","savedQueryResponseMapper","err","getError","initTabFromSavedQuery","queryName","queryOwner","owner","sharedQueryModel","buildQueryModel","initTabFromSharedQuery","isActive","subscriptions","beforeunloadHandler","event","ontotextYasguiElement","getOntotextYasguiElement","abortAllRequests","window","addEventListener","queriesAreCanceled","push","ServiceProvider","EventService","subscribe","EventName","NAVIGATION_START","eventPayload","url","URL","newUrl","pathname","hash","cancelNavigation","getOngoingRequestsInfo","hasRunQuery","confirmIfHaveRunQuery","ongoingRequestsInfo","reject","queriesCount","updatesCount","exitPageConfirmMessage","params","getExitPageConfirmMessage","openSimpleModal","warning","result","navigateTo","locationChangeHandler","persistLasstUsedRepository","SPARQL_LAST_REPO","$on","onLanguageChangeSubscription","LanguageContextService","onSelectedLanguageChanged","onLanguageChange","showLanguageChangeConfirmation","finalizeAndDestroy","forEach","subscription","removeEventListener","$watch","getActiveRepositoryObject","object","angular","module","$inject","removeSpecialChars","string","Boolean","toTitleCase","text","upperFirst","toLowerCase"],"ignoreList":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_esm_id__=82926;export const __webpack_esm_ids__=[82926];export const __webpack_esm_modules__={82926(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.3.2">{{\'common.loading\' | translate}}</object>')})}}}angular.module("graphdb.framework.import.directives.import-progress-indicator",[]).directive("ImportProgressIndicator",t),t.$inject=[]}};
2
- //# sourceMappingURL=82926.ce1d6bf65b09288a2b10.bundle.js.map
1
+ export const __webpack_esm_id__=82926;export const __webpack_esm_ids__=[82926];export const __webpack_esm_modules__={82926(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.3.3-TR1">{{\'common.loading\' | translate}}</object>')})}}}angular.module("graphdb.framework.import.directives.import-progress-indicator",[]).directive("ImportProgressIndicator",t),t.$inject=[]}};
2
+ //# sourceMappingURL=82926.bbdac6a7e9eb883ae97b.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"82926.ce1d6bf65b09288a2b10.bundle.js","mappings":"6HASA,SAASA,IACL,MAAO,CACHC,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMG,OAAO,cAAe,WACE,cAAtBH,EAAMI,KAAKC,QAAgD,cAAtBL,EAAMI,KAAKC,SAC3CC,EAAEL,GAASM,IAAI,UAAUC,OAAS,GACnCF,EAAEL,GAASQ,OAAO,kBAAoBP,EAAKQ,KAAO,aAAeR,EAAKQ,KAAO,yGAGzF,EACJ,EAER,CAnBAC,QACKC,OAAO,gEAHI,IAIXC,UAAU,0BAA2Bf,GAE1CA,EAAwBgB,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/import/directives/import-progress-indicator.directive.js"],"sourcesContent":["const modules = [];\n\nangular\n .module('graphdb.framework.import.directives.import-progress-indicator', modules)\n .directive('ImportProgressIndicator', ImportProgressIndicator);\n\nImportProgressIndicator.$inject = [];\n\n// importDirectives.directive('filesOntoLoader',\nfunction ImportProgressIndicator() {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=3.3.2\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n}\n"],"names":["ImportProgressIndicator","link","scope","element","attr","$watch","file","status","$","has","length","append","size","angular","module","directive","$inject"],"ignoreList":[],"sourceRoot":""}
1
+ {"version":3,"file":"82926.bbdac6a7e9eb883ae97b.bundle.js","mappings":"6HASA,SAASA,IACL,MAAO,CACHC,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMG,OAAO,cAAe,WACE,cAAtBH,EAAMI,KAAKC,QAAgD,cAAtBL,EAAMI,KAAKC,SAC3CC,EAAEL,GAASM,IAAI,UAAUC,OAAS,GACnCF,EAAEL,GAASQ,OAAO,kBAAoBP,EAAKQ,KAAO,aAAeR,EAAKQ,KAAO,6GAGzF,EACJ,EAER,CAnBAC,QACKC,OAAO,gEAHI,IAIXC,UAAU,0BAA2Bf,GAE1CA,EAAwBgB,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/import/directives/import-progress-indicator.directive.js"],"sourcesContent":["const modules = [];\n\nangular\n .module('graphdb.framework.import.directives.import-progress-indicator', modules)\n .directive('ImportProgressIndicator', ImportProgressIndicator);\n\nImportProgressIndicator.$inject = [];\n\n// importDirectives.directive('filesOntoLoader',\nfunction ImportProgressIndicator() {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=3.3.3-TR1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n}\n"],"names":["ImportProgressIndicator","link","scope","element","attr","$watch","file","status","$","has","length","append","size","angular","module","directive","$inject"],"ignoreList":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_esm_id__=94229;export const __webpack_esm_ids__=[33760,48477,94229];export const __webpack_esm_modules__={33760(e,t,r){r.d(t,{B1:()=>u,DX:()=>i,_5:()=>c,aj:()=>o,n5:()=>s,w0:()=>a,xF:()=>n});const s="SYSTEM",o="READ_REPO",n="READ_REPO_",i="WRITE_REPO",a="GRAPHQL",c="WRITE_REPO_",u="GRAPHQL_"},48477(){angular.module("graphdb.framework.security.directives",[]).directive("customPrefixTagsInput",function(){return{restrict:"A",link:function(e,t,r){const s=[];function o(e){return e.startsWith("CUSTOM_")||e.startsWith("!CUSTOM_")}const n="tags-input"===t[0].nodeName.toLowerCase();if(n&&r.ngModel){const i=t.controller("ngModel");n&&(i.$parsers.push(function(e){return Array.isArray(e)&&(i.$warning=e.some(e=>o(e))),e}),s.push(e.$watch(r.ngModel,function(e){Array.isArray(e)&&(i.$warning=e.some(e=>o(e)))},!0)))}s.push(e.$on("$destroy",()=>{s.forEach(e=>e())}))}}})},94229(e,t,r){r(82493),r(98599),r(2243);var s=r(92900),o=(r(48477),r(33760)),n=r(57154);const i=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.security-service","toastr","ngTagsInput"]);i.controller("UsersCtrl",["$scope","$uibModal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityService","$translate",function(e,t,r,s,i,a,c,u,d){const p=(0,n.service)(n.AuthorizationService),l=(0,n.service)(n.AuthenticationService),h=(0,n.service)(n.SecurityService),E=(0,n.service)(n.OntoToastrService),A=(0,n.service)(n.UsersService),g=(0,n.service)(n.RepositoryService);e.usersData=[],e.loader=!0,e.securityEnabled=function(){return l.isSecurityEnabled()},e.hasExternalAuth=function(){return i.hasExternalAuth()},e.getAuthImplementation=function(){return i.getAuthImplementation()},e.freeAccessEnabled=function(){return p.hasFreeAccess()},e.getUsers=()=>A.getUsers().then(function(t){e.usersData=t.map(e=>({username:e.username,dateCreated:e.dateCreated,userType:e.getUserType(),userTypeDescription:e.getUserTypeDescription(),repositories:e.authorities.getRepositoriesPermissions(),customRoles:e.authorities.getCustomRoles()})),e.loader=!1}).catch(function(t){const s=getError(t);r.error(s,d.instant("common.error")),e.loader=!1}),e.getUsers(),e.$on("repositoryIsSet",function(){e.getUsers()}),e.toggleSecurity=function(){const e=l.isSecurityEnabled();i.toggleSecurity(!e).then(()=>{s.location.reload()})};const f=function(e,t){return h.setFreeAccess(e,t)};e.toggleFreeAccess=function(e){!p.hasFreeAccess()||p.hasFreeAccess()&&e?h.getFreeAccess().then(t=>{const r=(0,n.mapGrantedAuthoritiesResponseToModel)(t.authorities).getItems(),s=t.appSettings??{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};return m(s,r,e)}).then(t=>f(e||!i.isFreeAccessEnabled(),t)).then(()=>{const t=e?"jwt.auth.free.access.updated.msg":"jwt.auth.free.access.status";E.success(d.instant(t,{status:d.instant("enabled.status")}))}).catch(e=>{"cancel"!==e&&E.error(e.data??e,d.instant("common.error"))}):f(!p.hasFreeAccess()).then(()=>{E.success(d.instant("jwt.auth.free.access.status",{status:d.instant("disabled.status")}))}).catch(e=>{E.error(e.data,d.instant("common.error"))})};const m=(r,s,i)=>t.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const t={[o.aj]:{},[o.DX]:{},[o.w0]:{}},r=_.mapKeys(e.getRepositories(),function(e){return g.getLocationSpecificId(e)});return _.each(s,function(e){0===e.indexOf(o._5)?r.hasOwnProperty(e.substr(11))&&(t[o.DX][e.substr(11)]=!0):0===e.indexOf(o.xF)?r.hasOwnProperty(e.substr(10))&&(t[o.aj][e.substr(10)]=!0):0===e.indexOf(o.B1)&&r.hasOwnProperty(e.substr(8))&&(t[o.w0][e.substr(8)]=!0)}),t},appSettings:r}}}}).result.then(function(e){return s=e.authorities,r=e.appSettings,(0,n.mapAuthSettingsResponseToModel)({enabled:i||!p.hasFreeAccess(),appSettings:r,authorities:s})});e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(t){c.openSimpleModal({title:d.instant("common.confirm.delete"),message:d.instant("security.confirm.delete.user",{name:t}),warning:!0}).result.then(function(){e.loader=!0,A.deleteUser(t).then(()=>e.getUsers()).catch(t=>{const s=getError(t);r.error(s,d.instant("common.error")),e.loader=!1})})},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),i.controller("DefaultAuthoritiesCtrl",["$scope","$http","$uibModalInstance","data","$rootScope",function(e,t,r,s,i){const a=(0,n.service)(n.RepositoryService);e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(i.globalLocation)},e.getRepositories=function(){return i.globalRepositories},e.ok=function(){const t=[];e.repositoryCheckError=!0;for(const r in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[r]&&(t.push(o._5+r),t.push(o.xF+r),e.repositoryCheckError=!1);for(const r in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[r]&&-1===t.indexOf(o.xF+r)&&(t.push(o.xF+r),e.repositoryCheckError=!1);for(const r in e.grantedAuthorities.GRAPHQL)e.grantedAuthorities.GRAPHQL[r]&&-1===t.indexOf(o.B1+r)&&t.push(o.B1+r);e.repositoryCheckError||r.close({authorities:t,appSettings:e.appSettings})},e.cancel=function(){r.dismiss("cancel")},e.createUniqueKey=function(e){return a.getLocationSpecificId(e)}}]),i.controller("CommonUserCtrl",["$rootScope","$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$translate","passwordPlaceholder",function(e,t,r,i,a,c,u,d,p,l){const h=(0,n.service)(n.AuthorizationService),E=(0,n.service)(n.RepositoryService);e.$on("$translateChangeSuccess",function(){t.passwordPlaceholder=p.instant(l)}),t.isAdmin=function(){return h.hasRole(s.gG.ROLE_ADMIN)},t.hasExternalAuth=function(){return d.hasExternalAuth()},t.hasEditRestrictions=function(){return t.user&&t.user.username===s.ut.ADMIN},t.isOverrideAuth=function(){return d.isDefaultAuthEnabled()},t.setGrantedAuthorities=function(){function e(...e){for(let r=0;r<e.length;r++){const s=e[r];_.indexOf(t.user.grantedAuthorities,s)<0&&t.user.grantedAuthorities.push(s)}}if(t.user.grantedAuthorities=[],t.repositoryCheckError=!0,t.userType===s.ut.ADMIN)t.repositoryCheckError=!1,e(s.gG.ROLE_ADMIN);else if(t.userType===s.ut.REPO_MANAGER)t.repositoryCheckError=!1,e(s.gG.ROLE_REPO_MANAGER);else{e(s.gG.ROLE_USER);for(const r in t.grantedAuthorities.WRITE_REPO)t.grantedAuthorities.WRITE_REPO[r]&&(t.repositoryCheckError=!1,e(o._5+r,o.xF+r));for(const r in t.grantedAuthorities.READ_REPO)t.grantedAuthorities.READ_REPO[r]&&(t.repositoryCheckError=!1,e(o.xF+r));for(const r in t.grantedAuthorities.GRAPHQL)t.grantedAuthorities.GRAPHQL[r]&&e(o.B1+r)}t.customRoles&&t.customRoles.forEach(t=>e("CUSTOM_"+t))},t.$watch("userType",function(){t.isUser()||(t.customRoles="")}),t.isUser=function(){return t.userType===s.ut.USER},t.hasReadPermission=function(e){const r=E.getLocationSpecificId(e);return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&(t.grantedAuthorities.READ_REPO["*"]||t.grantedAuthorities.WRITE_REPO["*"])||t.grantedAuthorities.READ_REPO[r]||t.grantedAuthorities.WRITE_REPO[r]},t.hasWritePermission=function(e){const r=E.getLocationSpecificId(e);return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&t.grantedAuthorities.WRITE_REPO["*"]||t.grantedAuthorities.WRITE_REPO[r]},t.hasGraphqlPermission=function(e){const r=E.getLocationSpecificId(e);return e.id!==o.n5&&t.grantedAuthorities.GRAPHQL["*"]||t.grantedAuthorities.GRAPHQL[r]},t.readCheckDisabled=function(e){return t.hasWritePermission(e)||e.id!==o.n5&&"*"!==e&&t.grantedAuthorities.READ_REPO["*"]||t.hasEditRestrictions()},t.writeCheckDisabled=function(e){return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&"*"!==e&&t.grantedAuthorities.WRITE_REPO["*"]||t.hasEditRestrictions()},t.graphqlCheckDisabled=function(e){if(t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER)return!0;if(t.hasEditRestrictions())return!0;if("*"!==e&&t.grantedAuthorities.GRAPHQL["*"])return!0;if("*"===e&&t.grantedAuthorities.GRAPHQL["*"])return!1;let r;r=null!==e&&"object"==typeof e?E.getLocationSpecificId(e):e;const o=t.grantedAuthorities.READ_REPO["*"],n=t.grantedAuthorities.WRITE_REPO["*"],i=t.grantedAuthorities.READ_REPO[r],a=t.grantedAuthorities.WRITE_REPO[r];return!(o||n||i||a)},t.createUniqueKey=function(e){return E.getLocationSpecificId(e)},t.userType=s.ut.USER,t.grantedAuthorities={[o.aj]:{},[o.DX]:{},[o.w0]:{}},t.validatePassword=function(){return t.noPassword?(t.passwordError="",t.confirmPasswordError="",!0):t.user.password!==t.user.confirmpassword?(t.user.password?(t.passwordError="",t.confirmPasswordError=p.instant("security.confirm.password")):(t.passwordError=p.instant("security.enter.password"),t.confirmPasswordError=""),!1):(t.passwordError="",t.confirmPasswordError="",!0)},t.isLocalAuthentication=function(){return"Local"===d.getAuthImplementation()},t.updateUser=function(){if(!t.validateForm())return!1;t.isLocalAuthentication()&&t.setGrantedAuthorities(),t.repositoryCheckError||t.updateUserHttp()},t.setNoPassword=function(){t.noPassword&&(t.user.password="",t.user.confirmpassword="",t.passwordError="",t.confirmPasswordError="")},t.shouldDisableSameAs=function(){const e=$("#sameAsCheck");return t.user&&!t.user.appSettings.DEFAULT_INFERENCE&&e.prop("checked")&&(e.prop("checked",!1),t.user.appSettings.DEFAULT_SAMEAS=!1),t.user&&!t.user.appSettings.DEFAULT_INFERENCE},t.isRoleValid=!0,t.addCustomRole=function(e){return t.isRoleValid=!0,e.text=e.text.toUpperCase(),e},t.isCustomRoleValid=function(e){return t.isRoleValid=e.text.length>=2,t.isRoleValid},t.checkUserInput=function(e){8!==e.keyCode&&46!==e.keyCode||(t.isRoleValid=!0)},t.removeErrorOnCut=function(){t.isRoleValid=!0}}]),i.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityService","ModalService","$translate",function(e,t,r,o,i,a,c,u,d,p,l){angular.extend(this,u("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.password.placeholder"}));const h=(0,n.service)(n.UsersService);e.mode="add",e.saveButtonText=l.instant("common.create.btn"),e.goBack=function(){const t=i(function(){o.history.back()},100);e.$on("$destroy",function(){i.cancel(t)})},e.pageTitle=l.instant("view.create.user.title"),e.passwordPlaceholder=l.instant("security.password.placeholder"),e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.noPassword&&e.userType===s.ut.ADMIN?p.openSimpleModal({title:l.instant("security.create.admin"),message:l.instant("security.admin.login.warning"),warning:!0}).result.then(function(){e.createUser()}):e.createUser()},e.createUserHttp=function(){e.loader=!0;const t=new n.User({username:e.user.username,password:e.user.password,appSettings:new n.AppSettings(e.user.appSettings),authorities:new n.AuthorityList(e.user.grantedAuthorities)});h.createUser(t).then(()=>{r.success(l.instant("security.user.created",{name:e.user.username}));const t=i(function(){e.loader=!1,a.path("/users")},2e3);e.$on("$destroy",function(){i.cancel(t)})}).catch(async t=>{e.loader=!1,r.error(getError(t),l.instant("common.error"))})},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let t=!0;return e.user.username?e.usernameError="":(e.usernameError=l.instant("security.enter.username"),t=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError=l.instant("security.enter.password"),t=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError=l.instant("security.confirm.password"),t=!1)),t}}]),i.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityService","ModalService","$translate",function(e,t,r,o,i,a,c,u,d,p,l,h){angular.extend(this,d("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.new.password"}));const E=(0,n.service)(n.UsersService),A=(0,n.service)(n.AuthorizationService),g=(0,n.service)(n.SecurityContextService);e.mode="edit",e.saveButtonText=h.instant("common.save.btn"),e.goBack=function(){const t=a(function(){o.history.back()},100);e.$on("$destroy",function(){a.cancel(t)})},e.params=i,e.pageTitle=h.instant("view.edit.user.title",{userId:e.params.userId}),e.passwordPlaceholder=h.instant("security.new.password"),e.userType=s.ut.USER;const f={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};A.hasRole(s.gG.ROLE_ADMIN)||c.url("settings"),e.getUserData=function(){E.getUser(e.params.userId).then(function(t){e.user={username:t.username},e.user.password="",e.user.confirmpassword="",e.user.external=t.external,e.user.appSettings=t.appSettings||f,e.userType=t.getUserType(),e.grantedAuthorities=t.authorities.toUIModel(),e.customRoles=t.authorities.getCustomRoles()}).catch(function(e){const t=getError(e);r.error(t,h.instant("common.error"))})},e.getUserData(),e.submit=function(){e.noPassword&&e.userType===s.ut.ADMIN?l.openSimpleModal({title:h.instant("security.save.admin.settings"),message:h.instant("security.admin.pass.unset"),warning:!0}).result.then(function(){e.updateUser()}):e.updateUser()},e.updateUserHttp=function(){e.loader=!0;const t=new n.User({username:e.user.username,password:e.noPassword?"":e.user.password||void 0,appSettings:new n.AppSettings(e.user.appSettings),authorities:new n.AuthorityList(e.user.grantedAuthorities)});E.updateUser(t).then(()=>{r.success(h.instant("security.user.updated",{name:e.user.username}));const t=a(function(){e.loader=!1,o.history.back()},2e3);e.$on("$destroy",function(){a.cancel(t)});const s=g.getAuthenticatedUser();e.user.username===s.username&&s.setAppSettings(new n.AppSettings(e.user.appSettings))}).catch(t=>{const s=getError(t);e.loader=!1,r.error(s,h.instant("common.error"))})},e.validateForm=function(){return e.validatePassword()}}]),i.controller("RolesMappingController",["$scope","toastr","SecurityService","$translate",function(e,t,r,s){e.debugMapping=function(e,t){const s=t.split(":");r.getRolesMapping({role:e,method:s[1],mapping:s[0]})},e.$on("repositoryIsSet",function(){r.getRoles().success(function(t){e.roleMappings=t,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const r=_.map(e.roles,function(t){return[t,_.filter(e.roleMappings[t]).length]});e.roles=_.reverse(_.map(_.orderBy(r,function(e){return e[1]}),function(e){return e[0]}))}).error(function(r){const o=getError(r);e.loader=!1,t.error(o,s.instant("common.error"))})})}]),i.controller("DeleteUserCtrl",["$scope","$uibModalInstance","username",function(e,t,r){e.username=r,e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")}}])}};
2
- //# sourceMappingURL=94229.47dbdba202106c61dff1.bundle.js.map
1
+ export const __webpack_esm_id__=94229;export const __webpack_esm_ids__=[33760,48477,94229];export const __webpack_esm_modules__={33760(e,t,r){r.d(t,{B1:()=>c,DX:()=>i,_5:()=>u,aj:()=>o,n5:()=>s,w0:()=>a,xF:()=>n});const s="SYSTEM",o="READ_REPO",n="READ_REPO_",i="WRITE_REPO",a="GRAPHQL",u="WRITE_REPO_",c="GRAPHQL_"},48477(){angular.module("graphdb.framework.security.directives",[]).directive("customPrefixTagsInput",function(){return{restrict:"A",link:function(e,t,r){const s=[];function o(e){return e.startsWith("CUSTOM_")||e.startsWith("!CUSTOM_")}const n="tags-input"===t[0].nodeName.toLowerCase();if(n&&r.ngModel){const i=t.controller("ngModel");n&&(i.$parsers.push(function(e){return Array.isArray(e)&&(i.$warning=e.some(e=>o(e))),e}),s.push(e.$watch(r.ngModel,function(e){Array.isArray(e)&&(i.$warning=e.some(e=>o(e)))},!0)))}s.push(e.$on("$destroy",()=>{s.forEach(e=>e())}))}}})},94229(e,t,r){r(82493),r(98599),r(2243);var s=r(92900),o=(r(48477),r(33760)),n=r(57154);const i=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.security-service","toastr","ngTagsInput"]);i.controller("UsersCtrl",["$scope","$uibModal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityService","$translate",function(e,t,r,s,i,a,u,c,d){const p=(0,n.service)(n.AuthorizationService),l=(0,n.service)(n.AuthenticationService),h=(0,n.service)(n.SecurityService),E=(0,n.service)(n.OntoToastrService),A=(0,n.service)(n.UsersService),g=(0,n.service)(n.RepositoryService);e.usersData=[],e.loader=!0,e.securityEnabled=function(){return l.isSecurityEnabled()},e.hasExternalAuth=function(){return i.hasExternalAuth()},e.getAuthImplementation=function(){return i.getAuthImplementation()},e.freeAccessEnabled=function(){return p.hasFreeAccess()},e.getUsers=()=>A.getUsers().then(function(t){e.usersData=t.map(e=>({username:e.username,dateCreated:e.dateCreated,userType:e.getUserType(),userTypeDescription:e.getUserTypeDescription(),repositories:e.authorities.getRepositoriesPermissions(),customRoles:e.authorities.getCustomRoles()})),e.loader=!1}).catch(function(t){const s=getError(t);r.error(s,d.instant("common.error")),e.loader=!1}),e.getUsers(),e.$on("repositoryIsSet",function(){e.getUsers()}),e.toggleSecurity=function(){const e=l.isSecurityEnabled();i.toggleSecurity(!e).then(()=>{s.location.reload()})};const m=function(e,t){return h.setFreeAccess(e,t)};e.toggleFreeAccess=function(e){!p.hasFreeAccess()||p.hasFreeAccess()&&e?h.getFreeAccess().then(t=>{const r=(0,n.mapGrantedAuthoritiesResponseToModel)(t.authorities).getItems(),s=t.appSettings??{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};return f(s,r,e)}).then(t=>m(e||!i.isFreeAccessEnabled(),t)).then(()=>{const t=e?"jwt.auth.free.access.updated.msg":"jwt.auth.free.access.status";E.success(d.instant(t,{status:d.instant("enabled.status")}))}).catch(e=>{"cancel"!==e&&E.error(e.data??e,d.instant("common.error"))}):m(!p.hasFreeAccess()).then(()=>{E.success(d.instant("jwt.auth.free.access.status",{status:d.instant("disabled.status")}))}).catch(e=>{E.error(e.data,d.instant("common.error"))})};const f=(r,s,i)=>t.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const t={[o.aj]:{},[o.DX]:{},[o.w0]:{}},r=_.mapKeys(e.getRepositories(),function(e){return g.getLocationSpecificId(e)});return _.each(s,function(e){0===e.indexOf(o._5)?r.hasOwnProperty(e.substr(11))&&(t[o.DX][e.substr(11)]=!0):0===e.indexOf(o.xF)?r.hasOwnProperty(e.substr(10))&&(t[o.aj][e.substr(10)]=!0):0===e.indexOf(o.B1)&&r.hasOwnProperty(e.substr(8))&&(t[o.w0][e.substr(8)]=!0)}),t},appSettings:r}}}}).result.then(function(e){return s=e.authorities,r=e.appSettings,(0,n.mapAuthSettingsResponseToModel)({enabled:i||!p.hasFreeAccess(),appSettings:r,authorities:s})});e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(t){u.openSimpleModal({title:d.instant("common.confirm.delete"),message:d.instant("security.confirm.delete.user",{name:t}),warning:!0}).result.then(function(){e.loader=!0,A.deleteUser(t).then(()=>e.getUsers()).catch(t=>{const s=getError(t);r.error(s,d.instant("common.error")),e.loader=!1})})},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),i.controller("DefaultAuthoritiesCtrl",["$scope","$http","$uibModalInstance","data","$rootScope",function(e,t,r,s,i){const a=(0,n.service)(n.RepositoryService);e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(i.globalLocation)},e.getRepositories=function(){return i.globalRepositories},e.ok=function(){const t=[];e.repositoryCheckError=!0;for(const r in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[r]&&(t.push(o._5+r),t.push(o.xF+r),e.repositoryCheckError=!1);for(const r in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[r]&&-1===t.indexOf(o.xF+r)&&(t.push(o.xF+r),e.repositoryCheckError=!1);for(const r in e.grantedAuthorities.GRAPHQL)e.grantedAuthorities.GRAPHQL[r]&&-1===t.indexOf(o.B1+r)&&t.push(o.B1+r);e.repositoryCheckError||r.close({authorities:t,appSettings:e.appSettings})},e.cancel=function(){r.dismiss("cancel")},e.createUniqueKey=function(e){return a.getLocationSpecificId(e)}}]),i.controller("CommonUserCtrl",["$rootScope","$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$translate","passwordPlaceholder",function(e,t,r,i,a,u,c,d,p,l){const h=(0,n.service)(n.AuthorizationService),E=(0,n.service)(n.RepositoryService);e.$on("$translateChangeSuccess",function(){t.passwordPlaceholder=p.instant(l)}),t.isAdmin=function(){return h.hasRole(s.gG.ROLE_ADMIN)},t.hasExternalAuth=function(){return d.hasExternalAuth()},t.hasEditRestrictions=function(){return t.user&&t.user.username===s.ut.ADMIN},t.isOverrideAuth=function(){return d.isDefaultAuthEnabled()},t.setGrantedAuthorities=function(){function e(...e){for(let r=0;r<e.length;r++){const s=e[r];_.indexOf(t.user.grantedAuthorities,s)<0&&t.user.grantedAuthorities.push(s)}}if(t.user.grantedAuthorities=[],t.repositoryCheckError=!0,t.userType===s.ut.ADMIN)t.repositoryCheckError=!1,e(s.gG.ROLE_ADMIN);else if(t.userType===s.ut.REPO_MANAGER)t.repositoryCheckError=!1,e(s.gG.ROLE_REPO_MANAGER);else{e(s.gG.ROLE_USER);for(const r in t.grantedAuthorities.WRITE_REPO)t.grantedAuthorities.WRITE_REPO[r]&&(t.repositoryCheckError=!1,e(o._5+r,o.xF+r));for(const r in t.grantedAuthorities.READ_REPO)t.grantedAuthorities.READ_REPO[r]&&(t.repositoryCheckError=!1,e(o.xF+r));for(const r in t.grantedAuthorities.GRAPHQL)t.grantedAuthorities.GRAPHQL[r]&&e(o.B1+r)}t.customRoles&&t.customRoles.forEach(t=>e("CUSTOM_"+t))},t.$watch("userType",function(){t.isUser()||(t.customRoles="")}),t.isUser=function(){return t.userType===s.ut.USER},t.hasReadPermission=function(e){const r=E.getLocationSpecificId(e);return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&(t.grantedAuthorities.READ_REPO["*"]||t.grantedAuthorities.WRITE_REPO["*"])||t.grantedAuthorities.READ_REPO[r]||t.grantedAuthorities.WRITE_REPO[r]},t.hasWritePermission=function(e){const r=E.getLocationSpecificId(e);return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&t.grantedAuthorities.WRITE_REPO["*"]||t.grantedAuthorities.WRITE_REPO[r]},t.hasGraphqlPermission=function(e){const r=E.getLocationSpecificId(e);return e.id!==o.n5&&t.grantedAuthorities.GRAPHQL["*"]||t.grantedAuthorities.GRAPHQL[r]},t.readCheckDisabled=function(e){return t.hasWritePermission(e)||e.id!==o.n5&&"*"!==e&&t.grantedAuthorities.READ_REPO["*"]||t.hasEditRestrictions()},t.writeCheckDisabled=function(e){return t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER||e.id!==o.n5&&"*"!==e&&t.grantedAuthorities.WRITE_REPO["*"]||t.hasEditRestrictions()},t.graphqlCheckDisabled=function(e){if(t.userType===s.ut.ADMIN||t.userType===s.ut.REPO_MANAGER)return!0;if(t.hasEditRestrictions())return!0;if("*"!==e&&t.grantedAuthorities.GRAPHQL["*"])return!0;if("*"===e&&t.grantedAuthorities.GRAPHQL["*"])return!1;let r;r=null!==e&&"object"==typeof e?E.getLocationSpecificId(e):e;const o=t.grantedAuthorities.READ_REPO["*"],n=t.grantedAuthorities.WRITE_REPO["*"],i=t.grantedAuthorities.READ_REPO[r],a=t.grantedAuthorities.WRITE_REPO[r];return!(o||n||i||a)},t.createUniqueKey=function(e){return E.getLocationSpecificId(e)},t.userType=s.ut.USER,t.grantedAuthorities={[o.aj]:{},[o.DX]:{},[o.w0]:{}},t.validatePassword=function(){return t.noPassword?(t.passwordError="",t.confirmPasswordError="",!0):t.user.password!==t.user.confirmpassword?(t.user.password?(t.passwordError="",t.confirmPasswordError=p.instant("security.confirm.password")):(t.passwordError=p.instant("security.enter.password"),t.confirmPasswordError=""),!1):(t.passwordError="",t.confirmPasswordError="",!0)},t.isLocalAuthentication=function(){return"Local"===d.getAuthImplementation()},t.updateUser=function(){if(!t.validateForm())return!1;t.isLocalAuthentication()&&t.setGrantedAuthorities(),t.repositoryCheckError||t.updateUserHttp()},t.setNoPassword=function(){t.noPassword&&(t.user.password="",t.user.confirmpassword="",t.passwordError="",t.confirmPasswordError="")},t.shouldDisableSameAs=function(){const e=$("#sameAsCheck");return t.user&&!t.user.appSettings.DEFAULT_INFERENCE&&e.prop("checked")&&(e.prop("checked",!1),t.user.appSettings.DEFAULT_SAMEAS=!1),t.user&&!t.user.appSettings.DEFAULT_INFERENCE},t.isRoleValid=!0,t.addCustomRole=function(e){return t.isRoleValid=!0,e.text=e.text.toUpperCase(),e},t.isCustomRoleValid=function(e){return t.isRoleValid=e.text.length>=2,t.isRoleValid},t.checkUserInput=function(e){8!==e.keyCode&&46!==e.keyCode||(t.isRoleValid=!0)},t.removeErrorOnCut=function(){t.isRoleValid=!0}}]),i.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityService","ModalService","$translate",function(e,t,r,o,i,a,u,c,d,p,l){angular.extend(this,c("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.password.placeholder"}));const h=(0,n.service)(n.UsersService);e.mode="add",e.saveButtonText=l.instant("common.create.btn"),e.goBack=function(){a.url("users")},e.pageTitle=l.instant("view.create.user.title"),e.passwordPlaceholder=l.instant("security.password.placeholder"),e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.noPassword&&e.userType===s.ut.ADMIN?p.openSimpleModal({title:l.instant("security.create.admin"),message:l.instant("security.admin.login.warning"),warning:!0}).result.then(function(){e.createUser()}):e.createUser()},e.createUserHttp=function(){e.loader=!0;const t=new n.User({username:e.user.username,password:e.user.password,appSettings:new n.AppSettings(e.user.appSettings),authorities:new n.AuthorityList(e.user.grantedAuthorities)});h.createUser(t).then(()=>{r.success(l.instant("security.user.created",{name:e.user.username}));const t=i(function(){e.loader=!1,a.path("/users")},2e3);e.$on("$destroy",function(){i.cancel(t)})}).catch(async t=>{e.loader=!1,r.error(getError(t),l.instant("common.error"))})},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let t=!0;return e.user.username?e.usernameError="":(e.usernameError=l.instant("security.enter.username"),t=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError=l.instant("security.enter.password"),t=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError=l.instant("security.confirm.password"),t=!1)),t}}]),i.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityService","ModalService","$translate",function(e,t,r,o,i,a,u,c,d,p,l,h){angular.extend(this,d("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.new.password"}));const E=(0,n.service)(n.UsersService),A=(0,n.service)(n.AuthorizationService),g=(0,n.service)(n.SecurityContextService);e.mode="edit",e.saveButtonText=h.instant("common.save.btn"),e.goBack=function(){u.url("users")},e.params=i,e.pageTitle=h.instant("view.edit.user.title",{userId:e.params.userId}),e.passwordPlaceholder=h.instant("security.new.password"),e.userType=s.ut.USER;const m={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};A.hasRole(s.gG.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){E.getUser(e.params.userId).then(function(t){e.user={username:t.username},e.user.password="",e.user.confirmpassword="",e.user.external=t.external,e.user.appSettings=t.appSettings||m,e.userType=t.getUserType(),e.grantedAuthorities=t.authorities.toUIModel(),e.customRoles=t.authorities.getCustomRoles()}).catch(function(e){const t=getError(e);r.error(t,h.instant("common.error"))})},e.getUserData(),e.submit=function(){e.noPassword&&e.userType===s.ut.ADMIN?l.openSimpleModal({title:h.instant("security.save.admin.settings"),message:h.instant("security.admin.pass.unset"),warning:!0}).result.then(function(){e.updateUser()}):e.updateUser()},e.updateUserHttp=function(){e.loader=!0;const t=new n.User({username:e.user.username,password:e.noPassword?"":e.user.password||void 0,appSettings:new n.AppSettings(e.user.appSettings),authorities:new n.AuthorityList(e.user.grantedAuthorities)});E.updateUser(t).then(()=>{r.success(h.instant("security.user.updated",{name:e.user.username}));const t=a(function(){e.loader=!1,o.history.back()},2e3);e.$on("$destroy",function(){a.cancel(t)});const s=g.getAuthenticatedUser();e.user.username===s.username&&s.setAppSettings(new n.AppSettings(e.user.appSettings))}).catch(t=>{const s=getError(t);e.loader=!1,r.error(s,h.instant("common.error"))})},e.validateForm=function(){return e.validatePassword()}}]),i.controller("RolesMappingController",["$scope","toastr","SecurityService","$translate",function(e,t,r,s){e.debugMapping=function(e,t){const s=t.split(":");r.getRolesMapping({role:e,method:s[1],mapping:s[0]})},e.$on("repositoryIsSet",function(){r.getRoles().success(function(t){e.roleMappings=t,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const r=_.map(e.roles,function(t){return[t,_.filter(e.roleMappings[t]).length]});e.roles=_.reverse(_.map(_.orderBy(r,function(e){return e[1]}),function(e){return e[0]}))}).error(function(r){const o=getError(r);e.loader=!1,t.error(o,s.instant("common.error"))})})}]),i.controller("DeleteUserCtrl",["$scope","$uibModalInstance","username",function(e,t,r){e.username=r,e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")}}])}};
2
+ //# sourceMappingURL=94229.5a853fae006f6ef633af.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"94229.5a853fae006f6ef633af.bundle.js","mappings":"sNAAO,MAAMA,EAAc,SACdC,EAAY,YACZC,EAAmB,aACnBC,EAAa,aACbC,EAAU,UACVC,EAAoB,cACpBC,EAAiB,U,UCN9BC,QACKC,OAAO,wCAAyC,IAChDC,UAAU,wBAiBf,WACI,MAAO,CACHC,SAAU,IACVC,KAAM,SAASC,EAAOC,EAASC,GAC3B,MAEMC,EAAgB,GAEtB,SAASC,EAAyBC,GAC9B,OAAOA,EAAIC,WALM,YAKsBD,EAAIC,WAJnB,WAK5B,CAGA,MAAMC,EAAsD,eAAtCN,EAAQ,GAAGO,SAASC,cAE1C,GAAIF,GAAiBL,EAAMQ,QAAS,CAChC,MAAMC,EAAcV,EAAQW,WAAW,WAEnCL,IACAI,EAAYE,SAASC,KAAK,SAAUC,GAIhC,OAHIC,MAAMC,QAAQF,KACdJ,EAAYO,SAAWH,EAAUI,KAAMd,GAAQD,EAAyBC,KAErEU,CACX,GAEAZ,EAAcW,KAAKd,EAAMoB,OAAOlB,EAAMQ,QAAS,SAAUW,GACjDL,MAAMC,QAAQI,KACdV,EAAYO,SAAWG,EAAOF,KAAMd,GAAQD,EAAyBC,IAE7E,GAAG,IAEX,CAMAF,EAAcW,KAAKd,EAAMsB,IAAI,WAJAC,KACzBpB,EAAcqB,QAASC,GAAiBA,OAIhD,EAER,E,yFCtCA,MASMC,EAAiB/B,QAAQC,OAAO,yCATtB,CACZ,YACA,eACA,0CACA,mDACA,SACA,gBAKJ8B,EAAed,WAAW,YAAa,CAAC,SAAU,YAAa,SAAU,UAAW,WAAY,WAAY,eAAgB,kBAAmB,aAC3I,SAASe,EAAQC,EAAWC,EAAQC,EAASC,EAAUC,EAAUC,EAAcC,EAAiBC,GAC5F,MAAMC,GAAuBC,EAAAA,EAAAA,SAAQC,EAAAA,sBAC/BC,GAAwBF,EAAAA,EAAAA,SAAQG,EAAAA,uBAChCC,GAAqBJ,EAAAA,EAAAA,SAAQK,EAAAA,iBAC7BC,GAAgBN,EAAAA,EAAAA,SAAQO,EAAAA,mBACxBC,GAAeR,EAAAA,EAAAA,SAAQS,EAAAA,cACvBC,GAAoBV,EAAAA,EAAAA,SAAQW,EAAAA,mBAGlCrB,EAAOsB,UAAY,GAEnBtB,EAAOuB,QAAS,EAChBvB,EAAOwB,gBAAkB,WACrB,OAAOZ,EAAsBa,mBACjC,EACAzB,EAAO0B,gBAAkB,WACrB,OAAOtB,EAASsB,iBACpB,EACA1B,EAAO2B,sBAAwB,WAC3B,OAAOvB,EAASuB,uBACpB,EACA3B,EAAO4B,kBAAoB,WACvB,OAAOnB,EAAqBoB,eAChC,EACA7B,EAAO8B,SAAW,IACPZ,EAAaY,WACfC,KAAK,SAASC,GACXhC,EAAOsB,UAAYU,EAAKC,IAAKC,IAAI,CAC7BC,SAAUD,EAAKC,SACfC,YAAaF,EAAKE,YAClBC,SAAUH,EAAKI,cACfC,oBAAqBL,EAAKM,yBAC1BC,aAAcP,EAAKQ,YAAYC,6BAC/BC,YAAaV,EAAKQ,YAAYG,oBAElC7C,EAAOuB,QAAS,CACpB,GAAGuB,MAAM,SAASd,GACd,MAAMe,EAAMC,SAAShB,GACrB9B,EAAO+C,MAAMF,EAAKvC,EAAW0C,QAAQ,iBACrClD,EAAOuB,QAAS,CACpB,GAERvB,EAAO8B,WAEP9B,EAAOL,IAAI,kBAAmB,WAC1BK,EAAO8B,UACX,GAEA9B,EAAOmD,eAAiB,WACpB,MAAM1B,EAAoBb,EAAsBa,oBAChDrB,EAAS+C,gBAAgB1B,GACpBM,KAAK,KAIF5B,EAAQiD,SAASC,UAE7B,EAEA,MAAMC,EAAgB,SAASC,EAASC,GAEpC,OAAO1C,EAAmBwC,cAAcC,EAASC,EACrD,EAMAxD,EAAOyD,iBAAmB,SAASC,IAC1BjD,EAAqBoB,iBAAoBpB,EAAqBoB,iBAAmB6B,EAElF5C,EAAmB6C,gBACd5B,KAAM6B,IACH,MAAMlB,GAAcmB,EAAAA,EAAAA,sCAAqCD,EAAuBlB,aAAaoB,WACvFC,EAAcH,EAAuBG,aAAe,CACtD,gBAAkB,EAClB,mBAAqB,EACrB,eAAiB,EACjB,uBAAyB,EACzB,0BAA4B,GAEhC,OAAOC,EAAoBD,EAAarB,EAAagB,KAExD3B,KAAMkC,GAAkCX,EAAcI,IAAqBtD,EAAS8D,sBAAuBD,IAC3GlC,KAAK,KACF,MAAMoC,EAAeT,EAAmB,mCAAqC,8BAC7E1C,EAAcoD,QAAQ5D,EAAW0C,QAAQiB,EAAc,CAACE,OAAQ7D,EAAW0C,QAAQ,uBAEtFJ,MAAOwB,IACQ,WAARA,GAIJtD,EAAciC,MAAMqB,EAAItC,MAAQsC,EAAK9D,EAAW0C,QAAQ,mBAIhEI,GAAe7C,EAAqBoB,iBAC/BE,KAAK,KACFf,EAAcoD,QAAQ5D,EAAW0C,QAAQ,8BAA+B,CAACmB,OAAS7D,EAAW0C,QAAQ,wBAExGJ,MAAOwB,IACJtD,EAAciC,MAAMqB,EAAItC,KAAMxB,EAAW0C,QAAQ,kBAGjE,EAEA,MAAMc,EAAsBA,CAACD,EAAarB,EAAagB,IAC7BzD,EAAUsE,KAAK,CACjCC,YAAa,+DACbvF,WAAY,yBACZwF,QAAS,CACLzC,KAAM,WACF,MAAO,CAEH0C,mBAAoB,WAChB,MAAMA,EAAqB,CACvB,CAAChH,EAAAA,IAAY,CAAC,EACd,CAACE,EAAAA,IAAa,CAAC,EACf,CAACC,EAAAA,IAAU,CAAC,GAGV8G,EAAUC,EAAEC,QAAQ7E,EAAO8E,kBAAmB,SAASC,GACzD,OAAO3D,EAAkB4D,sBAAsBD,EACnD,GAiBA,OAhBAH,EAAEK,KAAKvC,EAAa,SAASwC,GAEY,IAAjCA,EAAEC,QAAQrH,EAAAA,IACN6G,EAAQS,eAAeF,EAAEG,OAAO,OAChCX,EAAmB9G,EAAAA,IAAYsH,EAAEG,OAAO,MAAO,GAEZ,IAAhCH,EAAEC,QAAQxH,EAAAA,IACbgH,EAAQS,eAAeF,EAAEG,OAAO,OAChCX,EAAmBhH,EAAAA,IAAWwH,EAAEG,OAAO,MAAO,GAEb,IAA9BH,EAAEC,QAAQpH,EAAAA,KACb4G,EAAQS,eAAeF,EAAEG,OAAO,MAChCX,EAAmB7G,EAAAA,IAASqH,EAAEG,OAAO,KAAM,EAGvD,GACOX,CACX,EACAX,YAAaA,EAErB,KAGauB,OAAOvD,KAAK,SAASC,GAGtC,OAFAU,EAAcV,EAAKU,YACnBqB,EAAc/B,EAAK+B,aACZwB,EAAAA,EAAAA,gCAA+B,CAClChC,QAASG,IAAqBjD,EAAqBoB,gBACnDkC,cACArB,eAER,GAGJ1C,EAAOwF,eAAiB,WACpBxF,EAAOyD,kBAAiB,EAC5B,EAEAzD,EAAOyF,WAAa,SAAStD,GACzB7B,EAAaoF,gBAAgB,CACzBC,MAAOnF,EAAW0C,QAAQ,yBAC1B0C,QAASpF,EAAW0C,QAAQ,+BAAgC,CAAC2C,KAAM1D,IACnE2D,SAAS,IACVR,OAAOvD,KAAK,WACX/B,EAAOuB,QAAS,EAChBL,EAAa6E,WAAW5D,GACnBJ,KAAK,IAAM/B,EAAO8B,YAClBgB,MAAOd,IACJ,MAAMe,EAAMC,SAAShB,GACrB9B,EAAO+C,MAAMF,EAAKvC,EAAW0C,QAAQ,iBACrClD,EAAOuB,QAAS,GAE5B,EACJ,EAGAvB,EAAOgG,mBAAqB,SAASH,GACjC,OAAOG,mBAAmBH,EAC9B,CACJ,IAEJ9F,EAAed,WAAW,yBAA0B,CAAC,SAAU,QAAS,oBAAqB,OAAQ,aACjG,SAASe,EAAQiG,EAAOC,EAAmBlE,EAAMmE,GAC7C,MAAM/E,GAAoBV,EAAAA,EAAAA,SAAQW,EAAAA,mBAElCrB,EAAOoG,mBAAqBpE,EAAK0C,qBACjC1E,EAAO+D,YAAc/B,EAAK+B,YAE1B/D,EAAOqG,kBAAoB,WAEvB,OAAQzB,EAAE0B,QAAQH,EAAWI,eACjC,EAEAvG,EAAO8E,gBAAkB,WAErB,OAAOqB,EAAWK,kBACtB,EAEAxG,EAAOyG,GAAK,WACR,MAAMC,EAAO,GACb1G,EAAO2G,sBAAuB,EAC9B,IAAK,MAAMC,KAAS5G,EAAOoG,mBAAmBxI,WACtCoC,EAAOoG,mBAAmBxI,WAAWgJ,KACrCF,EAAKvH,KAAKrB,EAAAA,GAAoB8I,GAC9BF,EAAKvH,KAAKxB,EAAAA,GAAmBiJ,GAC7B5G,EAAO2G,sBAAuB,GAGtC,IAAK,MAAMC,KAAS5G,EAAOoG,mBAAmB1I,UACtCsC,EAAOoG,mBAAmB1I,UAAUkJ,KAAsD,IAA5CF,EAAKvB,QAAQxH,EAAAA,GAAmBiJ,KAC9EF,EAAKvH,KAAKxB,EAAAA,GAAmBiJ,GAC7B5G,EAAO2G,sBAAuB,GAGtC,IAAK,MAAMC,KAAS5G,EAAOoG,mBAAmBvI,QACtCmC,EAAOoG,mBAAmBvI,QAAQ+I,KAAoD,IAA1CF,EAAKvB,QAAQpH,EAAAA,GAAiB6I,IAC1EF,EAAKvH,KAAKpB,EAAAA,GAAiB6I,GAG9B5G,EAAO2G,sBACRT,EAAkBW,MAAM,CAACnE,YAAagE,EAAM3C,YAAa/D,EAAO+D,aAExE,EAEA/D,EAAO8G,OAAS,WACZZ,EAAkBa,QAAQ,SAC9B,EAEA/G,EAAOgH,gBAAkB,SAASC,GAC9B,OAAO7F,EAAkB4D,sBAAsBiC,EACnD,CACJ,IAEJlH,EAAed,WAAW,iBAAkB,CAAC,aAAc,SAAU,QAAS,SAAU,UAAW,WAAY,YAAa,WAAY,aAAc,sBAClJ,SAASkH,EAAYnG,EAAQiG,EAAO/F,EAAQC,EAASE,EAAU6G,EAAW9G,EAAUI,EAAY2G,GAC5F,MAAM1G,GAAuBC,EAAAA,EAAAA,SAAQC,EAAAA,sBAC/BS,GAAoBV,EAAAA,EAAAA,SAAQW,EAAAA,mBAElC8E,EAAWxG,IAAI,0BAA2B,WACtCK,EAAOmH,oBAAsB3G,EAAW0C,QAAQiE,EACpD,GACAnH,EAAOoH,QAAU,WACb,OAAO3G,EAAqB4G,QAAQC,EAAAA,GAASC,WACjD,EACAvH,EAAO0B,gBAAkB,WACrB,OAAOtB,EAASsB,iBACpB,EAEA1B,EAAOwH,oBAAsB,WACzB,OAAOxH,EAAOkC,MAAQlC,EAAOkC,KAAKC,WAAasF,EAAAA,GAASC,KAC5D,EAEA1H,EAAO2H,eAAiB,WACpB,OAAOvH,EAASwH,sBACpB,EAEA5H,EAAO6H,sBAAwB,WAC3B,SAASC,KAAiBpF,GACtB,IAAK,IAAIqF,EAAI,EAAGA,EAAIrF,EAAYsF,OAAQD,IAAK,CACzC,MAAME,EAAYvF,EAAYqF,GAC1BnD,EAAEO,QAAQnF,EAAOkC,KAAKkE,mBAAoB6B,GAAa,GACvDjI,EAAOkC,KAAKkE,mBAAmBjH,KAAK8I,EAE5C,CACJ,CAKA,GAHAjI,EAAOkC,KAAKkE,mBAAqB,GAEjCpG,EAAO2G,sBAAuB,EAC1B3G,EAAOqC,WAAaoF,EAAAA,GAASC,MAC7B1H,EAAO2G,sBAAuB,EAC9BmB,EAAcR,EAAAA,GAASC,iBACpB,GAAIvH,EAAOqC,WAAaoF,EAAAA,GAASS,aACpClI,EAAO2G,sBAAuB,EAC9BmB,EAAcR,EAAAA,GAASa,uBACpB,CACHL,EAAcR,EAAAA,GAASc,WACvB,IAAK,MAAMxB,KAAS5G,EAAOoG,mBAAmBxI,WACtCoC,EAAOoG,mBAAmBxI,WAAWgJ,KACrC5G,EAAO2G,sBAAuB,EAC9BmB,EAAchK,EAAAA,GAAoB8I,EAAOjJ,EAAAA,GAAmBiJ,IAGpE,IAAK,MAAMA,KAAS5G,EAAOoG,mBAAmB1I,UACtCsC,EAAOoG,mBAAmB1I,UAAUkJ,KACpC5G,EAAO2G,sBAAuB,EAC9BmB,EAAcnK,EAAAA,GAAmBiJ,IAGzC,IAAK,MAAMA,KAAS5G,EAAOoG,mBAAmBvI,QACtCmC,EAAOoG,mBAAmBvI,QAAQ+I,IAClCkB,EAAc/J,EAAAA,GAAiB6I,EAG3C,CACI5G,EAAO4C,aACP5C,EAAO4C,YAAY/C,QAASwI,GAASP,EAAc,UAAYO,GAEvE,EAEArI,EAAOP,OAAO,WAAY,WACjBO,EAAOsI,WACRtI,EAAO4C,YAAc,GAE7B,GAEA5C,EAAOsI,OAAS,WACZ,OAAOtI,EAAOqC,WAAaoF,EAAAA,GAASc,IACxC,EAEAvI,EAAOwI,kBAAoB,SAASvB,GAChC,MAAMwB,EAAYrH,EAAkB4D,sBAAsBiC,GAC1D,OAAOjH,EAAOqC,WAAaoF,EAAAA,GAASC,OAC7B1H,EAAOqC,WAAaoF,EAAAA,GAASS,cAC7BjB,EAAWyB,KAAOjL,EAAAA,KAAgBuC,EAAOoG,mBAAmB1I,UAAU,MAClEsC,EAAOoG,mBAAmBxI,WAAW,OACzCoC,EAAOoG,mBAAmB1I,UAAU+K,IACpCzI,EAAOoG,mBAAmBxI,WAAW6K,EAChD,EAEAzI,EAAO2I,mBAAqB,SAASC,GACjC,MAAMH,EAAYrH,EAAkB4D,sBAAsB4D,GAC1D,OAAO5I,EAAOqC,WAAaoF,EAAAA,GAASC,OAC7B1H,EAAOqC,WAAaoF,EAAAA,GAASS,cAC7BU,EAAeF,KAAOjL,EAAAA,IAAeuC,EAAOoG,mBAAmBxI,WAAW,MAC1EoC,EAAOoG,mBAAmBxI,WAAW6K,EAChD,EAEAzI,EAAO6I,qBAAuB,SAAS5B,GACnC,MAAMwB,EAAYrH,EAAkB4D,sBAAsBiC,GAC1D,OAAOA,EAAWyB,KAAOjL,EAAAA,IAAeuC,EAAOoG,mBAAmBvI,QAAQ,MACnEmC,EAAOoG,mBAAmBvI,QAAQ4K,EAC7C,EAEAzI,EAAO8I,kBAAoB,SAASF,GAChC,OAAO5I,EAAO2I,mBAAmBC,IAC1BA,EAAeF,KAAOjL,EAAAA,IAAkC,MAAnBmL,GAA0B5I,EAAOoG,mBAAmB1I,UAAU,MACnGsC,EAAOwH,qBAClB,EAEAxH,EAAO+I,mBAAqB,SAASH,GACjC,OAAO5I,EAAOqC,WAAaoF,EAAAA,GAASC,OAC7B1H,EAAOqC,WAAaoF,EAAAA,GAASS,cAC7BU,EAAeF,KAAOjL,EAAAA,IAAkC,MAAnBmL,GAA0B5I,EAAOoG,mBAAmBxI,WAAW,MACpGoC,EAAOwH,qBAClB,EASAxH,EAAOgJ,qBAAuB,SAASJ,GACnC,GAAI5I,EAAOqC,WAAaoF,EAAAA,GAASC,OAAS1H,EAAOqC,WAAaoF,EAAAA,GAASS,aACnE,OAAO,EAGX,GAAIlI,EAAOwH,sBACP,OAAO,EAGX,GAAuB,MAAnBoB,GAA0B5I,EAAOoG,mBAAmBvI,QAAQ,KAC5D,OAAO,EAGX,GAAuB,MAAnB+K,GAA0B5I,EAAOoG,mBAAmBvI,QAAQ,KAC5D,OAAO,EAGX,IAAI4K,EAEAA,EADmB,OAAnBG,GAAqD,iBAAnBA,EACtBxH,EAAkB4D,sBAAsB4D,GAExCA,EAGhB,MAAMK,EAAkBjJ,EAAOoG,mBAAmB1I,UAAU,KACtDwL,EAAmBlJ,EAAOoG,mBAAmBxI,WAAW,KACxDuL,EAAiBnJ,EAAOoG,mBAAmB1I,UAAU+K,GACrDW,EAAkBpJ,EAAOoG,mBAAmBxI,WAAW6K,GAE7D,QAASQ,GAAmBC,GAAoBC,GAAkBC,EACtE,EAEApJ,EAAOgH,gBAAkB,SAASC,GAC9B,OAAO7F,EAAkB4D,sBAAsBiC,EACnD,EAEAjH,EAAOqC,SAAWoF,EAAAA,GAASc,KAC3BvI,EAAOoG,mBAAqB,CACxB,CAAC1I,EAAAA,IAAY,CAAC,EACd,CAACE,EAAAA,IAAa,CAAC,EACf,CAACC,EAAAA,IAAU,CAAC,GAGhBmC,EAAOqJ,iBAAmB,WACtB,OAAIrJ,EAAOsJ,YACPtJ,EAAOuJ,cAAgB,GACvBvJ,EAAOwJ,qBAAuB,IACvB,GAEPxJ,EAAOkC,KAAKuH,WAAazJ,EAAOkC,KAAKwH,iBAChC1J,EAAOkC,KAAKuH,UAIbzJ,EAAOuJ,cAAgB,GACvBvJ,EAAOwJ,qBAAuBhJ,EAAW0C,QAAQ,+BAJjDlD,EAAOuJ,cAAgB/I,EAAW0C,QAAQ,2BAC1ClD,EAAOwJ,qBAAuB,KAK3B,IAEPxJ,EAAOuJ,cAAgB,GACvBvJ,EAAOwJ,qBAAuB,IAE3B,EACX,EAEAxJ,EAAO2J,sBAAwB,WAC3B,MAA4C,UAArCvJ,EAASuB,uBACpB,EAEA3B,EAAO4J,WAAa,WAChB,IAAK5J,EAAO6J,eACR,OAAO,EAGP7J,EAAO2J,yBACP3J,EAAO6H,wBAGN7H,EAAO2G,sBACR3G,EAAO8J,gBAEf,EAEA9J,EAAO+J,cAAgB,WACf/J,EAAOsJ,aACPtJ,EAAOkC,KAAKuH,SAAW,GACvBzJ,EAAOkC,KAAKwH,gBAAkB,GAC9B1J,EAAOuJ,cAAgB,GACvBvJ,EAAOwJ,qBAAuB,GAEtC,EAEAxJ,EAAOgK,oBAAsB,WACzB,MAAMC,EAAiBC,EAAE,gBAMzB,OALIlK,EAAOkC,OAASlC,EAAOkC,KAAK6B,YAAYoG,mBAAqBF,EAAeG,KAAK,aACjFH,EAAeG,KAAK,WAAW,GAC/BpK,EAAOkC,KAAK6B,YAAYsG,gBAAiB,GAGtCrK,EAAOkC,OAASlC,EAAOkC,KAAK6B,YAAYoG,iBACnD,EAMAnK,EAAOsK,aAAc,EASrBtK,EAAOuK,cAAgB,SAASlC,GAG5B,OAFArI,EAAOsK,aAAc,EACrBjC,EAAKmC,KAAOnC,EAAKmC,KAAKC,cACfpC,CACX,EAQArI,EAAO0K,kBAAoB,SAASC,GAEhC,OADA3K,EAAOsK,YAAcK,EAAWH,KAAKxC,QArBpB,EAsBVhI,EAAOsK,WAClB,EAOAtK,EAAO4K,eAAiB,SAASC,GAEP,IAAlBA,EAAMC,SAAmC,KAAlBD,EAAMC,UAC7B9K,EAAOsK,aAAc,EAE7B,EAKAtK,EAAO+K,iBAAmB,WAEtB/K,EAAOsK,aAAc,CACzB,CACJ,IAEJvK,EAAed,WAAW,cAAe,CAAC,SAAU,QAAS,SAAU,UAAW,WAAY,YAAa,WAAY,cAAe,kBAAmB,eAAgB,aACrK,SAASe,EAAQiG,EAAO/F,EAAQC,EAASE,EAAU6G,EAAW9G,EAAU4K,EAAazK,EAAiBD,EAAcE,GAEhHxC,QAAQiN,OAAOC,KAAMF,EAAY,iBAAkB,CAAChL,OAAQA,EAAQmH,oBAAqB,mCACzF,MAAMjG,GAAeR,EAAAA,EAAAA,SAAQS,EAAAA,cAE7BnB,EAAOmL,KAAO,MACdnL,EAAOoL,eAAiB5K,EAAW0C,QAAQ,qBAC3ClD,EAAOqL,OAAS,WACZnE,EAAUoE,IAAI,QAClB,EACAtL,EAAOuL,UAAY/K,EAAW0C,QAAQ,0BACtClD,EAAOmH,oBAAsB3G,EAAW0C,QAAQ,iCAEhDlD,EAAOkC,KAAO,CACV,SAAY,GACZ,SAAY,GACZ,gBAAmB,GACnB,mBAAsB,GACtB,YAAe,CACX,gBAAkB,EAClB,mBAAqB,EACrB,eAAiB,EACjB,uBAAyB,EACzB,0BAA4B,IAIpClC,EAAOwL,OAAS,WACRxL,EAAOsJ,YAActJ,EAAOqC,WAAaoF,EAAAA,GAASC,MAClDpH,EAAaoF,gBAAgB,CACzBC,MAAOnF,EAAW0C,QAAQ,yBAC1B0C,QAASpF,EAAW0C,QAAQ,gCAC5B4C,SAAS,IACVR,OAAOvD,KAAK,WACX/B,EAAOyL,YACX,GAEAzL,EAAOyL,YAEf,EAEAzL,EAAO0L,eAAiB,WACpB1L,EAAOuB,QAAS,EAChB,MAAMW,EAAO,IAAIyJ,EAAAA,KAAK,CAClBxJ,SAAUnC,EAAOkC,KAAKC,SACtBsH,SAAUzJ,EAAOkC,KAAKuH,SACtB1F,YAAa,IAAI6H,EAAAA,YAAY5L,EAAOkC,KAAK6B,aACzCrB,YAAa,IAAImJ,EAAAA,cAAc7L,EAAOkC,KAAKkE,sBAE/ClF,EAAauK,WAAWvJ,GACnBH,KAAK,KACF7B,EAAOkE,QAAQ5D,EAAW0C,QAAQ,wBAAyB,CAAC2C,KAAM7F,EAAOkC,KAAKC,YAC9E,MAAM2J,EAAQzL,EAAS,WACnBL,EAAOuB,QAAS,EAChB2F,EAAU6E,KAAK,SACnB,EAAG,KACH/L,EAAOL,IAAI,WAAY,WACnBU,EAASyG,OAAOgF,EACpB,KAEHhJ,MAAMkJ,UACHhM,EAAOuB,QAAS,EAChBrB,EAAO+C,MAAMD,SAAShB,GAAOxB,EAAW0C,QAAQ,kBAE5D,EAEAlD,EAAOyL,WAAa,WACZzL,EAAO6J,iBACP7J,EAAO6H,wBAEF7H,EAAO2G,sBACR3G,EAAO0L,iBAGnB,EAEA1L,EAAO6J,aAAe,WAClB,IAAIvE,GAAS,EAyBb,OAxBKtF,EAAOkC,KAAKC,SAIbnC,EAAOiM,cAAgB,IAHvBjM,EAAOiM,cAAgBzL,EAAW0C,QAAQ,2BAC1CoC,GAAS,GAITtF,EAAOsJ,YACPtJ,EAAOuJ,cAAgB,GACvBvJ,EAAOwJ,qBAAuB,KAEzBxJ,EAAOkC,KAAKuH,SAIbzJ,EAAOuJ,cAAgB,IAHvBvJ,EAAOuJ,cAAgB/I,EAAW0C,QAAQ,2BAC1CoC,GAAS,GAIRtF,EAAOkC,KAAKwH,iBAAmB1J,EAAOkC,KAAKuH,WAAazJ,EAAOkC,KAAKwH,gBAIrE1J,EAAOwJ,qBAAuB,IAH9BxJ,EAAOwJ,qBAAuBhJ,EAAW0C,QAAQ,6BACjDoC,GAAS,IAMVA,CACX,CACJ,IAEJvF,EAAed,WAAW,eAAgB,CAAC,SAAU,QAAS,SAAU,UAAW,eAAgB,WAAY,YAAa,WAAY,cAAe,kBAAmB,eAAgB,aACtL,SAASe,EAAQiG,EAAO/F,EAAQC,EAAS+L,EAAc7L,EAAU6G,EAAW9G,EAAU4K,EAAazK,EAAiBD,EAAcE,GAE9HxC,QAAQiN,OAAOC,KAAMF,EAAY,iBAAkB,CAAChL,OAAQA,EAAQmH,oBAAqB,2BACzF,MAAMjG,GAAeR,EAAAA,EAAAA,SAAQS,EAAAA,cACvBV,GAAuBC,EAAAA,EAAAA,SAAQC,EAAAA,sBAC/BwL,GAAyBzL,EAAAA,EAAAA,SAAQ0L,EAAAA,wBAEvCpM,EAAOmL,KAAO,OACdnL,EAAOoL,eAAiB5K,EAAW0C,QAAQ,mBAC3ClD,EAAOqL,OAAS,WACZnE,EAAUoE,IAAI,QAClB,EACAtL,EAAOqM,OAASH,EAChBlM,EAAOuL,UAAY/K,EAAW0C,QAAQ,uBAAwB,CAACoJ,OAAQtM,EAAOqM,OAAOC,SACrFtM,EAAOmH,oBAAsB3G,EAAW0C,QAAQ,yBAChDlD,EAAOqC,SAAWoF,EAAAA,GAASc,KAC3B,MAAMgE,EAAsB,CACxB,gBAAkB,EAClB,mBAAqB,EACrB,eAAiB,EACjB,uBAAyB,EACzB,0BAA4B,GAG3B9L,EAAqB4G,QAAQC,EAAAA,GAASC,aACvCL,EAAUoE,IAAI,YAElBtL,EAAOwM,YAAc,WACjBtL,EAAauL,QAAQzM,EAAOqM,OAAOC,QAAQvK,KAAK,SAASC,GACrDhC,EAAOkC,KAAO,CAACC,SAAUH,EAAKG,UAC9BnC,EAAOkC,KAAKuH,SAAW,GACvBzJ,EAAOkC,KAAKwH,gBAAkB,GAC9B1J,EAAOkC,KAAKwK,SAAW1K,EAAK0K,SAC5B1M,EAAOkC,KAAK6B,YAAc/B,EAAK+B,aAAewI,EAC9CvM,EAAOqC,SAAWL,EAAKM,cACvBtC,EAAOoG,mBAAqBpE,EAAKU,YAAYiK,YAC7C3M,EAAO4C,YAAcZ,EAAKU,YAAYG,gBAC1C,GAAGC,MAAM,SAASd,GACd,MAAMe,EAAMC,SAAShB,GACrB9B,EAAO+C,MAAMF,EAAKvC,EAAW0C,QAAQ,gBACzC,EACJ,EAEAlD,EAAOwM,cAEPxM,EAAOwL,OAAS,WACRxL,EAAOsJ,YAActJ,EAAOqC,WAAaoF,EAAAA,GAASC,MAClDpH,EAAaoF,gBAAgB,CACzBC,MAAOnF,EAAW0C,QAAQ,gCAC1B0C,QAASpF,EAAW0C,QAAQ,6BAC5B4C,SAAS,IACVR,OAAOvD,KAAK,WACX/B,EAAO4J,YACX,GAEA5J,EAAO4J,YAEf,EAEA5J,EAAO8J,eAAiB,WACpB9J,EAAOuB,QAAS,EAChB,MAAMW,EAAO,IAAIyJ,EAAAA,KAAK,CAClBxJ,SAAUnC,EAAOkC,KAAKC,SACtBsH,SAAUzJ,EAAOsJ,WAAa,GAAKtJ,EAAOkC,KAAKuH,eAAYmD,EAC3D7I,YAAa,IAAI6H,EAAAA,YAAY5L,EAAOkC,KAAK6B,aACzCrB,YAAa,IAAImJ,EAAAA,cAAc7L,EAAOkC,KAAKkE,sBAE/ClF,EAAa0I,WAAW1H,GAAMH,KAAK,KAC/B7B,EAAOkE,QAAQ5D,EAAW0C,QAAQ,wBAAyB,CAAC2C,KAAM7F,EAAOkC,KAAKC,YAC9E,MAAM2J,EAAQzL,EAAS,WACnBL,EAAOuB,QAAS,EAChBpB,EAAQ0M,QAAQC,MACpB,EAAG,KACH9M,EAAOL,IAAI,WAAY,WACnBU,EAASyG,OAAOgF,EACpB,GAEA,MAAMiB,EAAYZ,EAAuBa,uBACrChN,EAAOkC,KAAKC,WAAa4K,EAAU5K,UAGnC4K,EAAUE,eAAe,IAAIrB,EAAAA,YAAY5L,EAAOkC,KAAK6B,gBAE1DjB,MAAOd,IACN,MAAMe,EAAMC,SAAShB,GACrBhC,EAAOuB,QAAS,EAChBrB,EAAO+C,MAAMF,EAAKvC,EAAW0C,QAAQ,kBAE7C,EAEAlD,EAAO6J,aAAe,WAClB,OAAO7J,EAAOqJ,kBAClB,CACJ,IAEJtJ,EAAed,WAAW,yBAA0B,CAAC,SAAU,SAAU,kBAAmB,aACxF,SAASe,EAAQE,EAAQK,EAAiBC,GACtCR,EAAOkN,aAAe,SAAS7E,EAAM8E,GACjC,MAAMC,EAASD,EAAQE,MAAM,KAC7B9M,EAAgB+M,gBAAgB,CAC5BjF,KAAMA,EACN+E,OAAQA,EAAO,GACfD,QAASC,EAAO,IAExB,EAwBApN,EAAOL,IAAI,kBAAmB,WArB1BY,EAAgBgN,WACXnJ,QAAQ,SAASpC,GACdhC,EAAOwN,aAAexL,EACtBhC,EAAOyN,MAAQ7I,EAAE8I,KAAK1N,EAAOwN,cAC7BxN,EAAO2N,SAAW/I,EAAE8I,KAAK1N,EAAOwN,aAAaxN,EAAOyN,MAAM,KAC1D,MAAMG,EAAmBhJ,EAAE3C,IAAIjC,EAAOyN,MAAO,SAASpF,GAClD,MAAO,CAACA,EAAMzD,EAAEiJ,OAAO7N,EAAOwN,aAAanF,IAAOL,OACtD,GACAhI,EAAOyN,MAAQ7I,EAAEkJ,QAAQlJ,EAAE3C,IAAI2C,EAAEmJ,QAAQH,EAAkB,SAASI,GAChE,OAAOA,EAAE,EACb,GAAI,SAASA,GACT,OAAOA,EAAE,EACb,GACJ,GACC/K,MAAM,SAASjB,GACZ,MAAMe,EAAMC,SAAShB,GACrBhC,EAAOuB,QAAS,EAChBrB,EAAO+C,MAAMF,EAAKvC,EAAW0C,QAAQ,gBACzC,EAKR,EACJ,IAEJnD,EAAed,WAAW,iBAAkB,CAAC,SAAU,oBAAqB,WAAY,SAASe,EAAQkG,EAAmB/D,GACxHnC,EAAOmC,SAAWA,EAElBnC,EAAOyG,GAAK,WACRP,EAAkBW,OACtB,EAEA7G,EAAO8G,OAAS,WACZZ,EAAkBa,QAAQ,SAC9B,CACJ,G","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/security/services/constants.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/security/directives/custom-prefix-tags-input.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/security/controllers.js"],"sourcesContent":["export const SYSTEM_REPO = 'SYSTEM';\nexport const READ_REPO = 'READ_REPO';\nexport const READ_REPO_PREFIX = 'READ_REPO_';\nexport const WRITE_REPO = 'WRITE_REPO';\nexport const GRAPHQL = 'GRAPHQL';\nexport const WRITE_REPO_PREFIX = 'WRITE_REPO_';\nexport const GRAPHQL_PREFIX = 'GRAPHQL_';\nexport const GRAPHQL_SUFFIX = 'GRAPHQL';\nexport const SUFFIX_DELIMITER = ':';\nexport const GRAPHQL_SUFFIX_WITH_DELIMITER = SUFFIX_DELIMITER + GRAPHQL_SUFFIX;\nexport const CUSTOM_PREFIX = 'CUSTOM_'\n","angular\n .module('graphdb.framework.security.directives', [])\n .directive('customPrefixTagsInput', customPrefixTagsInputDirective);\n\n/**\n * @ngdoc directive\n * @name customPrefixTagsInput\n * @module app\n * @restrict A\n * @description\n * The `customPrefixTagsInput` directive is used to check 'tags-input' for roles containing 'CUSTOM_' or '!CUSTOM_' prefix.\n *\n * If the value starts with either of these prefixes, a warning property will be set in ngModel.\n *\n * @usage\n * <tags-input custom-prefix-tags-input>{{yourModel.role}}</tags-input>\n *\n * @return {Object} Directive definition object with restrict and link properties.\n */\nfunction customPrefixTagsInputDirective() {\n return {\n restrict: 'A',\n link: function(scope, element, attrs) {\n const customPrefix = \"CUSTOM_\";\n const negatedCustomPrefix = \"!CUSTOM_\";\n const subscriptions = [];\n\n function hasCustomOrNegatedPrefix(tag) {\n return tag.startsWith(customPrefix) || tag.startsWith(negatedCustomPrefix);\n }\n\n // Check if the element is tags-input and has ngModel associated with it\n const isNgTagsInput = element[0].nodeName.toLowerCase() === 'tags-input';\n\n if (isNgTagsInput && attrs.ngModel) {\n const ngModelCtrl = element.controller('ngModel');\n\n if (isNgTagsInput) {\n ngModelCtrl.$parsers.push(function (viewValue) {\n if (Array.isArray(viewValue)) {\n ngModelCtrl.$warning = viewValue.some((tag) => hasCustomOrNegatedPrefix(tag));\n }\n return viewValue;\n });\n\n subscriptions.push(scope.$watch(attrs.ngModel, function (newVal) {\n if (Array.isArray(newVal)) {\n ngModelCtrl.$warning = newVal.some((tag) => hasCustomOrNegatedPrefix(tag));\n }\n }, true));\n }\n }\n\n const unsubscribeListeners = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(scope.$on('$destroy', unsubscribeListeners));\n }\n };\n}\n","import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/security.service';\nimport {UserRole, UserType} from 'angular/utils/user-utils';\nimport 'angular/security/directives/custom-prefix-tags-input.directive';\nimport {GRAPHQL, GRAPHQL_PREFIX, READ_REPO, READ_REPO_PREFIX, SYSTEM_REPO, WRITE_REPO, WRITE_REPO_PREFIX} from './services/constants';\nimport {\n AppSettings,\n AuthorityList,\n AuthorizationService,\n SecurityContextService,\n AuthenticationService,\n mapAuthSettingsResponseToModel,\n mapGrantedAuthoritiesResponseToModel,\n OntoToastrService,\n RepositoryService,\n SecurityService as SecurityServiceAPI,\n service,\n User,\n UsersService,\n} from '@ontotext/workbench-api';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.security-service',\n 'toastr',\n 'ngTagsInput',\n];\n\nconst securityModule = angular.module('graphdb.framework.security.controllers', modules);\n\nsecurityModule.controller('UsersCtrl', ['$scope', '$uibModal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityService', '$translate',\n function($scope, $uibModal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityService, $translate) {\n const authorizationService = service(AuthorizationService);\n const authenticationService = service(AuthenticationService);\n const securityServiceAPI = service(SecurityServiceAPI);\n const toastrService = service(OntoToastrService);\n const usersService = service(UsersService);\n const repositoryService = service(RepositoryService);\n\n // UI view-model\n $scope.usersData = [];\n\n $scope.loader = true;\n $scope.securityEnabled = function() {\n return authenticationService.isSecurityEnabled();\n };\n $scope.hasExternalAuth = function() {\n return $jwtAuth.hasExternalAuth();\n };\n $scope.getAuthImplementation = function() {\n return $jwtAuth.getAuthImplementation();\n };\n $scope.freeAccessEnabled = function() {\n return authorizationService.hasFreeAccess();\n };\n $scope.getUsers = () => {\n return usersService.getUsers()\n .then(function(data) {\n $scope.usersData = data.map((user) => ({\n username: user.username,\n dateCreated: user.dateCreated,\n userType: user.getUserType(),\n userTypeDescription: user.getUserTypeDescription(),\n repositories: user.authorities.getRepositoriesPermissions(),\n customRoles: user.authorities.getCustomRoles(),\n }));\n $scope.loader = false;\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n $scope.getUsers();\n\n $scope.$on('repositoryIsSet', function() {\n $scope.getUsers();\n });\n\n $scope.toggleSecurity = function() {\n const isSecurityEnabled = authenticationService.isSecurityEnabled();\n $jwtAuth.toggleSecurity(!isSecurityEnabled)\n .then(() => {\n // reload UI\n // TODO: Not sure if we really need to reload the page here. The UI state is updated just fine. But maybe the reload is needed for something else?\n // Remove and fix this when migrated\n $window.location.reload();\n });\n };\n\n const setFreeAccess = function(enabled, authSettings) {\n // TODO: check this what app settings are provided here and if cookie settings should be updated in the storage\n return securityServiceAPI.setFreeAccess(enabled, authSettings);\n };\n\n /**\n * @param {boolean|undefined} updateFreeAccess - Whether to enable or disable free access. If undefined, the\n * free access has not been set yet.\n */\n $scope.toggleFreeAccess = function(updateFreeAccess) {\n if (!authorizationService.hasFreeAccess() || (authorizationService.hasFreeAccess() && updateFreeAccess)) {\n // enable and configure or only configure\n securityServiceAPI.getFreeAccess()\n .then((freeAccessAuthSettings) => {\n const authorities = mapGrantedAuthoritiesResponseToModel(freeAccessAuthSettings.authorities).getItems();\n const appSettings = freeAccessAuthSettings.appSettings ?? {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n };\n return configureFreeAccess(appSettings, authorities, updateFreeAccess);\n })\n .then((updatedFreeAccessAuthSettings) => setFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), updatedFreeAccessAuthSettings))\n .then(() => {\n const translateKey = updateFreeAccess ? 'jwt.auth.free.access.updated.msg' : 'jwt.auth.free.access.status';\n toastrService.success($translate.instant(translateKey, {status: $translate.instant('enabled.status')}));\n })\n .catch((err) => {\n if (err === 'cancel') {\n // Check if modal was dismissed by user\n return;\n }\n toastrService.error(err.data ?? err, $translate.instant('common.error'));\n });\n } else {\n // disable\n setFreeAccess(!authorizationService.hasFreeAccess())\n .then(() => {\n toastrService.success($translate.instant('jwt.auth.free.access.status', {status: ($translate.instant('disabled.status'))}));\n })\n .catch((err) => {\n toastrService.error(err.data, $translate.instant('common.error'));\n });\n }\n };\n\n const configureFreeAccess = (appSettings, authorities, updateFreeAccess) => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/security/templates/modal/default-authorities.html',\n controller: 'DefaultAuthoritiesCtrl',\n resolve: {\n data: function() {\n return {\n // converts the array rights to hash ones. why, oh, why do we have both formats?\n defaultAuthorities: function() {\n const defaultAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {},\n [GRAPHQL]: {},\n };\n // We might have old (no longer existing) repositories so we have to check that\n const repoIds = _.mapKeys($scope.getRepositories(), function(r) {\n return repositoryService.getLocationSpecificId(r);\n });\n _.each(authorities, function(a) {\n // indexOf works in IE 11, startsWith doesn't\n if (a.indexOf(WRITE_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(11))) {\n defaultAuthorities[WRITE_REPO][a.substr(11)] = true;\n }\n } else if (a.indexOf(READ_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(10))) {\n defaultAuthorities[READ_REPO][a.substr(10)] = true;\n }\n } else if (a.indexOf(GRAPHQL_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(8))) {\n defaultAuthorities[GRAPHQL][a.substr(8)] = true;\n }\n }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings,\n };\n },\n },\n });\n return modalInstance.result.then(function(data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n return mapAuthSettingsResponseToModel({\n enabled: updateFreeAccess || !authorizationService.hasFreeAccess(),\n appSettings,\n authorities,\n });\n });\n };\n\n $scope.editFreeAccess = function() {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function(username) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: $translate.instant('security.confirm.delete.user', {name: username}),\n warning: true,\n }).result.then(function() {\n $scope.loader = true;\n usersService.deleteUser(username)\n .then(() => $scope.getUsers())\n .catch((data) => {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n });\n };\n\n // Should be able to send the original username to $routeParams\n $scope.encodeURIComponent = function(name) {\n return encodeURIComponent(name);\n };\n }]);\n\nsecurityModule.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$uibModalInstance', 'data', '$rootScope',\n function($scope, $http, $uibModalInstance, data, $rootScope) {\n const repositoryService = service(RepositoryService);\n\n $scope.grantedAuthorities = data.defaultAuthorities();\n $scope.appSettings = data.appSettings;\n\n $scope.hasActiveLocation = function() {\n // Hack to get this from root scope to avoid cyclic dependency\n return !_.isEmpty($rootScope.globalLocation);\n };\n\n $scope.getRepositories = function() {\n // Hack to get this from root scope to avoid cyclic dependency\n return $rootScope.globalRepositories;\n };\n\n $scope.ok = function() {\n const auth = [];\n $scope.repositoryCheckError = true;\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n auth.push(WRITE_REPO_PREFIX + index);\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index] && auth.indexOf(READ_REPO_PREFIX + index) === -1) {\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.GRAPHQL) {\n if ($scope.grantedAuthorities.GRAPHQL[index] && auth.indexOf(GRAPHQL_PREFIX + index) === -1) {\n auth.push(GRAPHQL_PREFIX + index);\n }\n }\n if (!$scope.repositoryCheckError) {\n $uibModalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.createUniqueKey = function(repository) {\n return repositoryService.getLocationSpecificId(repository);\n };\n }]);\n\nsecurityModule.controller('CommonUserCtrl', ['$rootScope', '$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$translate', 'passwordPlaceholder',\n function($rootScope, $scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $translate, passwordPlaceholder) {\n const authorizationService = service(AuthorizationService);\n const repositoryService = service(RepositoryService);\n\n $rootScope.$on('$translateChangeSuccess', function() {\n $scope.passwordPlaceholder = $translate.instant(passwordPlaceholder);\n });\n $scope.isAdmin = function() {\n return authorizationService.hasRole(UserRole.ROLE_ADMIN);\n };\n $scope.hasExternalAuth = function() {\n return $jwtAuth.hasExternalAuth();\n };\n\n $scope.hasEditRestrictions = function() {\n return $scope.user && $scope.user.username === UserType.ADMIN;\n };\n\n $scope.isOverrideAuth = function() {\n return $jwtAuth.isDefaultAuthEnabled();\n };\n\n $scope.setGrantedAuthorities = function() {\n function pushAuthority(...authorities) {\n for (let i = 0; i < authorities.length; i++) {\n const authority = authorities[i];\n if (_.indexOf($scope.user.grantedAuthorities, authority) < 0) {\n $scope.user.grantedAuthorities.push(authority);\n }\n }\n }\n\n $scope.user.grantedAuthorities = [];\n\n $scope.repositoryCheckError = true;\n if ($scope.userType === UserType.ADMIN) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_ADMIN);\n } else if ($scope.userType === UserType.REPO_MANAGER) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_REPO_MANAGER);\n } else {\n pushAuthority(UserRole.ROLE_USER);\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(WRITE_REPO_PREFIX + index, READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.GRAPHQL) {\n if ($scope.grantedAuthorities.GRAPHQL[index]) {\n pushAuthority(GRAPHQL_PREFIX + index);\n }\n }\n }\n if ($scope.customRoles) {\n $scope.customRoles.forEach((role) => pushAuthority('CUSTOM_' + role));\n }\n };\n\n $scope.$watch('userType', function() {\n if (!$scope.isUser()) {\n $scope.customRoles = '';\n }\n });\n\n $scope.isUser = function() {\n return $scope.userType === UserType.USER;\n };\n\n $scope.hasReadPermission = function(repository) {\n const uniqueKey = repositoryService.getLocationSpecificId(repository);\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repository.id !== SYSTEM_REPO && ($scope.grantedAuthorities.READ_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO['*'])\n || $scope.grantedAuthorities.READ_REPO[uniqueKey]\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.hasWritePermission = function(repoOrWildCard) {\n const uniqueKey = repositoryService.getLocationSpecificId(repoOrWildCard);\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.hasGraphqlPermission = function(repository) {\n const uniqueKey = repositoryService.getLocationSpecificId(repository);\n return repository.id !== SYSTEM_REPO && $scope.grantedAuthorities.GRAPHQL['*']\n || $scope.grantedAuthorities.GRAPHQL[uniqueKey];\n };\n\n $scope.readCheckDisabled = function(repoOrWildCard) {\n return $scope.hasWritePermission(repoOrWildCard)\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function(repoOrWildCard) {\n return $scope.userType === UserType.ADMIN\n || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n /**\n * Determines whether the GraphQL checkbox for a given repository or wildcard\n * should be disabled.\n *\n * @param {Object|string} repoOrWildCard - A repo object or the string wildcard '*'\n * @returns {boolean} true if disabled, false if enabled\n */\n $scope.graphqlCheckDisabled = function(repoOrWildCard) {\n if ($scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER) {\n return true;\n }\n\n if ($scope.hasEditRestrictions()) {\n return true;\n }\n\n if (repoOrWildCard !== '*' && $scope.grantedAuthorities.GRAPHQL['*']) {\n return true;\n }\n\n if (repoOrWildCard === '*' && $scope.grantedAuthorities.GRAPHQL['*']) {\n return false;\n }\n\n let uniqueKey;\n if (repoOrWildCard !== null && typeof repoOrWildCard === 'object') {\n uniqueKey = repositoryService.getLocationSpecificId(repoOrWildCard);\n } else {\n uniqueKey = repoOrWildCard;\n }\n\n const hasReadWildcard = $scope.grantedAuthorities.READ_REPO['*'];\n const hasWriteWildcard = $scope.grantedAuthorities.WRITE_REPO['*'];\n const hasReadForRepo = $scope.grantedAuthorities.READ_REPO[uniqueKey];\n const hasWriteForRepo = $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n\n return !(hasReadWildcard || hasWriteWildcard || hasReadForRepo || hasWriteForRepo);\n };\n\n $scope.createUniqueKey = function(repository) {\n return repositoryService.getLocationSpecificId(repository);\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {},\n [GRAPHQL]: {},\n };\n\n $scope.validatePassword = function() {\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n return true;\n }\n if ($scope.user.password !== $scope.user.confirmpassword) {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n }\n return false;\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n return true;\n };\n\n $scope.isLocalAuthentication = function() {\n return $jwtAuth.getAuthImplementation() === 'Local';\n };\n\n $scope.updateUser = function() {\n if (!$scope.validateForm()) {\n return false;\n }\n\n if ($scope.isLocalAuthentication()) {\n $scope.setGrantedAuthorities();\n }\n\n if (!$scope.repositoryCheckError) {\n $scope.updateUserHttp();\n }\n };\n\n $scope.setNoPassword = function() {\n if ($scope.noPassword) {\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n };\n\n $scope.shouldDisableSameAs = function() {\n const sameAsCheckbox = $('#sameAsCheck');\n if ($scope.user && !$scope.user.appSettings.DEFAULT_INFERENCE && sameAsCheckbox.prop('checked')) {\n sameAsCheckbox.prop('checked', false);\n $scope.user.appSettings.DEFAULT_SAMEAS = false;\n }\n\n return $scope.user && !$scope.user.appSettings.DEFAULT_INFERENCE;\n };\n\n /**\n * The validity of the last user typed custom role.\n * @type {boolean}\n */\n $scope.isRoleValid = true;\n const minTagLength = 2;\n\n /**\n * Adds the user typed custom role and sets role validity flag to true.\n *\n * @param {{text: string}} role the user input\n * @return {{text: string}} the user input in uppercase\n */\n $scope.addCustomRole = function(role) {\n $scope.isRoleValid = true;\n role.text = role.text.toUpperCase();\n return role;\n };\n\n /**\n * Checks if the input text is valid or not.\n *\n * @param {{text: string}} fieldValue the user input\n * @return {boolean} true if valid, otherwise false\n */\n $scope.isCustomRoleValid = function(fieldValue) {\n $scope.isRoleValid = fieldValue.text.length >= minTagLength;\n return $scope.isRoleValid;\n };\n\n /**\n * Checks if the user pressed the 'Backspace' or 'Delete' key and sets the role validity flag accordingly.\n *\n * @param {Object} event\n */\n $scope.checkUserInput = function(event) {\n // If the key pressed is the backspace or delete key, the tag error message will be hidden\n if (event.keyCode === 8 || event.keyCode === 46) {\n $scope.isRoleValid = true;\n }\n };\n\n /**\n * Sets the role validity flag to true.\n */\n $scope.removeErrorOnCut = function() {\n // If the user cuts text from the field, the tag error message will be hidden\n $scope.isRoleValid = true;\n };\n }]);\n\nsecurityModule.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityService', 'ModalService', '$translate',\n function($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityService, ModalService, $translate) {\n // eslint-disable-next-line no-invalid-this\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.password.placeholder'}));\n const usersService = service(UsersService);\n\n $scope.mode = 'add';\n $scope.saveButtonText = $translate.instant('common.create.btn');\n $scope.goBack = function() {\n $location.url('users');\n };\n $scope.pageTitle = $translate.instant('view.create.user.title');\n $scope.passwordPlaceholder = $translate.instant('security.password.placeholder');\n\n $scope.user = {\n 'username': '',\n 'password': '',\n 'confirmpassword': '',\n 'grantedAuthorities': [],\n 'appSettings': {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n },\n };\n\n $scope.submit = function() {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.create.admin'),\n message: $translate.instant('security.admin.login.warning'),\n warning: true,\n }).result.then(function() {\n $scope.createUser();\n });\n } else {\n $scope.createUser();\n }\n };\n\n $scope.createUserHttp = function() {\n $scope.loader = true;\n const user = new User({\n username: $scope.user.username,\n password: $scope.user.password,\n appSettings: new AppSettings($scope.user.appSettings),\n authorities: new AuthorityList($scope.user.grantedAuthorities),\n });\n usersService.createUser(user)\n .then(() => {\n toastr.success($translate.instant('security.user.created', {name: $scope.user.username}));\n const timer = $timeout(function() {\n $scope.loader = false;\n $location.path('/users');\n }, 2000);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n })\n .catch(async (data) => {\n $scope.loader = false;\n toastr.error(getError(data), $translate.instant('common.error'));\n });\n };\n\n $scope.createUser = function() {\n if ($scope.validateForm()) {\n $scope.setGrantedAuthorities();\n\n if (!$scope.repositoryCheckError) {\n $scope.createUserHttp();\n }\n }\n };\n\n $scope.validateForm = function() {\n let result = true;\n if (!$scope.user.username) {\n $scope.usernameError = $translate.instant('security.enter.username');\n result = false;\n } else {\n $scope.usernameError = '';\n }\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n } else {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n result = false;\n } else {\n $scope.passwordError = '';\n }\n if (!$scope.user.confirmpassword || $scope.user.password !== $scope.user.confirmpassword) {\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityModule.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityService', 'ModalService', '$translate',\n function($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityService, ModalService, $translate) {\n // eslint-disable-next-line no-invalid-this\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n const usersService = service(UsersService);\n const authorizationService = service(AuthorizationService);\n const securityContextService = service(SecurityContextService);\n\n $scope.mode = 'edit';\n $scope.saveButtonText = $translate.instant('common.save.btn');\n $scope.goBack = function() {\n $location.url('users');\n };\n $scope.params = $routeParams;\n $scope.pageTitle = $translate.instant('view.edit.user.title', {userId: $scope.params.userId});\n $scope.passwordPlaceholder = $translate.instant('security.new.password');\n $scope.userType = UserType.USER;\n const defaultUserSettings = {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true,\n };\n\n if (!authorizationService.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function() {\n usersService.getUser($scope.params.userId).then(function(data) {\n $scope.user = {username: data.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = data.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = data.getUserType();\n $scope.grantedAuthorities = data.authorities.toUIModel();\n $scope.customRoles = data.authorities.getCustomRoles();\n }).catch(function(data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.getUserData();\n\n $scope.submit = function() {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.save.admin.settings'),\n message: $translate.instant('security.admin.pass.unset'),\n warning: true,\n }).result.then(function() {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n };\n\n $scope.updateUserHttp = function() {\n $scope.loader = true;\n const user = new User({\n username: $scope.user.username,\n password: $scope.noPassword ? '' : $scope.user.password || undefined,\n appSettings: new AppSettings($scope.user.appSettings),\n authorities: new AuthorityList($scope.user.grantedAuthorities),\n });\n usersService.updateUser(user).then(() => {\n toastr.success($translate.instant('security.user.updated', {name: $scope.user.username}));\n const timer = $timeout(function() {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function() {\n $timeout.cancel(timer);\n });\n // if we update the settings of the currently logged user, update the principal\n const principal = securityContextService.getAuthenticatedUser();\n if ($scope.user.username === principal.username) {\n // TODO: Discuss what's the point in updating the principal's appSettings here?!\n // principal.appSettings = $scope.user.appSettings;\n principal.setAppSettings(new AppSettings($scope.user.appSettings));\n }\n }).catch((data) => {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.validateForm = function() {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityModule.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityService', '$translate',\n function($scope, toastr, SecurityService, $translate) {\n $scope.debugMapping = function(role, mapping) {\n const method = mapping.split(':');\n SecurityService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0],\n });\n };\n\n const loadRoles = function() {\n SecurityService.getRoles()\n .success(function(data) {\n $scope.roleMappings = data;\n $scope.roles = _.keys($scope.roleMappings);\n $scope.mappings = _.keys($scope.roleMappings[$scope.roles[0]]);\n const permissionsCount = _.map($scope.roles, function(role) {\n return [role, _.filter($scope.roleMappings[role]).length];\n });\n $scope.roles = _.reverse(_.map(_.orderBy(permissionsCount, function(p) {\n return p[1];\n }), function(p) {\n return p[0];\n }));\n })\n .error(function(data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.$on('repositoryIsSet', function() {\n loadRoles();\n });\n }]);\n\nsecurityModule.controller('DeleteUserCtrl', ['$scope', '$uibModalInstance', 'username', function($scope, $uibModalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function() {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"names":["SYSTEM_REPO","READ_REPO","READ_REPO_PREFIX","WRITE_REPO","GRAPHQL","WRITE_REPO_PREFIX","GRAPHQL_PREFIX","angular","module","directive","restrict","link","scope","element","attrs","subscriptions","hasCustomOrNegatedPrefix","tag","startsWith","isNgTagsInput","nodeName","toLowerCase","ngModel","ngModelCtrl","controller","$parsers","push","viewValue","Array","isArray","$warning","some","$watch","newVal","$on","unsubscribeListeners","forEach","subscription","securityModule","$scope","$uibModal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityService","$translate","authorizationService","service","AuthorizationService","authenticationService","AuthenticationService","securityServiceAPI","SecurityServiceAPI","toastrService","OntoToastrService","usersService","UsersService","repositoryService","RepositoryService","usersData","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","hasFreeAccess","getUsers","then","data","map","user","username","dateCreated","userType","getUserType","userTypeDescription","getUserTypeDescription","repositories","authorities","getRepositoriesPermissions","customRoles","getCustomRoles","catch","msg","getError","error","instant","toggleSecurity","location","reload","setFreeAccess","enabled","authSettings","toggleFreeAccess","updateFreeAccess","getFreeAccess","freeAccessAuthSettings","mapGrantedAuthoritiesResponseToModel","getItems","appSettings","configureFreeAccess","updatedFreeAccessAuthSettings","isFreeAccessEnabled","translateKey","success","status","err","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","getLocationSpecificId","each","a","indexOf","hasOwnProperty","substr","result","mapAuthSettingsResponseToModel","editFreeAccess","removeUser","openSimpleModal","title","message","name","warning","deleteUser","encodeURIComponent","$http","$uibModalInstance","$rootScope","grantedAuthorities","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","index","close","cancel","dismiss","createUniqueKey","repository","$location","passwordPlaceholder","isAdmin","hasRole","UserRole","ROLE_ADMIN","hasEditRestrictions","UserType","ADMIN","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","i","length","authority","REPO_MANAGER","ROLE_REPO_MANAGER","ROLE_USER","role","isUser","USER","hasReadPermission","uniqueKey","id","hasWritePermission","repoOrWildCard","hasGraphqlPermission","readCheckDisabled","writeCheckDisabled","graphqlCheckDisabled","hasReadWildcard","hasWriteWildcard","hasReadForRepo","hasWriteForRepo","validatePassword","noPassword","passwordError","confirmPasswordError","password","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","shouldDisableSameAs","sameAsCheckbox","$","DEFAULT_INFERENCE","prop","DEFAULT_SAMEAS","isRoleValid","addCustomRole","text","toUpperCase","isCustomRoleValid","fieldValue","checkUserInput","event","keyCode","removeErrorOnCut","$controller","extend","this","mode","saveButtonText","goBack","url","pageTitle","submit","createUser","createUserHttp","User","AppSettings","AuthorityList","timer","path","async","usernameError","$routeParams","securityContextService","SecurityContextService","params","userId","defaultUserSettings","getUserData","getUser","external","toUIModel","undefined","history","back","principal","getAuthenticatedUser","setAppSettings","debugMapping","mapping","method","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","filter","reverse","orderBy","p"],"ignoreList":[],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_esm_id__=95953;export const __webpack_esm_ids__=[40618,62608,65191,95953];export const __webpack_esm_modules__={40618(){angular.module("graphdb.framework.core.directives.multiselect",[]).directive("multiSelectDropdown",function(){return{restrict:"E",scope:{items:"=",placeholder:"@?",onChange:"&?",labelKeys:"=?"},templateUrl:"js/angular/core/directives/multiselect-search/templates/multiselect-search.html",controller:["$scope","$document","$element","$filter","$timeout",function(e,t,o,n,r){e.open=!1,e.search={query:""},e.visibleItems=[];const i=[],a=e=>null===e?"":(""+e).toLowerCase(),s=()=>{const t=Array.isArray(e.items)?e.items:[],o=a(e.search.query);e.visibleItems=o?t.filter(e=>a(e.label).includes(o)):t},l=t=>{e.open&&(o[0].contains(t.target)||e.$applyAsync(function(){e.open=!1}))};e.toggleOpen=function(t){t&&t.stopPropagation(),e.open=!e.open,e.open&&r(function(){const e=o[0].querySelector(".multiselect-search");e&&e.focus()})},e.onKeydownMenu=function(t){"Escape"===t.key&&(e.open=!1,t.stopPropagation(),t.preventDefault(),r(function(){const e=o[0].querySelector(".multiselect-button");e&&e.focus()}))},e.selectedCount=function(){return Array.isArray(e.items)?e.items.filter(e=>e.selected).length:0},e.allFilteredSelected=function(){const t=e.visibleItems||[];return 0!==t.length&&t.every(e=>e.selected)},e.someFilteredSelected=function(){const t=e.visibleItems||[],o=t.some(e=>e.selected),n=t.every(e=>e.selected);return o&&!n},e.toggleSelectAll=function(t){t&&t.stopPropagation();const o=e.visibleItems||[],n=!e.allFilteredSelected();for(const e of o)e.selected=n;e.emitChange()},e.emitChange=function(){if("function"==typeof e.onChange){const t=(e.items||[]).filter(e=>e.selected);e.onChange({selected:t})}},t.on("click",l),i.push(e.$watch("search.query",s),e.$watchCollection("items",s)),e.$on("$destroy",()=>{t.off("click",l);for(const e of i)e()}),s()}]}})},62608(e,t,o){o.d(t,{X:()=>n});const n={SIMILARITY:"similarity",ELASTICSEARCH:"elasticsearch",OPENSEARCH:"opensearch"}},65191(){function e(e,t,o,n,r){e.externalIntegrationConfiguration=r.externalIntegrationConfiguration,e.difyExtension=r.difyExtensionUrl,e.queryMethods=r.queryMethodsUrl,e.agentId=r.agentId,e.agentName=r.agentName,e.close=()=>{t.dismiss({})},e.onCloseExternalIntegrationConfigurationModal=()=>{t.dismiss({})}}angular.module("graphdb.framework.ttyg.controllers.external-integration-configuration-modal",[]).controller("ExternalIntegrationConfigurationModalController",e),e.$inject=["$scope","$uibModalInstance","ModalService","$translate","dialogModel"]},84430(e,t,o){o(65191);var n=o(70826);function r(e,t,o){return{open:function(r){return t.getExternalUrl().then(t=>{const o=function(e,t){return{agentName:e.name,agentId:e.id,queryMethodsUrl:`${t}/rest/llm/tool/ttyg/${e.id}`,difyExtensionUrl:`${t}/rest/llm/ttyg/${e.id}/dify`}}(r,t.data);return e.open({templateUrl:"js/angular/ttyg/templates/modal/external-integration-configuration-modal.html",controller:"ExternalIntegrationConfigurationModalController",windowClass:"external-integration-configuration-modal",backdrop:"static",resolve:{dialogModel:()=>o}}).result.then(()=>{}).catch(()=>{})}).catch(e=>{o.error(getError(e,0,n.LE))})}}}angular.module("graphdb.framework.ttyg.services.externalIntegrationModal",["graphdb.framework.ttyg.controllers.external-integration-configuration-modal"]).factory("ExternalIntegrationModalService",r),r.$inject=["$uibModal","LocationsRestService","toastr"]},95953(e,t,o){var n=o(60529),r=o(28319),i=(o(51682),o(66989),o(36665),o(40618),o(69289),o(17187),o(84430),o(51445)),a=o(71920),s=o(70826),l=o(16135),c=o(76076),d=o(304),g=o(38940),m=o(62608);const u=d.I.logger;function p(e,t,o,d,p,y,h,I,f,v,S,E,M,F,x,_,C,A,T){e.AGENT_OPERATION=s.A1,e.operation=E.operation,e.savingAgent=!1,e.agentFormModel=E.agentFormModel,e.activeRepositoryInfo=E.activeRepositoryInfo,e.extractionMethodLoaderFlags={[r.Ht.SIMILARITY]:!1},e.activeRepositoryList=E.activeRepositoryList,e.extractionMethods=r.Ht,e.additionalExtractionMethods=r.eA,e.ExtractionMethodTemplates=x,e.showAdvancedSettings=!1,e.showHighTemperatureWarning=!1,e.showSystemInstructionWarning=!1,e.retrievalConnectors=[],e.ftsEnabled=!1,e.autocompleteSuggestions=[],e.showContextSize=null!==e.agentFormModel.contextSize,e.vectorFields=[],e.documentationUrlForSimilarity=c.m.getDocumentationUrl(T.productShortVersion,"talk-to-graph.html#prerequisites-and-configuration"),e.similarityOptionsGrouped=[],e.toggleExtractionMethod=t=>{t.expanded=t.selected,e.agentSettingsForm.extractionMethods.$setTouched(),k(),j[t.method](t)},e.onExtractionMethodPanelToggle=e=>{e.toggleCollapse(),j[e.method](e)},e.toggleAdditionalExtractionMethod=t=>{t.expanded=t.selected,e.checkAutocompleteIndexEnabled(),q[t.method](t)},e.onAdditionalExtractionMethodPanelToggle=e=>{e.toggleCollapse(),q[e.method](e)},e.helpInfoForModel={ttygHelpInfo:function(){const e=(0,n.Gz)(S.instant("ttyg.agent.create_agent_modal.form.model.hint"));return I.trustAsHtml(e)}(),linkText:S.instant("ttyg.agent.create_agent_modal.form.model.link_text"),documentationUrl:c.m.getDocumentationUrl(T.productShortVersion,"talk-to-graph.html#prerequisites-and-configuration")},e.getFTSDisabledHelpMessage=()=>{const t=(0,n.Gz)(S.instant("ttyg.agent.create_agent_modal.form.fts_search.fts_disabled_message",{repositoryEditPage:"repository/edit/"+e.agentFormModel.repositoryId}));return I.trustAsHtml(t)},e.goToAutocompleteView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_AUTOCOMPLETE_INDEX_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToCreateSimilarityView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_CREATE_SIMILARITY_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.goToConnectorsView=t=>{t.preventDefault(),M.emit(a.I.GO_TO_CONNECTORS_VIEW,{repositoryId:e.agentFormModel.repositoryId})},e.ok=()=>{const t=e.agentFormModel.toPayload();return R[e.operation](t)},e.cancel=()=>{t.dismiss({})},e.close=()=>{t.dismiss({})},e.updateSimilaritySearchPanel=(t=!1)=>{const o=e.agentFormModel.assistantExtractionMethods.getSimilarityExtractionMethod();o.selected?(t&&(o.similarityIndex=null),H(o,!0)):e.agentSettingsForm.$setValidity("FTSDisabled",!0)},e.updateRetrievalConnectorPanel=(t=!1)=>{const o=e.agentFormModel.assistantExtractionMethods.getRetrievalExtractionMethod();o.selected&&(t&&(o.retrievalConnectorInstance=null),N(o))},e.checkIfFTSEnabled=()=>{e.agentFormModel.repositoryId?e.agentFormModel.assistantExtractionMethods.getFTSSearchExtractionMethod().selected?(e.extractionMethodLoaderFlags[r.Ht.FTS_SEARCH]=!0,h.getRepositoryModel({id:e.agentFormModel.repositoryId}).then(t=>{e.ftsEnabled=t.getParamValue(i.YF.enableFtsIndex)}).catch(e=>{O(e,"ttyg.agent.messages.error_repository_config_loading")}).finally(()=>{e.extractionMethodLoaderFlags[r.Ht.FTS_SEARCH]=!1,e.agentSettingsForm.$setValidity("FTSDisabled",e.ftsEnabled)})):e.agentSettingsForm.$setValidity("FTSDisabled",!0):e.agentSettingsForm.$setValidity("FTSDisabled",!1)},e.openExternalIntegrationConfig=()=>{const t=e.agentFormModel;A.open(t)},e.onRepositoryChange=()=>{Y(!0,!0)},e.checkAutocompleteIndexEnabled=t=>{if(t||(t=e.agentFormModel.additionalExtractionMethods.additionalExtractionMethods.find(e=>e.method===r.eA.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH)),t&&!t.selected||!e.agentFormModel.repositoryId)return;const o=V();_.checkAutocompleteStatus(o.repositoryId,o.repositoryLocation).then(t=>{e.autocompleteEnabled=t,e.agentSettingsForm.$setValidity("autocompleteDisabled",t)}).catch(t=>{e.agentSettingsForm.$setValidity("autocompleteDisabled",!1),f.error(getError(t))})},e.onRestoreDefaultContextSize=()=>{e.agentFormModel.contextSize=e.agentFormModel.contextSizeCopy},e.onRestoreDefaultSystemInstructions=()=>{e.agentFormModel.instructions.systemInstruction=e.agentFormModel.instructions.systemInstructionCopy},e.onRestoreDefaultUserInstructions=()=>{e.agentFormModel.instructions.userInstruction=e.agentFormModel.instructions.userInstructionCopy},e.onTemperatureChange=()=>{e.showHighTemperatureWarning=e.agentFormModel.temperature.value>1},e.onSystemInstructionChange=()=>{""===e.agentFormModel.instructions.systemInstruction||e.showSystemInstructionWarning||(e.showSystemInstructionWarning=!0,o.openModalAlert({title:S.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.title"),message:S.instant("ttyg.agent.create_agent_modal.form.system_instruction.overriding_system_instruction_warning.body")}).result.then(function(){})),""===e.agentFormModel.instructions.systemInstruction&&(e.showSystemInstructionWarning=!1)},e.onExplainAgentSettings=()=>{const t=e.agentFormModel.toPayload();F.explainAgentSettings(t).then(e=>{const t={templateUrl:"js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html",controller:"AgentInstructionsExplainModalController",windowClass:"agent-instructions-explain-modal",backdrop:"static",resolve:{dialogModel:function(){return{agentInstructionsExplain:e}}},size:"lg"};d.open(t).result.then(()=>{})}).catch(e=>{f.error(getError(e,0,s.LE))})},e.getSuggestions=t=>{const o=t.target.value;C.getAutocompleteSuggestions(o).then(l.C).then(t=>{e.autocompleteSuggestions=t.map(e=>({text:e.value}))}).catch(e=>{f.error(getError(e,0,s.LE))})},e.onVectorFieldsChange=function(e){e.connectorFields=e.selectedConnectorField?[e.selectedConnectorField]:[]},e.hasConnectorData=()=>!(!e.connectorMap||!Object.keys(e.connectorMap).length),e.shouldShowVectorFields=t=>{if(!t)return!1;const o=t.connectorType,n=t.similarityIndex;if(!D(o))return!1;if(Array.isArray(e.vectorFields))return e.vectorFields.length>0;const r=b(o,n);return Array.isArray(r)&&r.length>0},e.onSimilarityIndexChange=t=>{const o=t&&t.similarityIndexOption;if(t.selectedConnectorField=void 0,t.connectorFields=[],!o)return t.connectorType=null,t.similarityIndex="",void(e.vectorFields=[]);t.connectorType=o.provider,t.similarityIndex=o.value,e.vectorFields=b(o.provider,o.value)};const b=(t,o)=>{const n=e.connectorMap||{};return n[t]&&n[t][o]?n[t][o]:[]},R={[s.A1.CREATE]:e=>$(e),[s.A1.EDIT]:e=>w(e),[s.A1.CLONE]:e=>L(e)},$=o=>(e.savingAgent=!0,F.createAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),w=o=>(e.savingAgent=!0,F.editAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),L=o=>(e.savingAgent=!0,F.createAgent(o).then(e=>{t.close(e),f.success(S.instant("ttyg.agent.messages.agent_save_successfully",{agentName:e.name}))}).catch(e=>{f.error(getError(e,0,s.LE))}).finally(()=>{e.savingAgent=!1})),O=(e,t)=>{u.error(e),f.error(S.instant(t))},k=()=>{e.agentSettingsForm.extractionMethods.$setValidity("required",e.agentFormModel.hasExtractionMethodSelected())},V=()=>{const t=e.activeRepositoryList.find(t=>t.value===e.agentFormModel.repositoryId);return{repositoryId:t?t.data.repository.id:void 0,repositoryLocation:t?t.data.repository.location:void 0}},D=e=>e===m.X.OPENSEARCH||e===m.X.ELASTICSEARCH,H=(t,o=!1)=>{if(!t.selected)return void e.agentSettingsForm.$setValidity("missingIndex",!0);const n=e.agentSettingsForm&&e.agentSettingsForm.connectorInstances,r=!n||n.$pristine;if(e.connectorMap&&!r)return;if(!e.agentFormModel.repositoryId)return;e.extractionMethodLoaderFlags[t.method]=!0;const i=V();p.getSimilarityIndexesWithVectorFields(i.repositoryId).then(n=>{e.connectorMap=n;const r=U(n);(t=>{e.similarityOptionsGrouped=[],Object.entries(t).forEach(([t,o])=>{const n=S.instant(`ttyg.agent.create_agent_modal.form.similarity_instance_type_label.${t}`);Object.keys(o||{}).forEach(o=>{e.similarityOptionsGrouped.push({provider:t,label:o,value:o,group:n})})})})(n),P(r,t),(t=>{const o=t.connectorType,n=t.similarityIndex;D(o)?e.vectorFields=b(o,n):e.vectorFields=[]})(t),e.agentSettingsForm.$setValidity("missingIndex",!t.selected||e.hasConnectorData()),(o||t.connectorFields&&0===t.connectorFields.length)&&e.onSimilarityIndexChange(t)}).catch(t=>{e.connectorMap=null,e.agentSettingsForm.$setValidity("missingIndex",!1),O(t,"ttyg.agent.messages.error_similarity_indexes_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})},P=(t,o)=>{if(!t.length)return o.connectorType="",o.similarityIndex="",void(o.similarityIndexOption=void 0);const n=o.connectorType,r=o.similarityIndex,i=t.find(e=>e.data.connectorType===n&&e.value===r)||t[0];o.connectorType=i.data.connectorType,o.similarityIndex=i.value;const a=(e.similarityOptionsGrouped||[]).find(e=>e.provider===o.connectorType&&e.value===o.similarityIndex);o.similarityIndexOption=a||void 0},U=e=>{const t=[];return Object.entries(e).forEach(([e,o])=>{Object.entries(o).forEach(([o,n])=>{t.push(new g.rx({label:o,value:o,data:{connectorType:e,connectorFields:n}}))})}),t},N=t=>{if(!e.agentFormModel.repositoryId)return;if(!t.selected)return void e.agentSettingsForm.$setValidity("missingConnector",!0);e.extractionMethodLoaderFlags[t.method]=!0;const o=V();y.getConnectorPrefixByName("ChatGPT Retrieval",o.repositoryId,o.repositoryLocation).then(e=>y.getConnectorsByTypeAsSelectMenuOptions(e,o.repositoryId,o.repositoryLocation)).then(o=>{e.retrievalConnectors=o,e.agentSettingsForm.$setValidity("missingConnector",!t.selected||!(!o||!o.length)),G(e.retrievalConnectors,t)}).catch(t=>{e.agentSettingsForm.$setValidity("missingConnector",!1),O(t,"ttyg.agent.messages.error_retrieval_connectors_loading")}).finally(()=>{e.extractionMethodLoaderFlags[t.method]=!1})},G=(e,t)=>{if(0===e.length)return void(t.retrievalConnectorInstance=null);const o=e.find(e=>e.value===t.retrievalConnectorInstance);t.retrievalConnectorInstance=o?o.value:e[0].value},j={[r.Ht.FTS_SEARCH]:t=>{e.checkIfFTSEnabled()},[r.Ht.SPARQL]:e=>{},[r.Ht.SIMILARITY]:e=>H(e),[r.Ht.RETRIEVAL]:e=>N(e)},q={[r.eA.AUTOCOMPLETE_IRI_DISCOVERY_SEARCH]:e=>W(e),[r.eA.IRI_DISCOVERY_SEARCH]:()=>{}},W=t=>{t.selected||e.agentSettingsForm.$setValidity("autocompleteDisabled",!0),e.checkAutocompleteIndexEnabled(t)},Y=(t=!1,o=!1)=>{e.checkIfFTSEnabled(),e.updateSimilaritySearchPanel(t),e.updateRetrievalConnectorPanel(o),e.checkAutocompleteIndexEnabled()},z=()=>{document.hidden||Y()},X=(e,t)=>{const o=document.getElementById(e);o&&(o.value=t)};document.addEventListener("visibilitychange",z),e.$on("$destroy",()=>{document.removeEventListener("visibilitychange",z)}),V().repositoryId||(e.agentFormModel.repositoryId=null),setTimeout(k,0),t.rendered.then(()=>{X("temperatureSlider",e.agentFormModel.temperature.value),X("topPSlider",e.agentFormModel.topP.value),e.operation!==s.A1.CREATE&&Y()})}angular.module("graphdb.framework.ttyg.controllers.agent-settings-modal",["graphdb.framework.core.services.similarity","graphdb.framework.core.services.connectors","graphdb.framework.rest.repositories.service","graphdb.framework.ttyg.controllers.agent-instructions-explain-modal","graphdb.framework.ttyg.services.externalIntegrationModal","ngTagsInput","graphdb.framework.core.directives.multiselect"]).constant("ExtractionMethodTemplates",{iri_discovery_search:"iri-discovery-search",autocomplete_iri_discovery_search:"autocomplete-iri-discovery-search"}).filter("map",function(){return function(e,t){return Array.isArray(e)?e.map(function(e){return e[t]}):e}}).controller("AgentSettingsModalController",p),p.$inject=["$scope","$uibModalInstance","ModalService","$uibModal","SimilarityService","ConnectorsService","RepositoriesRestService","$sce","toastr","UriUtils","$translate","dialogModel","TTYGContextService","TTYGService","ExtractionMethodTemplates","AutocompleteService","AutocompleteRestService","ExternalIntegrationModalService","productInfo"]}};
2
+ //# sourceMappingURL=95953.1350a9dc14b22372b4e2.bundle.js.map