graphdb-workbench 2.0.0-TR8 → 2.0.0-TR9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/114.282a327015f8ae87918b.bundle.js +1 -1
- package/dist/114.282a327015f8ae87918b.bundle.js.map +1 -1
- package/dist/{12.60db051e76264d3f95b2.bundle.js → 12.5d4da897bdd91e8808fa.bundle.js} +2 -2
- package/dist/12.5d4da897bdd91e8808fa.bundle.js.map +1 -0
- package/dist/13.f62fa8acc6e68826e07a.bundle.js +4 -0
- package/dist/13.f62fa8acc6e68826e07a.bundle.js.map +1 -0
- package/dist/{14.7e9059b5c9c57d952e47.bundle.js → 14.349458c1675f763995a5.bundle.js} +2 -2
- package/dist/{14.7e9059b5c9c57d952e47.bundle.js.map → 14.349458c1675f763995a5.bundle.js.map} +1 -1
- package/dist/{15.02ad5872995df6d6692a.bundle.js → 15.ebce70c05fd90026747b.bundle.js} +2 -2
- package/dist/{15.02ad5872995df6d6692a.bundle.js.map → 15.ebce70c05fd90026747b.bundle.js.map} +1 -1
- package/dist/{17.8bfbe7d08efa149bdb00.bundle.js → 17.f01afdf3b3892d73a3fe.bundle.js} +2 -2
- package/dist/{17.8bfbe7d08efa149bdb00.bundle.js.map → 17.f01afdf3b3892d73a3fe.bundle.js.map} +1 -1
- package/dist/{18.5514f95535bdd2a71d6e.bundle.js → 18.10f65755b64a6534289e.bundle.js} +2 -2
- package/dist/{18.5514f95535bdd2a71d6e.bundle.js.map → 18.10f65755b64a6534289e.bundle.js.map} +1 -1
- package/dist/{21.e75213686a349ae7df89.bundle.js → 21.b6bf0d54a846411501c7.bundle.js} +2 -2
- package/dist/{21.e75213686a349ae7df89.bundle.js.map → 21.b6bf0d54a846411501c7.bundle.js.map} +1 -1
- package/dist/22.e8167eba683605211409.bundle.js +2 -0
- package/dist/22.e8167eba683605211409.bundle.js.map +1 -0
- package/dist/{23.32f2701680565c5d107b.bundle.js → 23.e3ca5b7bb2cee4f9467f.bundle.js} +3 -3
- package/dist/{23.32f2701680565c5d107b.bundle.js.map → 23.e3ca5b7bb2cee4f9467f.bundle.js.map} +1 -1
- package/dist/{24.8dd957168a8be963b393.bundle.js → 24.d5ea0f435b896dc12709.bundle.js} +2 -2
- package/dist/{24.8dd957168a8be963b393.bundle.js.map → 24.d5ea0f435b896dc12709.bundle.js.map} +1 -1
- package/dist/{25.cbe8e59c80330ff6e706.bundle.js → 25.5b3feb79a7be0ca1f4ad.bundle.js} +2 -2
- package/dist/{25.cbe8e59c80330ff6e706.bundle.js.map → 25.5b3feb79a7be0ca1f4ad.bundle.js.map} +1 -1
- package/dist/26.c4983d9f3009f41beb11.bundle.js +2 -0
- package/dist/26.c4983d9f3009f41beb11.bundle.js.map +1 -0
- package/dist/{26.67154910989ca1f563ec.bundle.js → 27.04085d1d15db39ca4a36.bundle.js} +2 -2
- package/dist/{26.67154910989ca1f563ec.bundle.js.map → 27.04085d1d15db39ca4a36.bundle.js.map} +1 -1
- package/dist/{28.b1c15ce7633c501836c5.bundle.js → 28.57b84065ebe40bb45f72.bundle.js} +2 -2
- package/dist/{28.b1c15ce7633c501836c5.bundle.js.map → 28.57b84065ebe40bb45f72.bundle.js.map} +1 -1
- package/dist/{29.66259b8a21bbb5431a06.bundle.js → 29.959ae6b366d15d0ddea9.bundle.js} +2 -2
- package/dist/{29.66259b8a21bbb5431a06.bundle.js.map → 29.959ae6b366d15d0ddea9.bundle.js.map} +1 -1
- package/dist/{3.9eb2c7cced9d8b971c99.bundle.js → 3.26d967229917c7c5cdfb.bundle.js} +2 -2
- package/dist/{3.9eb2c7cced9d8b971c99.bundle.js.map → 3.26d967229917c7c5cdfb.bundle.js.map} +1 -1
- package/dist/{31.d810abed46d7c73ade7f.bundle.js → 31.c808da656c9ee6b7e84e.bundle.js} +2 -2
- package/dist/{31.d810abed46d7c73ade7f.bundle.js.map → 31.c808da656c9ee6b7e84e.bundle.js.map} +1 -1
- package/dist/{32.4f4c8e24d97a9d315335.bundle.js → 32.92b02260015995b4f777.bundle.js} +2 -2
- package/dist/{32.4f4c8e24d97a9d315335.bundle.js.map → 32.92b02260015995b4f777.bundle.js.map} +1 -1
- package/dist/{33.c670eeb3a325251e141f.bundle.js → 33.479162c943ca9a1982aa.bundle.js} +2 -2
- package/dist/{33.c670eeb3a325251e141f.bundle.js.map → 33.479162c943ca9a1982aa.bundle.js.map} +1 -1
- package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js → 35.9c81c96cc1621f9468aa.bundle.js} +2 -2
- package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js.map → 35.9c81c96cc1621f9468aa.bundle.js.map} +1 -1
- package/dist/{36.d444f7ad7724d126da1c.bundle.js → 36.cee947247d32cdcec00e.bundle.js} +2 -2
- package/dist/{36.d444f7ad7724d126da1c.bundle.js.map → 36.cee947247d32cdcec00e.bundle.js.map} +1 -1
- package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js → 37.42e443af5752a63a28fe.bundle.js} +2 -2
- package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js.map → 37.42e443af5752a63a28fe.bundle.js.map} +1 -1
- package/dist/{38.93c5a81548a3294efd9d.bundle.js → 38.5fff5c171cdd2563aad1.bundle.js} +2 -2
- package/dist/{38.93c5a81548a3294efd9d.bundle.js.map → 38.5fff5c171cdd2563aad1.bundle.js.map} +1 -1
- package/dist/{39.30dddbc6461137994eb4.bundle.js → 39.91c49550b6e2d11104fa.bundle.js} +2 -2
- package/dist/{39.30dddbc6461137994eb4.bundle.js.map → 39.91c49550b6e2d11104fa.bundle.js.map} +1 -1
- package/dist/4.786e6f1de67e5c6289a3.bundle.js +2 -0
- package/dist/4.786e6f1de67e5c6289a3.bundle.js.map +1 -0
- package/dist/{40.ae6db480b8323937451c.bundle.js → 40.a7e0220eb0c8a125abde.bundle.js} +2 -2
- package/dist/{40.ae6db480b8323937451c.bundle.js.map → 40.a7e0220eb0c8a125abde.bundle.js.map} +1 -1
- package/dist/41.1258b9502ba9383894d7.bundle.js +2 -0
- package/dist/{41.ba8cb2fb7f46ccb2ab28.bundle.js.map → 41.1258b9502ba9383894d7.bundle.js.map} +1 -1
- package/dist/{43.8d096939ee87946076e0.bundle.js → 43.86f9220f4f79feec5b27.bundle.js} +2 -2
- package/dist/{43.8d096939ee87946076e0.bundle.js.map → 43.86f9220f4f79feec5b27.bundle.js.map} +1 -1
- package/dist/{47.92a64d48c14c1ae82934.bundle.js → 47.fca0edd51becf34c06b7.bundle.js} +2 -2
- package/dist/{47.92a64d48c14c1ae82934.bundle.js.map → 47.fca0edd51becf34c06b7.bundle.js.map} +1 -1
- package/dist/{48.4b57a948edab2d3b9c55.bundle.js → 48.e495edf3c48e1b2fc052.bundle.js} +2 -2
- package/dist/{48.4b57a948edab2d3b9c55.bundle.js.map → 48.e495edf3c48e1b2fc052.bundle.js.map} +1 -1
- package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js → 53.c29678970b0cb8aa4b47.bundle.js} +2 -2
- package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js.map → 53.c29678970b0cb8aa4b47.bundle.js.map} +1 -1
- package/dist/{55.751acc0e54255fa3ace7.bundle.js → 55.427172af3ba7612f747a.bundle.js} +2 -2
- package/dist/{55.751acc0e54255fa3ace7.bundle.js.map → 55.427172af3ba7612f747a.bundle.js.map} +1 -1
- package/dist/{57.677c1eebf6a003639fff.bundle.js → 57.41b09f5fa3ee623aab83.bundle.js} +2 -2
- package/dist/{57.677c1eebf6a003639fff.bundle.js.map → 57.41b09f5fa3ee623aab83.bundle.js.map} +1 -1
- package/dist/{58.2c460e480eefb1a02aea.bundle.js → 58.ce5a29dded68f58c53b4.bundle.js} +2 -2
- package/dist/{58.2c460e480eefb1a02aea.bundle.js.map → 58.ce5a29dded68f58c53b4.bundle.js.map} +1 -1
- package/dist/{59.b8e9155530acba27a6fa.bundle.js → 59.10efdeff3a8ef9e5733d.bundle.js} +2 -2
- package/dist/{59.b8e9155530acba27a6fa.bundle.js.map → 59.10efdeff3a8ef9e5733d.bundle.js.map} +1 -1
- package/dist/{60.27e731a670680751538c.bundle.js → 60.97fb695857f6241ae612.bundle.js} +2 -2
- package/dist/{60.27e731a670680751538c.bundle.js.map → 60.97fb695857f6241ae612.bundle.js.map} +1 -1
- package/dist/{61.fce8a2436742c2e20032.bundle.js → 61.5d71ec3fe0cda230482b.bundle.js} +2 -2
- package/dist/{61.fce8a2436742c2e20032.bundle.js.map → 61.5d71ec3fe0cda230482b.bundle.js.map} +1 -1
- package/dist/{62.9e101a1894ee0f9a48be.bundle.js → 62.d53d104f74f9fbdacb35.bundle.js} +2 -2
- package/dist/{62.9e101a1894ee0f9a48be.bundle.js.map → 62.d53d104f74f9fbdacb35.bundle.js.map} +1 -1
- package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js → 63.46514dd9cf756bd0e831.bundle.js} +2 -2
- package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js.map → 63.46514dd9cf756bd0e831.bundle.js.map} +1 -1
- package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js → 65.401f44aaddb8aec6be1e.bundle.js} +2 -2
- package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js.map → 65.401f44aaddb8aec6be1e.bundle.js.map} +1 -1
- package/dist/{66.cf37216fb6f8e53cef2b.bundle.js → 66.7a1e4093247d23b65387.bundle.js} +2 -2
- package/dist/{66.cf37216fb6f8e53cef2b.bundle.js.map → 66.7a1e4093247d23b65387.bundle.js.map} +1 -1
- package/dist/{69.60ff11762016829be80d.bundle.js → 69.1944a1afebe9115c9262.bundle.js} +2 -2
- package/dist/{69.60ff11762016829be80d.bundle.js.map → 69.1944a1afebe9115c9262.bundle.js.map} +1 -1
- package/dist/{70.f86421bf02a9bfda5b95.bundle.js → 70.84500509fe2b0d19ab93.bundle.js} +2 -2
- package/dist/{70.f86421bf02a9bfda5b95.bundle.js.map → 70.84500509fe2b0d19ab93.bundle.js.map} +1 -1
- package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js → 76.2fa18e115678c4e24682.bundle.js} +2 -2
- package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js.map → 76.2fa18e115678c4e24682.bundle.js.map} +1 -1
- package/dist/{8.66013fc0c58811b51903.bundle.js → 8.7209929899c18f8a4580.bundle.js} +2 -2
- package/dist/{8.66013fc0c58811b51903.bundle.js.map → 8.7209929899c18f8a4580.bundle.js.map} +1 -1
- package/dist/{80.37504cf0c1e5ad897478.bundle.js → 80.83e56da7d7a69fc34eed.bundle.js} +2 -2
- package/dist/{80.37504cf0c1e5ad897478.bundle.js.map → 80.83e56da7d7a69fc34eed.bundle.js.map} +1 -1
- package/dist/{82.9b4d4dc326055aa47e04.bundle.js → 82.74d50036c210cb10b7f5.bundle.js} +2 -2
- package/dist/{82.9b4d4dc326055aa47e04.bundle.js.map → 82.74d50036c210cb10b7f5.bundle.js.map} +1 -1
- package/dist/{84.fab513b88806deb0981a.bundle.js → 84.7f42dd9d7dc01baaf465.bundle.js} +2 -2
- package/dist/{84.fab513b88806deb0981a.bundle.js.map → 84.7f42dd9d7dc01baaf465.bundle.js.map} +1 -1
- package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js → 86.581cbc54b6c6b6ea9f19.bundle.js} +2 -2
- package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js.map → 86.581cbc54b6c6b6ea9f19.bundle.js.map} +1 -1
- package/dist/{87.765567c0cbe89cbdb03c.bundle.js → 87.3606797303ead8dc2879.bundle.js} +2 -2
- package/dist/{87.765567c0cbe89cbdb03c.bundle.js.map → 87.3606797303ead8dc2879.bundle.js.map} +1 -1
- package/dist/{88.50c46652774325bffad3.bundle.js → 88.f5b8f83e57c9bea3c137.bundle.js} +2 -2
- package/dist/{88.50c46652774325bffad3.bundle.js.map → 88.f5b8f83e57c9bea3c137.bundle.js.map} +1 -1
- package/dist/{89.91c58e1902b0f444b068.bundle.js → 89.f9b4c4ddff2c0b5b70f7.bundle.js} +2 -2
- package/dist/{89.91c58e1902b0f444b068.bundle.js.map → 89.f9b4c4ddff2c0b5b70f7.bundle.js.map} +1 -1
- package/dist/{9.16a945b967e9a52bf535.bundle.js → 9.6a95a5c1eec963050422.bundle.js} +2 -2
- package/dist/{9.16a945b967e9a52bf535.bundle.js.map → 9.6a95a5c1eec963050422.bundle.js.map} +1 -1
- package/dist/{90.e12e77898d6341e59d8f.bundle.js → 90.4d42ba583fbc1d63d3d2.bundle.js} +2 -2
- package/dist/{90.e12e77898d6341e59d8f.bundle.js.map → 90.4d42ba583fbc1d63d3d2.bundle.js.map} +1 -1
- package/dist/95.1f83b03f48326a6cec45.bundle.js +2 -0
- package/dist/{95.decfcd3477dee353025b.bundle.js.map → 95.1f83b03f48326a6cec45.bundle.js.map} +1 -1
- package/dist/{bundle.e787556c9b592367c35c.bundle.js → bundle.1a982e7b3e2d9d06a802.bundle.js} +5 -5
- package/dist/{bundle.e787556c9b592367c35c.bundle.js.map → bundle.1a982e7b3e2d9d06a802.bundle.js.map} +1 -1
- package/dist/index.html +3 -3
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/clusterInfo.html +1 -1
- package/dist/pages/create-index.html +4 -4
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +11 -11
- package/dist/pages/graphs-visualizations.html +14 -8
- package/dist/pages/import.html +1 -1
- package/dist/pages/jdbc-create.html +5 -5
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +2 -2
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +2 -2
- package/dist/pages/repository.html +2 -2
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-template-create.html +5 -5
- package/dist/pages/sparql.html +3 -3
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger/index.html +25 -25
- package/package.json +1 -1
- package/dist/12.60db051e76264d3f95b2.bundle.js.map +0 -1
- package/dist/13.1419a81a33174950a34c.bundle.js +0 -4
- package/dist/13.1419a81a33174950a34c.bundle.js.map +0 -1
- package/dist/22.a3b52347055f1adac9ce.bundle.js +0 -2
- package/dist/22.a3b52347055f1adac9ce.bundle.js.map +0 -1
- package/dist/27.61bd08d0e926fe471a91.bundle.js +0 -2
- package/dist/27.61bd08d0e926fe471a91.bundle.js.map +0 -1
- package/dist/4.6a8bdb4c9048dd910bfd.bundle.js +0 -2
- package/dist/4.6a8bdb4c9048dd910bfd.bundle.js.map +0 -1
- package/dist/41.ba8cb2fb7f46ccb2ab28.bundle.js +0 -2
- package/dist/95.decfcd3477dee353025b.bundle.js +0 -2
package/README.md
CHANGED
|
@@ -37,7 +37,12 @@ changes and continuously re-executing the tests.
|
|
|
37
37
|
Cypress is used as a framework for writing functional tests which cover concrete UI components as
|
|
38
38
|
well as whole acceptance scenarios. The tests are executed against a GraphDB version as defined in
|
|
39
39
|
`package.json#versions.graphdb` which is run in a docker container.
|
|
40
|
-
|
|
40
|
+
|
|
41
|
+
> Some tests may require a GraphDB Enterprise Edition license file. The file must be named graphdb.license
|
|
42
|
+
and put in the `test-cypress/fixtures` folder. In case you don't have such license, you can ignore the
|
|
43
|
+
failing tests.
|
|
44
|
+
|
|
45
|
+
|
|
41
46
|
There are two options for running the tests. One is a headless execution and the second is through
|
|
42
47
|
the Cypress's dashboard application. Follow the steps described below:
|
|
43
48
|
* Ensure a GraphDB instance is running on `localhost:7200`. One can be run by executing
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{168:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.0.0-
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{168:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.0.0-TR9" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n tooltip="Close search" tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n tooltip="Search RDF resources"\n tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
|
|
2
2
|
//# sourceMappingURL=114.282a327015f8ae87918b.bundle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,k7CAGP,OAAOA","file":"114.282a327015f8ae87918b.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=2.0.0-
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,k7CAGP,OAAOA","file":"114.282a327015f8ae87918b.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=2.0.0-TR9\" rel=\"stylesheet\"/>\\n\\n<div ng-if=\"getActiveRepository() && hasActiveLocation() && isNotLoading()\" ng-cloak>\\n <div id=\"search-box\" class=\"card search-rdf-input\" ng-keydown=\"onKeyDown($event)\" ng-if=\"!isHomePage()\">\\n <div class=\"card-block\">\\n <search-resource-input namespacespromise=\"getNamespacesPromise\"\\n autocompletepromisestatus=\"getAutocompletePromise\"\\n empty=\"empty\"\\n open-in-new-tab=\"true\"\\n preserve-search=\"true\"\\n radio-buttons=\"true\"\\n clear-input-icon=\"true\">\\n </search-resource-input>\\n <button class=\"btn btn-link close-rdf-search-btn\"\\n tooltip=\"Close search\" tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"hideInput()\">\\n <i class=\"icon-close icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n </div>\\n </div>\\n <button class=\"btn btn-link search-rdf-btn\"\\n tooltip=\"Search RDF resources\"\\n tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"showInput()\">\\n <i class=\"icon-search icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{85:function(e,r,t){"use strict";t.r(r);t(2),t(9),t(17),t(18);var s=t(0);const o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","toastr"]),n=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},o={};for(let n=0;n<e.length;n++){const i=e[n];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,o[s]=o[s]||{},"READ_REPO"===r?o[s].read=!0:"WRITE_REPO"===r&&(o[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:o}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope",function(e,r,t,s,o,n,i,a){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},i.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):i.search().expired&&t.error("Your authentication token has expired. Please login again.","Login error"),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(r,t,o){s.authenticate(r,o("Authorization"));const u=n((function(){a.returnToUrl?i.url(a.returnToUrl):i.path("/")}),500);e.$on("$destroy",(function(){n.cancel(u)}))})).error((function(r,s){if(401===s)t.error("Wrong credentials!","Error"),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$modal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService",function(e,r,t,s,o,i,a,u){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){u.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=n(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=i((function(){s.location.reload()}),500);e.$on("$destroy",(function(){i.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?u.getFreeAccess().then((function(s){let n=s.data.authorities,i=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return e.id}));return _.each(n,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:i}}}}).result.then((function(e){n=e.authorities,i=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),n,i,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){a.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the user '"+r+"'?",warning:!0}).result.then((function(){e.loader=!0,u.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$modalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")}}]),o.controller("CommonUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth",function(e,r,t,o,n,i,a){e.isAdmin=function(){return a.hasRole(s.UserRole.ROLE_ADMIN)},e.hasExternalAuth=function(){return a.hasExternalAuth()},e.hasEditRestrictions=function(){return e.user&&e.user.username===s.UserType.ADMIN},e.isOverrideAuth=function(){return a.isDefaultAuthEnabled()},e.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(e)},e.hasReadPermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.READ_REPO[r]||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&(e.grantedAuthorities.READ_REPO["*"]||e.grantedAuthorities.WRITE_REPO["*"])},e.hasWritePermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&e.grantedAuthorities.WRITE_REPO["*"]},e.readCheckDisabled=function(r){return e.hasWritePermission(r)||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.READ_REPO["*"]||e.hasEditRestrictions()},e.writeCheckDisabled=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.WRITE_REPO["*"]||e.hasEditRestrictions()},e.userType=s.UserType.USER,e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},e.validatePassword=function(){return e.noPassword?(e.passwordError="",e.confirmPasswordError="",!0):e.user.password!==e.user.confirmpassword?(e.user.password?(e.passwordError="",e.confirmPasswordError="Confirm password!"):(e.passwordError="Enter password!",e.confirmPasswordError=""),!1):(e.passwordError="",e.confirmPasswordError="",!0)},e.isLocalAuthentication=function(){return"Local"===a.getAuthImplementation()},e.updateUser=function(){if(!e.validateForm())return!1;e.isLocalAuthentication()&&e.setGrantedAuthorities(),e.repositoryCheckError||e.updateUserHttp()},e.setNoPassword=function(){e.noPassword&&(e.user.password="",e.user.confirmpassword="",e.passwordError="",e.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,s,o,n,i,a,u){angular.extend(this,a("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=o((function(){s.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.pageTitle="Create new user",e.passwordPlaceholder="Password",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.createUser()},e.createUserHttp=function(){e.loader=!0,u.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" has been created.");const r=o((function(){e.loader=!1,s.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError="Enter username!",r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError="Enter password!",r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError="Confirm password!",r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,o,i,a,u,c,p,d){angular.extend(this,p("CommonUserCtrl",{$scope:e})),e.mode="edit",e.saveButtonText="Save",e.goBack=function(){const r=a((function(){o.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=i,e.pageTitle="Edit user: "+e.params.userId,e.passwordPlaceholder="New password",e.userType=s.UserType.USER;const l={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){d.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||l,e.userType=s.UserType.USER;const t=n(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,"Error")}))},e.getUserData(),e.submit=function(){e.updateUser()},e.updateUserHttp=function(){e.loader=!0,d.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" was updated.");const r=a((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),e.user.username===c.getPrincipal().username&&(c.getPrincipal().appSettings=e.user.appSettings)})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService",function(e,r,t){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText="Save",e.goBack=function(){const r=o((function(){t.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.currentUserData=function(){return i.getPrincipal()},e.updateCurrentUserData=function(){_.assign(i.getPrincipal(),e.userData)},e.redirectAdmin=function(){e.currentUserData()||a.redirectToLogin()},e.pageTitle="Settings",e.passwordPlaceholder="New password",e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const d=function(r){r.userData=angular.copy(r.currentUserData()),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=n(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.currentUserData()?d(e):e.$on("securityInit",(function(e){e.currentScope.redirectAdmin(),d(e.currentScope)})),e.loader=!1,e.submit=function(){const r=n(e.userData.authorities);e.userType=r.userType,e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Save user settings",message:"If you unset the password and then enable security, that user will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,c.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success("The user "+e.user.username+" was updated.");const s=o((function(){e.loader=!1,t.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(s)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()}}]),o.controller("DeleteUserCtrl",["$scope","$modalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
|
|
2
|
-
//# sourceMappingURL=12.
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{85:function(e,r,t){"use strict";t.r(r);t(2),t(9),t(17),t(18);var s=t(0);const o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","toastr"]),n=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},o={};for(let n=0;n<e.length;n++){const i=e[n];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,o[s]=o[s]||{},"READ_REPO"===r?o[s].read=!0:"WRITE_REPO"===r&&(o[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:o}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope",function(e,r,t,s,o,n,i,a){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},i.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):i.search().expired&&t.error("Your authentication token has expired. Please login again.","Login error"),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(r,t,o){s.authenticate(r,o("Authorization"));const u=n((function(){a.returnToUrl?i.url(a.returnToUrl):i.path("/")}),500);e.$on("$destroy",(function(){n.cancel(u)}))})).error((function(r,s){if(401===s)t.error("Wrong credentials!","Error"),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$modal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService",function(e,r,t,s,o,i,a,u){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){u.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=n(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=i((function(){s.location.reload()}),500);e.$on("$destroy",(function(){i.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?u.getFreeAccess().then((function(s){let n=s.data.authorities,i=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return e.id}));return _.each(n,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:i}}}}).result.then((function(e){n=e.authorities,i=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),n,i,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){a.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the user '"+r+"'?",warning:!0}).result.then((function(){e.loader=!0,u.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$modalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")}}]),o.controller("CommonUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth",function(e,r,t,o,n,i,a){e.isAdmin=function(){return a.hasRole(s.UserRole.ROLE_ADMIN)},e.hasExternalAuth=function(){return a.hasExternalAuth()},e.hasEditRestrictions=function(){return e.user&&e.user.username===s.UserType.ADMIN},e.isOverrideAuth=function(){return a.isDefaultAuthEnabled()},e.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(e)},e.hasReadPermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.READ_REPO[r]||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&(e.grantedAuthorities.READ_REPO["*"]||e.grantedAuthorities.WRITE_REPO["*"])},e.hasWritePermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&e.grantedAuthorities.WRITE_REPO["*"]},e.readCheckDisabled=function(r){return e.hasWritePermission(r)||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.READ_REPO["*"]||e.hasEditRestrictions()},e.writeCheckDisabled=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.WRITE_REPO["*"]||e.hasEditRestrictions()},e.userType=s.UserType.USER,e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},e.validatePassword=function(){return e.noPassword?(e.passwordError="",e.confirmPasswordError="",!0):e.user.password!==e.user.confirmpassword?(e.user.password?(e.passwordError="",e.confirmPasswordError="Confirm password!"):(e.passwordError="Enter password!",e.confirmPasswordError=""),!1):(e.passwordError="",e.confirmPasswordError="",!0)},e.isLocalAuthentication=function(){return"Local"===a.getAuthImplementation()},e.updateUser=function(){if(!e.validateForm())return!1;e.isLocalAuthentication()&&e.setGrantedAuthorities(),e.repositoryCheckError||e.updateUserHttp()},e.setNoPassword=function(){e.noPassword&&(e.user.password="",e.user.confirmpassword="",e.passwordError="",e.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService",function(e,r,t,o,n,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=n((function(){o.history.back()}),100);e.$on("$destroy",(function(){n.cancel(r)}))},e.pageTitle="Create new user",e.passwordPlaceholder="Password",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.UserType.ADMIN?p.openSimpleModal({title:"Create administrator",message:"If the password is unset and security is enabled, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.createUser()})):e.createUser()},e.createUserHttp=function(){e.loader=!0,c.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" has been created.");const r=n((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){n.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError="Enter username!",r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError="Enter password!",r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError="Confirm password!",r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p,d,l){angular.extend(this,p("CommonUserCtrl",{$scope:e})),e.mode="edit",e.saveButtonText="Save",e.goBack=function(){const r=a((function(){o.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=i,e.pageTitle="Edit user: "+e.params.userId,e.passwordPlaceholder="New password",e.userType=s.UserType.USER;const E={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){d.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||E,e.userType=s.UserType.USER;const t=n(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,"Error")}))},e.getUserData(),e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?l.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,d.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" was updated.");const r=a((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),e.user.username===c.getPrincipal().username&&(c.getPrincipal().appSettings=e.user.appSettings)})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService",function(e,r,t){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText="Save",e.goBack=function(){const r=o((function(){t.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.currentUserData=function(){return i.getPrincipal()},e.updateCurrentUserData=function(){_.assign(i.getPrincipal(),e.userData)},e.redirectAdmin=function(){e.currentUserData()||a.redirectToLogin()},e.pageTitle="Settings",e.passwordPlaceholder="New password",e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const d=function(r){r.userData=angular.copy(r.currentUserData()),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=n(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.currentUserData()?d(e):e.$on("securityInit",(function(e){e.currentScope.redirectAdmin(),d(e.currentScope)})),e.loader=!1,e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,c.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success("The user "+e.user.username+" was updated.");const s=o((function(){e.loader=!1,t.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(s)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()}}]),o.controller("DeleteUserCtrl",["$scope","$modalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
|
|
2
|
+
//# sourceMappingURL=12.5d4da897bdd91e8808fa.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/security/controllers.js"],"names":["securityCtrl","angular","module","parseAuthorities","authorities","userType","USER","grantedAuthorities","repositories","i","length","role","ROLE_ADMIN","ADMIN","ROLE_REPO_MANAGER","REPO_MANAGER","ROLE_USER","indexOf","index","op","substr","repo","read","write","userTypeDescription","getUserRoleName","controller","$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope","username","password","loginWithOpenID","loginOpenID","search","noaccess","error","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","encodeURIComponent","headers","success","data","status","authenticate","timer","returnToUrl","path","$on","cancel","wrongCredentials","msg","getError","$modal","$window","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","toggleSecurity","location","reload","toggleFreeAccess","updateFreeAccess","getFreeAccess","then","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","id","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","warning","deleteUser","name","$modalInstance","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","WRITE_REPO","push","READ_REPO","close","dismiss","isAdmin","hasRole","hasEditRestrictions","user","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","arguments","authority","hasReadPermission","repositoryId","hasWritePermission","readCheckDisabled","writeCheckDisabled","validatePassword","noPassword","passwordError","confirmPasswordError","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","$controller","extend","this","mode","saveButtonText","goBack","history","back","pageTitle","passwordPlaceholder","submit","createUser","createUserHttp","pass","usernameError","$routeParams","params","userId","defaultUserSettings","getUserData","getUser","userData","external","undefined","getPrincipal","debugMapping","mapping","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","map","filter","reverse","orderBy","p","currentUserData","updateCurrentUserData","assign","redirectAdmin","redirectToLogin","initUserData","scope","copy","currentScope","updateUserData"],"mappings":"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","file":"12.5d4da897bdd91e8808fa.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/openid-auth.service';\nimport 'angular/rest/security.rest.service';\nimport {UserUtils, UserRole, UserType} from 'angular/utils/user-utils';\n\nconst SYSTEM_REPO = 'SYSTEM';\nconst READ_REPO = 'READ_REPO';\nconst READ_REPO_PREFIX = 'READ_REPO_';\nconst WRITE_REPO = 'WRITE_REPO';\nconst WRITE_REPO_PREFIX = 'WRITE_REPO_';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.openIDService',\n 'graphdb.framework.rest.security.service',\n 'toastr'\n];\n\nconst securityCtrl = angular.module('graphdb.framework.security.controllers', modules);\n\nconst setGrantedAuthorities = function ($scope) {\n function pushAuthority() {\n for (let i = 0; i < arguments.length; i++) {\n const authority = arguments[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 }\n};\n\nconst parseAuthorities = function (authorities) {\n let userType = UserType.USER;\n const grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n const repositories = {};\n for (let i = 0; i < authorities.length; i++) {\n const role = authorities[i];\n if (role === UserRole.ROLE_ADMIN) {\n userType = UserType.ADMIN;\n } else if (role === UserRole.ROLE_REPO_MANAGER) {\n if (userType !== UserType.ADMIN) {\n userType = UserType.REPO_MANAGER;\n }\n } else if (role === UserRole.ROLE_USER) {\n userType = UserType.USER;\n } else if (role.indexOf('ROLE_') !== 0) {\n const index = role.indexOf('_', role.indexOf('_') + 1);\n const op = role.substr(0, index);\n const repo = role.substr(index + 1);\n grantedAuthorities[op][repo] = true;\n repositories[repo] = repositories[repo] || {};\n if (op === READ_REPO) {\n repositories[repo].read = true;\n } else if (op === WRITE_REPO) {\n repositories[repo].write = true;\n }\n }\n }\n\n return {\n userType: userType,\n userTypeDescription: UserUtils.getUserRoleName(userType),\n grantedAuthorities: grantedAuthorities,\n repositories: repositories\n };\n};\n\nsecurityCtrl.controller('LoginCtrl', ['$scope', '$http', 'toastr', '$jwtAuth', '$openIDAuth', '$timeout', '$location', '$rootScope',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $timeout, $location, $rootScope) {\n $scope.username = '';\n $scope.password = '';\n\n $scope.loginWithOpenID = function() {\n $jwtAuth.loginOpenID();\n };\n\n if ($location.search().noaccess) {\n toastr.error('User has no access rights or configuration error.', 'Login error');\n } else if ($location.search().expired) {\n toastr.error('Your authentication token has expired. Please login again.', 'Login error');\n }\n\n $scope.isGDBLoginEnabled = function() {\n return $jwtAuth.passwordLoginEnabled;\n };\n\n $scope.isOpenIDEnabled = function() {\n return $jwtAuth.openIDEnabled;\n };\n\n $scope.login = function () {\n $http({\n method: 'POST',\n url: 'rest/login/' + encodeURIComponent($scope.username),\n headers: {\n 'X-GraphDB-Password': $scope.password\n }\n }).success(function (data, status, headers) {\n $jwtAuth.authenticate(data, headers('Authorization'));\n const timer = $timeout(function () {\n if ($rootScope.returnToUrl) {\n // go back to remembered url\n $location.url($rootScope.returnToUrl);\n } else {\n // no remembered url, go to home\n $location.path('/');\n }\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data, status) {\n if (status === 401) {\n toastr.error('Wrong credentials!', 'Error');\n $scope.wrongCredentials = true;\n $scope.username = '';\n $scope.password = '';\n } else {\n const msg = getError(data);\n toastr.error(msg, status);\n }\n\n });\n };\n }]);\n\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$modal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService',\n function ($scope, $modal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityRestService) {\n\n $scope.loader = true;\n $scope.securityEnabled = function () {\n return $jwtAuth.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 $jwtAuth.isFreeAccessEnabled();\n };\n $scope.getUsers = function () {\n SecurityRestService.getUsers()\n .success(function (data) {\n $scope.users = data;\n for (let i = 0; i < $scope.users.length; i++) {\n const pa = parseAuthorities($scope.users[i].grantedAuthorities);\n $scope.users[i].userType = pa.userType;\n $scope.users[i].userTypeDescription = pa.userTypeDescription;\n $scope.users[i].repositories = pa.repositories;\n }\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, '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 $jwtAuth.toggleSecurity(!$jwtAuth.isSecurityEnabled());\n if ($jwtAuth.isSecurityEnabled()) {\n const timer = $timeout(function () {\n $window.location.reload();\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n };\n\n $scope.toggleFreeAccess = function (updateFreeAccess) {\n if (!$jwtAuth.isFreeAccessEnabled() || ($jwtAuth.isFreeAccessEnabled() && updateFreeAccess)) {\n SecurityRestService.getFreeAccess().then(function (res) {\n let authorities = res.data.authorities;\n let appSettings = res.data.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 const modalInstance = $modal.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 };\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 r.id;\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 }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings\n };\n }\n }\n });\n modalInstance.result.then(function (data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n $jwtAuth.toggleFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), authorities, appSettings, updateFreeAccess);\n });\n });\n } else {\n $jwtAuth.toggleFreeAccess(!$jwtAuth.isFreeAccessEnabled(), []);\n }\n };\n\n $scope.editFreeAccess = function () {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function (username) {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: 'Are you sure you want to delete the user \\'' + username + '\\'?',\n warning: true\n }).result.then(function () {\n $scope.loader = true;\n SecurityRestService.deleteUser(username).success(function () {\n $scope.getUsers();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\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\nsecurityCtrl.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$modalInstance', 'data', '$rootScope',\n function ($scope, $http, $modalInstance, data, $rootScope) {\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 if (!$scope.repositoryCheckError) {\n $modalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }]);\n\nsecurityCtrl.controller('CommonUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth) {\n\n $scope.isAdmin = function () {\n return $jwtAuth.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 setGrantedAuthorities($scope);\n };\n\n $scope.hasReadPermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.READ_REPO[repositoryId]\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO\n && ($scope.grantedAuthorities.READ_REPO['*'] || $scope.grantedAuthorities.WRITE_REPO['*']);\n };\n\n $scope.hasWritePermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*'];\n };\n\n $scope.readCheckDisabled = function (repositoryId) {\n return $scope.hasWritePermission(repositoryId)\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\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 = 'Enter password!';\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '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\nsecurityCtrl.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'add';\n $scope.saveButtonText = 'Create';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.pageTitle = 'Create new user';\n $scope.passwordPlaceholder = 'Password';\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: 'Create administrator',\n message: 'If the password is unset and security is enabled, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\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 SecurityRestService.createUser({\n username: $scope.user.username,\n pass: $scope.user.password,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' has been created.');\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 }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, '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 = '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 = '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 = 'Confirm password!';\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityCtrl.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'edit';\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.params = $routeParams;\n $scope.pageTitle = 'Edit user: ' + $scope.params.userId;\n $scope.passwordPlaceholder = '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 (!$jwtAuth.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function () {\n SecurityRestService.getUser($scope.params.userId).success(function (data) {\n $scope.userData = data;\n $scope.user = {username: $scope.userData.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = $scope.userData.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = UserType.USER;\n const pa = parseAuthorities(data.grantedAuthorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, '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: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\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 SecurityRestService.updateUser({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' was updated.');\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 if ($scope.user.username === $jwtAuth.getPrincipal().username) {\n $jwtAuth.getPrincipal().appSettings = $scope.user.appSettings;\n }\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityRestService',\n function ($scope, toastr, SecurityRestService) {\n\n $scope.debugMapping = function (role, mapping) {\n const method = mapping.split(':');\n SecurityRestService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0]\n });\n };\n\n const loadRoles = function () {\n SecurityRestService.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, 'Error');\n });\n };\n\n $scope.$on('repositoryIsSet', function () {\n loadRoles();\n });\n}]);\n\nsecurityCtrl.controller('ChangeUserPasswordSettingsCtrl', ['$scope', 'toastr', '$window', '$timeout', '$jwtAuth', '$rootScope', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, toastr, $window, $timeout, $jwtAuth, $rootScope, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'settings';\n $scope.hasEditRestrictions = function () {\n return true;\n };\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.currentUserData = function () {\n return $jwtAuth.getPrincipal();\n };\n\n $scope.updateCurrentUserData = function () {\n _.assign($jwtAuth.getPrincipal(), $scope.userData);\n };\n\n //call it as a function so I can make test on it\n $scope.redirectAdmin = function () {\n if (!$scope.currentUserData()) {\n $rootScope.redirectToLogin();\n }\n };\n\n $scope.pageTitle = 'Settings';\n $scope.passwordPlaceholder = 'New password';\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n const initUserData = function (scope) {\n // Copy needed so that Cancel would work correctly, need to call updateCurrentUserData on OK\n scope.userData = angular.copy(scope.currentUserData());\n scope.user = {username: scope.userData.username};\n scope.user.password = '';\n scope.user.confirmpassword = '';\n scope.user.external = scope.userData.external;\n scope.user.appSettings = scope.userData.appSettings;\n // For backward compatibility\n if (scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] === undefined) {\n scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] = true;\n }\n\n const pa = parseAuthorities(scope.userData.authorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n };\n\n if ($scope.currentUserData()) {\n initUserData($scope);\n } else {\n $scope.$on('securityInit', function (scope) {\n scope.currentScope.redirectAdmin();\n initUserData(scope.currentScope);\n });\n }\n\n $scope.loader = false;\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\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 SecurityRestService.updateUserData({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings\n }).success(function () {\n $scope.updateCurrentUserData();\n toastr.success('The user ' + $scope.user.username + ' was updated.');\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 }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n $scope.updateUserHttp();\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('DeleteUserCtrl', ['$scope', '$modalInstance', 'username', function ($scope, $modalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function () {\n $modalInstance.close();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
|