graphdb-workbench 2.0.0-M3-RC3 → 2.0.0-RC2

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 (180) hide show
  1. package/dist/{10.91f8aa0494201bb12b25.bundle.js → 10.eab0a417fa2f2831905e.bundle.js} +2 -2
  2. package/dist/10.eab0a417fa2f2831905e.bundle.js.map +1 -0
  3. package/dist/{104.42f8ece72006965c902d.bundle.js → 104.7e16b2863108db706fe7.bundle.js} +2 -2
  4. package/dist/104.7e16b2863108db706fe7.bundle.js.map +1 -0
  5. package/dist/{11.32f5a72d66bb699e9e8b.bundle.js → 11.3957302d7a301df30dd1.bundle.js} +2 -2
  6. package/dist/11.3957302d7a301df30dd1.bundle.js.map +1 -0
  7. package/dist/111.ceb781497f3c5dfd1446.bundle.js +2 -0
  8. package/dist/111.ceb781497f3c5dfd1446.bundle.js.map +1 -0
  9. package/dist/112.e34c26d9d3b4b6deae17.bundle.js +2 -0
  10. package/dist/112.e34c26d9d3b4b6deae17.bundle.js.map +1 -0
  11. package/dist/113.733877f9f73d3283f528.bundle.js +2 -0
  12. package/dist/113.733877f9f73d3283f528.bundle.js.map +1 -0
  13. package/dist/114.0e270e77a2a557167988.bundle.js +2 -0
  14. package/dist/114.0e270e77a2a557167988.bundle.js.map +1 -0
  15. package/dist/115.732830fed3ff34691def.bundle.js +2 -0
  16. package/dist/115.732830fed3ff34691def.bundle.js.map +1 -0
  17. package/dist/116.7e8b202c5d712bddaaec.bundle.js +2 -0
  18. package/dist/116.7e8b202c5d712bddaaec.bundle.js.map +1 -0
  19. package/dist/119.2d6b15bc87de2533599c.bundle.js +2 -0
  20. package/dist/119.2d6b15bc87de2533599c.bundle.js.map +1 -0
  21. package/dist/120.80843604737b7c260788.bundle.js +1 -1
  22. package/dist/120.80843604737b7c260788.bundle.js.map +1 -1
  23. package/dist/123.51ad0d8338eda5a93b06.bundle.js +2 -0
  24. package/dist/123.51ad0d8338eda5a93b06.bundle.js.map +1 -0
  25. package/dist/{128.ce61f3a6925ddbc8f612.bundle.js → 128.7dae6369a26090e10276.bundle.js} +2 -2
  26. package/dist/{128.ce61f3a6925ddbc8f612.bundle.js.map → 128.7dae6369a26090e10276.bundle.js.map} +1 -1
  27. package/dist/130.ecb7509cb6324abf4071.bundle.js +2 -0
  28. package/dist/130.ecb7509cb6324abf4071.bundle.js.map +1 -0
  29. package/dist/138.5375ebd499e5c4977038.bundle.js +2 -0
  30. package/dist/138.5375ebd499e5c4977038.bundle.js.map +1 -0
  31. package/dist/149.7089a654a1902207a2c8.bundle.js +2 -0
  32. package/dist/149.7089a654a1902207a2c8.bundle.js.map +1 -0
  33. package/dist/{151.2dae840b241433fbe1d8.bundle.js → 151.2104ac0782ac43e2e7d2.bundle.js} +2 -2
  34. package/dist/{151.2dae840b241433fbe1d8.bundle.js.map → 151.2104ac0782ac43e2e7d2.bundle.js.map} +1 -1
  35. package/dist/152.78baa98e298c18358c55.bundle.js +2 -0
  36. package/dist/152.78baa98e298c18358c55.bundle.js.map +1 -0
  37. package/dist/153.fd957ea6d6ea34d3feb2.bundle.js +2 -0
  38. package/dist/153.fd957ea6d6ea34d3feb2.bundle.js.map +1 -0
  39. package/dist/18.44723ea06155c72f46ae.bundle.js +1 -1
  40. package/dist/18.44723ea06155c72f46ae.bundle.js.map +1 -1
  41. package/dist/{2.3a65d34c46b96a708181.bundle.js → 2.6e340067f6eae14345cd.bundle.js} +2 -2
  42. package/dist/2.6e340067f6eae14345cd.bundle.js.map +1 -0
  43. package/dist/21.64fbe234fee75c83dda3.bundle.js +2 -0
  44. package/dist/21.64fbe234fee75c83dda3.bundle.js.map +1 -0
  45. package/dist/{23.9d969421ffc11412b35a.bundle.js → 23.acf56e52417b0fbca9f4.bundle.js} +2 -2
  46. package/dist/23.acf56e52417b0fbca9f4.bundle.js.map +1 -0
  47. package/dist/25.9e0925889b3a3f79c7fe.bundle.js +2 -0
  48. package/dist/25.9e0925889b3a3f79c7fe.bundle.js.map +1 -0
  49. package/dist/27.a53481ccfa58fbd0c801.bundle.js +2 -0
  50. package/dist/27.a53481ccfa58fbd0c801.bundle.js.map +1 -0
  51. package/dist/29.9bdb27c21d6eacac1341.bundle.js +1 -1
  52. package/dist/29.9bdb27c21d6eacac1341.bundle.js.map +1 -1
  53. package/dist/3.a1815b0ddb1630938d40.bundle.js +2 -0
  54. package/dist/3.a1815b0ddb1630938d40.bundle.js.map +1 -0
  55. package/dist/30.34b74ada583b1b0af913.bundle.js +2 -0
  56. package/dist/30.34b74ada583b1b0af913.bundle.js.map +1 -0
  57. package/dist/{44.dbb910f04027f51eeedd.bundle.js → 44.082e83be1a2eda5f197b.bundle.js} +2 -2
  58. package/dist/44.082e83be1a2eda5f197b.bundle.js.map +1 -0
  59. package/dist/48.f047a5ea62690543f8ad.bundle.js +2 -0
  60. package/dist/48.f047a5ea62690543f8ad.bundle.js.map +1 -0
  61. package/dist/5.1e4e7e36d894360b8d8f.bundle.js +2 -0
  62. package/dist/5.1e4e7e36d894360b8d8f.bundle.js.map +1 -0
  63. package/dist/67.3f75109fb8b71d88f6c7.bundle.js +2 -0
  64. package/dist/67.3f75109fb8b71d88f6c7.bundle.js.map +1 -0
  65. package/dist/68.e25480b7770a679a9654.bundle.js +1 -1
  66. package/dist/68.e25480b7770a679a9654.bundle.js.map +1 -1
  67. package/dist/8.5abe78e9d72cdbc2607f.bundle.js +3 -0
  68. package/dist/8.5abe78e9d72cdbc2607f.bundle.js.map +1 -0
  69. package/dist/{bundle.e65c5ca8080546fe24d7.bundle.js → bundle.7e4f5efd9843ba4c4905.bundle.js} +3 -3
  70. package/dist/bundle.7e4f5efd9843ba4c4905.bundle.js.map +1 -0
  71. package/dist/css/bootstrap-graphdb-theme.css +21 -3
  72. package/dist/css/clustermanagement.css +14 -1
  73. package/dist/css/fonts/icons.eot +0 -0
  74. package/dist/css/fonts/icons.svg +1 -0
  75. package/dist/css/fonts/icons.ttf +0 -0
  76. package/dist/css/fonts/icons.woff +0 -0
  77. package/dist/font/{icons.b601f6618abd131665211ff4ec9ad6b2.eot → icons.23e96f215ba03e98233de883d2c30b60.eot} +0 -0
  78. package/dist/img/{icons.6466330b5ada72a12e1aa10044720eec.svg → icons.ab6168834b8775f511d09c8fad540b27.svg} +1 -0
  79. package/dist/index.html +5 -5
  80. package/dist/js/angular/autocomplete/templates/modal/add-label.html +9 -8
  81. package/dist/js/angular/clustermanagement/templates/modal/add-nodes-dialog.html +17 -19
  82. package/dist/js/angular/clustermanagement/templates/modal/cluster-create-dialog.html +20 -21
  83. package/dist/js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html +8 -9
  84. package/dist/js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html +9 -8
  85. package/dist/js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html +18 -19
  86. package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +10 -10
  87. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  88. package/dist/js/angular/core/templates/modal/copy-to-clipboard-modal.html +9 -10
  89. package/dist/js/angular/externalsync/templates/deleteConnector.html +4 -4
  90. package/dist/js/angular/graphexplore/templates/modal/save-graph.html +9 -10
  91. package/dist/js/angular/import/templates/settingsModal.html +231 -231
  92. package/dist/js/angular/settings/modal/location-settings.html +15 -16
  93. package/dist/js/angular/templates/modal/add-fedx-remote-repo.html +17 -15
  94. package/dist/js/angular/templates/modal/add-location.html +15 -15
  95. package/dist/js/angular/templates/modal/edit-location.html +8 -8
  96. package/dist/main.12e572893a7926387b80.css +1 -0
  97. package/dist/pages/autocomplete.html +1 -1
  98. package/dist/pages/choose-repository-type.html +1 -1
  99. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  100. package/dist/pages/create-index.html +5 -5
  101. package/dist/pages/createConnector.html +134 -137
  102. package/dist/pages/dependencies.html +1 -1
  103. package/dist/pages/domainRangeInfo.html +2 -2
  104. package/dist/pages/edit.html +1 -1
  105. package/dist/pages/explore.html +1 -1
  106. package/dist/pages/export.html +1 -1
  107. package/dist/pages/find.html +1 -1
  108. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  109. package/dist/pages/graphs-visualizations.html +7 -7
  110. package/dist/pages/home.html +1 -1
  111. package/dist/pages/import.html +1 -1
  112. package/dist/pages/jdbc-create.html +5 -5
  113. package/dist/pages/monitor/queries.html +1 -1
  114. package/dist/pages/monitor/resources.html +2 -2
  115. package/dist/pages/namespaces.html +2 -2
  116. package/dist/pages/plugins.html +1 -1
  117. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  118. package/dist/pages/rdfrank.html +2 -2
  119. package/dist/pages/repositories.html +2 -2
  120. package/dist/pages/repository.html +2 -2
  121. package/dist/pages/similarity-indexes.html +3 -3
  122. package/dist/pages/sparql-template-create.html +5 -5
  123. package/dist/pages/sparql.html +3 -3
  124. package/dist/pages/webapi.html +2 -2
  125. package/dist/plugins.js +3 -12
  126. package/dist/res/swagger/fonts/icons.woff +0 -0
  127. package/dist/res/swagger/index.html +27 -27
  128. package/package.json +1 -1
  129. package/dist/10.91f8aa0494201bb12b25.bundle.js.map +0 -1
  130. package/dist/104.42f8ece72006965c902d.bundle.js.map +0 -1
  131. package/dist/11.32f5a72d66bb699e9e8b.bundle.js.map +0 -1
  132. package/dist/111.a360abaec5e5926aae34.bundle.js +0 -2
  133. package/dist/111.a360abaec5e5926aae34.bundle.js.map +0 -1
  134. package/dist/112.83afabc13f11ea9e326e.bundle.js +0 -2
  135. package/dist/112.83afabc13f11ea9e326e.bundle.js.map +0 -1
  136. package/dist/113.9f4c896b53aa300a5f38.bundle.js +0 -2
  137. package/dist/113.9f4c896b53aa300a5f38.bundle.js.map +0 -1
  138. package/dist/114.afa49d7867c1ce3b08c2.bundle.js +0 -2
  139. package/dist/114.afa49d7867c1ce3b08c2.bundle.js.map +0 -1
  140. package/dist/115.bbf8829ee8f466f85862.bundle.js +0 -2
  141. package/dist/115.bbf8829ee8f466f85862.bundle.js.map +0 -1
  142. package/dist/116.a4460f77635888e013b1.bundle.js +0 -2
  143. package/dist/116.a4460f77635888e013b1.bundle.js.map +0 -1
  144. package/dist/119.e60f7d27cb5876b3a601.bundle.js +0 -2
  145. package/dist/119.e60f7d27cb5876b3a601.bundle.js.map +0 -1
  146. package/dist/123.207528c97d229de16991.bundle.js +0 -2
  147. package/dist/123.207528c97d229de16991.bundle.js.map +0 -1
  148. package/dist/130.c2f5c98e78bd22743ee4.bundle.js +0 -2
  149. package/dist/130.c2f5c98e78bd22743ee4.bundle.js.map +0 -1
  150. package/dist/138.84fb24a9535f4d6d8c59.bundle.js +0 -2
  151. package/dist/138.84fb24a9535f4d6d8c59.bundle.js.map +0 -1
  152. package/dist/149.8ca7b7242b61bd7a8363.bundle.js +0 -2
  153. package/dist/149.8ca7b7242b61bd7a8363.bundle.js.map +0 -1
  154. package/dist/152.bd0fd3cba70a2e267646.bundle.js +0 -2
  155. package/dist/152.bd0fd3cba70a2e267646.bundle.js.map +0 -1
  156. package/dist/153.9272a2423ac2aa6a148b.bundle.js +0 -2
  157. package/dist/153.9272a2423ac2aa6a148b.bundle.js.map +0 -1
  158. package/dist/2.3a65d34c46b96a708181.bundle.js.map +0 -1
  159. package/dist/21.111cc98aaf2436b81eea.bundle.js +0 -2
  160. package/dist/21.111cc98aaf2436b81eea.bundle.js.map +0 -1
  161. package/dist/23.9d969421ffc11412b35a.bundle.js.map +0 -1
  162. package/dist/25.fffc5233e718b047a34f.bundle.js +0 -2
  163. package/dist/25.fffc5233e718b047a34f.bundle.js.map +0 -1
  164. package/dist/27.357929bef6f5df788b8e.bundle.js +0 -2
  165. package/dist/27.357929bef6f5df788b8e.bundle.js.map +0 -1
  166. package/dist/3.36fe2e671f737648a477.bundle.js +0 -2
  167. package/dist/3.36fe2e671f737648a477.bundle.js.map +0 -1
  168. package/dist/30.e2cd19e99cf6ecdad6ac.bundle.js +0 -2
  169. package/dist/30.e2cd19e99cf6ecdad6ac.bundle.js.map +0 -1
  170. package/dist/44.dbb910f04027f51eeedd.bundle.js.map +0 -1
  171. package/dist/48.d1b4cfee2f0e084c1d73.bundle.js +0 -2
  172. package/dist/48.d1b4cfee2f0e084c1d73.bundle.js.map +0 -1
  173. package/dist/5.e112b0d6e101e0766cda.bundle.js +0 -2
  174. package/dist/5.e112b0d6e101e0766cda.bundle.js.map +0 -1
  175. package/dist/67.62375b1b4925fff2fe7c.bundle.js +0 -2
  176. package/dist/67.62375b1b4925fff2fe7c.bundle.js.map +0 -1
  177. package/dist/8.7f3059d43e0db8ff7dd5.bundle.js +0 -3
  178. package/dist/8.7f3059d43e0db8ff7dd5.bundle.js.map +0 -1
  179. package/dist/bundle.e65c5ca8080546fe24d7.bundle.js.map +0 -1
  180. package/dist/main.b9612509bb46028befd2.css +0 -1
@@ -1,12 +1,12 @@
1
- <link href="css/lib/angular-xeditable/xeditable.min.css?v=2.0.0-M3-RC3" rel="stylesheet">
1
+ <link href="css/lib/angular-xeditable/xeditable.min.css?v=2.0.0-RC2" rel="stylesheet">
2
2
 
3
- <link href="css/lib/yasqe.min.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
3
+ <link href="css/lib/yasqe.min.css?v=2.0.0-RC2" rel="stylesheet"/>
4
4
 
5
- <link href="css/new-sparql.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
5
+ <link href="css/new-sparql.css?v=2.0.0-RC2" rel="stylesheet"/>
6
6
 
7
- <link href="css/graphs-config.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
7
+ <link href="css/graphs-config.css?v=2.0.0-RC2" rel="stylesheet"/>
8
8
 
9
- <link href="css/jdbc.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
9
+ <link href="css/jdbc.css?v=2.0.0-RC2" rel="stylesheet"/>
10
10
 
11
11
  <div class="container-fluid">
12
12
  <h1>
@@ -1,8 +1,8 @@
1
- <link href="css/lib/angular-xeditable/xeditable.min.css?v=2.0.0-M3-RC3" rel="stylesheet">
1
+ <link href="css/lib/angular-xeditable/xeditable.min.css?v=2.0.0-RC2" rel="stylesheet">
2
2
 
3
- <link href="css/lib/yasqe.min.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
3
+ <link href="css/lib/yasqe.min.css?v=2.0.0-RC2" rel="stylesheet"/>
4
4
 
5
- <link href="css/new-sparql.css?v=2.0.0-M3-RC3" rel="stylesheet"/>
5
+ <link href="css/new-sparql.css?v=2.0.0-RC2" rel="stylesheet"/>
6
6
  <div id="wb-sparql">
7
7
 
8
8
  <div ng-show="getActiveRepositoryNoError()" class="pull-right mt-1">
@@ -1,6 +1,6 @@
1
1
 
2
- <link href='css/lib/swagger-ui.min.css?v=2.0.0-M3-RC3' rel='stylesheet' type='text/css'/>
3
- <link href='css/swagger.custom.css?v=2.0.0-M3-RC3' rel='stylesheet' type='text/css'/>
2
+ <link href='css/lib/swagger-ui.min.css?v=2.0.0-RC2' rel='stylesheet' type='text/css'/>
3
+ <link href='css/swagger.custom.css?v=2.0.0-RC2' rel='stylesheet' type='text/css'/>
4
4
 
5
5
  <h1>
6
6
  {{title}}
package/dist/plugins.js CHANGED
@@ -787,10 +787,7 @@ PluginRegistry.add('main.menu', {
787
787
  parent: 'Help',
788
788
  icon: 'icon-external',
789
789
  hrefFun: function (productInfo) {
790
- if (productInfo.productType) {
791
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/';
792
- }
793
- return DOCUMENTATION_URL;
790
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/';
794
791
  }
795
792
  }, {
796
793
  label: 'Developer Hub',
@@ -799,10 +796,7 @@ PluginRegistry.add('main.menu', {
799
796
  parent: 'Help',
800
797
  icon: 'icon-external',
801
798
  hrefFun: function (productInfo) {
802
- if (productInfo.productType) {
803
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/devhub/';
804
- }
805
- return DOCUMENTATION_URL + 'graphdb/devhub/';
799
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/devhub/';
806
800
  }
807
801
  }, {
808
802
  label: 'Support',
@@ -811,10 +805,7 @@ PluginRegistry.add('main.menu', {
811
805
  parent: 'Help',
812
806
  icon: 'icon-external',
813
807
  hrefFun: function (productInfo) {
814
- if (productInfo.productType) {
815
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/support.html';
816
- }
817
- return DOCUMENTATION_URL + 'graphdb/support.html';
808
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/support.html';
818
809
  }
819
810
  }
820
811
  ]
Binary file
@@ -3,37 +3,37 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <title>Swagger UI</title>
6
- <link rel="icon" type="image/png" href="images/favicon-32x32.png?v=2.0.0-M3-RC3" sizes="32x32"/>
7
- <link rel="icon" type="image/png" href="images/favicon-16x16.png?v=2.0.0-M3-RC3" sizes="16x16"/>
8
- <link href='../../css/common.css?v=2.0.0-M3-RC3' media='screen' rel='stylesheet' type='text/css'/>
9
- <link href='css/reset.css?v=2.0.0-M3-RC3' media='screen' rel='stylesheet' type='text/css'/>
10
- <link href='css/screen.css?v=2.0.0-M3-RC3' media='screen' rel='stylesheet' type='text/css'/>
11
- <link href='css/onto-theme.css?v=2.0.0-M3-RC3' media='screen' rel='stylesheet' type='text/css'/>
12
- <link href='css/reset.css?v=2.0.0-M3-RC3' media='print' rel='stylesheet' type='text/css'/>
13
- <link href='css/print.css?v=2.0.0-M3-RC3' media='print' rel='stylesheet' type='text/css'/>
14
- <link href='css/onto-theme.css?v=2.0.0-M3-RC3' media='print' rel='stylesheet' type='text/css'/>
6
+ <link rel="icon" type="image/png" href="images/favicon-32x32.png?v=2.0.0-RC2" sizes="32x32"/>
7
+ <link rel="icon" type="image/png" href="images/favicon-16x16.png?v=2.0.0-RC2" sizes="16x16"/>
8
+ <link href='../../css/common.css?v=2.0.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
9
+ <link href='css/reset.css?v=2.0.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
10
+ <link href='css/screen.css?v=2.0.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
11
+ <link href='css/onto-theme.css?v=2.0.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
12
+ <link href='css/reset.css?v=2.0.0-RC2' media='print' rel='stylesheet' type='text/css'/>
13
+ <link href='css/print.css?v=2.0.0-RC2' media='print' rel='stylesheet' type='text/css'/>
14
+ <link href='css/onto-theme.css?v=2.0.0-RC2' media='print' rel='stylesheet' type='text/css'/>
15
15
 
16
- <script src='lib/object-assign-pollyfill.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
17
- <script src='lib/jquery-3.4.1.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
18
- <script src='lib/jquery.slideto.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
19
- <script src='lib/jquery.wiggle.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
16
+ <script src='lib/object-assign-pollyfill.js?v=2.0.0-RC2' type='text/javascript'></script>
17
+ <script src='lib/jquery-3.4.1.min.js?v=2.0.0-RC2' type='text/javascript'></script>
18
+ <script src='lib/jquery.slideto.min.js?v=2.0.0-RC2' type='text/javascript'></script>
19
+ <script src='lib/jquery.wiggle.min.js?v=2.0.0-RC2' type='text/javascript'></script>
20
20
 
21
- <script src="lib/jquery-migrate-1.4.1.min.js?v=2.0.0-M3-RC3"></script>
22
- <script src='lib/jquery.ba-bbq.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
23
- <script src='lib/handlebars.min-v4.7.3.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
24
- <script src='lib/lodash.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
25
- <script src='lib/backbone-min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
26
- <script src='swagger-ui.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
27
- <script src='lib/highlight.9.1.0.pack.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
28
- <script src='lib/highlight.9.1.0.pack_extended.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
29
- <script src='lib/jsoneditor.min.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
30
- <script src='lib/marked.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
31
- <script src='lib/swagger-oauth.js?v=2.0.0-M3-RC3' type='text/javascript'></script>
21
+ <script src="lib/jquery-migrate-1.4.1.min.js?v=2.0.0-RC2"></script>
22
+ <script src='lib/jquery.ba-bbq.min.js?v=2.0.0-RC2' type='text/javascript'></script>
23
+ <script src='lib/handlebars.min-v4.7.3.js?v=2.0.0-RC2' type='text/javascript'></script>
24
+ <script src='lib/lodash.min.js?v=2.0.0-RC2' type='text/javascript'></script>
25
+ <script src='lib/backbone-min.js?v=2.0.0-RC2' type='text/javascript'></script>
26
+ <script src='swagger-ui.js?v=2.0.0-RC2' type='text/javascript'></script>
27
+ <script src='lib/highlight.9.1.0.pack.js?v=2.0.0-RC2' type='text/javascript'></script>
28
+ <script src='lib/highlight.9.1.0.pack_extended.js?v=2.0.0-RC2' type='text/javascript'></script>
29
+ <script src='lib/jsoneditor.min.js?v=2.0.0-RC2' type='text/javascript'></script>
30
+ <script src='lib/marked.js?v=2.0.0-RC2' type='text/javascript'></script>
31
+ <script src='lib/swagger-oauth.js?v=2.0.0-RC2' type='text/javascript'></script>
32
32
 
33
33
  <!-- Some basic translations -->
34
- <!-- <script src='lang/translator.js?v=2.0.0-M3-RC3' type='text/javascript'></script> -->
35
- <!-- <script src='lang/ru.js?v=2.0.0-M3-RC3' type='text/javascript'></script> -->
36
- <!-- <script src='lang/en.js?v=2.0.0-M3-RC3' type='text/javascript'></script> -->
34
+ <!-- <script src='lang/translator.js?v=2.0.0-RC2' type='text/javascript'></script> -->
35
+ <!-- <script src='lang/ru.js?v=2.0.0-RC2' type='text/javascript'></script> -->
36
+ <!-- <script src='lang/en.js?v=2.0.0-RC2' type='text/javascript'></script> -->
37
37
 
38
38
  <script type="text/javascript">
39
39
  $(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphdb-workbench",
3
- "version": "2.0.0-M3-RC3",
3
+ "version": "2.0.0-RC2",
4
4
  "description": "The web application for GraphDB APIs",
5
5
  "scripts": {
6
6
  "build": "webpack --config=webpack.config.prod.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/security/controllers.js"],"names":["createUniqueKey","repository","location","id","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","$location","$rootScope","$translate","username","password","loginWithOpenID","loginOpenID","search","noaccess","error","instant","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","encodeURIComponent","headers","success","data","status","authenticate","then","returnToUrl","path","wrongCredentials","msg","getError","$modal","$window","$timeout","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","$on","toggleSecurity","timer","reload","cancel","toggleFreeAccess","updateFreeAccess","getFreeAccess","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","name","warning","deleteUser","$modalInstance","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","WRITE_REPO","push","READ_REPO","close","dismiss","passwordPlaceholder","isAdmin","hasRole","hasEditRestrictions","user","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","arguments","authority","hasReadPermission","uniqueKey","hasWritePermission","repoOrWildCard","readCheckDisabled","writeCheckDisabled","validatePassword","noPassword","passwordError","confirmPasswordError","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","$controller","extend","this","mode","saveButtonText","goBack","history","back","pageTitle","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","LocalStorageAdapter","LSKeys","currentUserData","showWorkbenchSettings","updateCurrentUserData","assign","redirectAdmin","redirectToLogin","initUserData","scope","copy","currentScope","updateUserData","set","WORKBENCH_SETTINGS","workbenchSettings","setWorkbenchTheme","rootElement","document","querySelector","theme","classList","add","remove","get"],"mappings":"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","file":"10.91f8aa0494201bb12b25.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 'graphdb.framework.utils.localstorageadapter',\n 'toastr'\n];\n\nconst createUniqueKey = function (repository) {\n if (repository.location) {\n return `${repository.id}@${repository.location}`;\n }\n return repository.id;\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', '$location', '$rootScope', '$translate',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $location, $rootScope, $translate) {\n $scope.username = '';\n $scope.password = '';\n\n $scope.loginWithOpenID = function() {\n $jwtAuth.loginOpenID();\n };\n\n if ($location.search().noaccess) {\n toastr.error($translate.instant('security.no.rights.config.error'), $translate.instant('security.login.error'));\n } else if ($location.search().expired) {\n toastr.error($translate.instant('security.auth.token.expired'), $translate.instant('security.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 return $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 .then(() => {\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 });\n }).error(function (data, status) {\n if (status === 401) {\n toastr.error($translate.instant('security.wrong.credentials'), $translate.instant('common.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\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$modal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService', '$translate',\n function ($scope, $modal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityRestService, $translate) {\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, $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 $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 createUniqueKey(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 }\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: $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 SecurityRestService.deleteUser(username).success(function () {\n $scope.getUsers();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.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 $scope.createUniqueKey = function (repository) {\n return createUniqueKey(repository);\n }\n }]);\n\nsecurityCtrl.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 $rootScope.$on('$translateChangeSuccess', function () {\n $scope.passwordPlaceholder = $translate.instant(passwordPlaceholder);\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 (repository) {\n const uniqueKey = createUniqueKey(repository);\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repository.id !== SYSTEM_REPO\n && ($scope.grantedAuthorities.READ_REPO['*'] || $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 = createUniqueKey(repoOrWildCard);\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO[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 || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.createUniqueKey = function (repository) {\n return createUniqueKey(repository);\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 = $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\nsecurityCtrl.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService', '$translate',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService, $translate) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.password.placeholder'}));\n\n $scope.mode = 'add';\n $scope.saveButtonText = $translate.instant('common.create.btn');\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 = $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 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($translate.instant('security.user.created', {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 }).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.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\nsecurityCtrl.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService', '$translate',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService, $translate) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n\n $scope.mode = 'edit';\n $scope.saveButtonText = $translate.instant('common.save.btn');\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 = $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 (!$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, $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 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($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 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, $translate.instant('common.error'));\n });\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityRestService', '$translate',\n function ($scope, toastr, SecurityRestService, $translate) {\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, $translate.instant('common.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', '$translate', 'LocalStorageAdapter', 'LSKeys',\n function ($scope, toastr, $window, $timeout, $jwtAuth, $rootScope, $controller, SecurityRestService, ModalService, $translate, LocalStorageAdapter, LSKeys) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n\n $scope.mode = 'settings';\n $scope.hasEditRestrictions = function () {\n return true;\n };\n $scope.saveButtonText = $translate.instant('common.save.btn');\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 $scope.showWorkbenchSettings = true;\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 = $translate.instant('view.settings.title');\n $scope.passwordPlaceholder = $translate.instant('security.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: $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 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($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 LocalStorageAdapter.set(LSKeys.WORKBENCH_SETTINGS, $scope.workbenchSettings);\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, $translate.instant('common.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 $scope.setWorkbenchTheme = function () {\n const rootElement = document.querySelector(':root');\n if ($scope.workbenchSettings.theme === 'dark') {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.remove(\"dark\");\n }\n };\n\n $scope.workbenchSettings = LocalStorageAdapter.get(LSKeys.WORKBENCH_SETTINGS);\n if (!$scope.workbenchSettings) {\n $scope.workbenchSettings = {\n theme: 'light'\n };\n }\n $scope.setWorkbenchTheme();\n\n $scope.$on(\"$destroy\", function () {\n const workbenchSettings = LocalStorageAdapter.get(LSKeys.WORKBENCH_SETTINGS);\n const rootElement = document.querySelector(':root');\n if (workbenchSettings && workbenchSettings.theme === 'dark') {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.remove(\"dark\");\n }\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":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/stats/plugin.js"],"names":["PluginRegistry","add","DOCUMENTATION_URL","label","labelKey","href","order","role","icon","parent","hrefFun","productInfo","productType","productShortVersion"],"mappings":"6EAAAA,eAAeC,IAAI,QAAS,CACxB,CACI,IAAO,WACP,OAAU,0BACV,KAAQ,YACR,MAAS,QACT,WAAc,gBACd,YAAe,kBACf,MAAS,gCACT,SAAY,oCACb,CACC,IAAO,UACP,YAAe,oBACf,MAAS,oCACT,SAAY,0CAIpB,MAAMC,EAAoB,8CAE1BF,eAAeC,IAAI,YAAa,CAC5B,MAAS,CACL,CACIE,MAAO,QACPC,SAAU,mBACVC,KAAM,IACNC,MAAO,EACPC,KAAM,yBACNC,KAAM,iBACP,CACCL,MAAO,OACPC,SAAU,kBACVC,KAAM,IACNC,MAAO,EACPE,KAAM,aACP,CACCL,MAAO,qBACPC,SAAU,gCACVC,KAAM,UACNC,MAAO,GACPG,OAAQ,OACRF,KAAM,cACP,CACCJ,MAAO,WACPC,SAAU,sBACVC,KAAM,SACNC,MAAO,EACPG,OAAQ,QACT,CACCN,MAAO,gBACPC,SAAU,2BACVE,MAAO,EACPG,OAAQ,OACRD,KAAM,gBACNE,QAAS,SAAUC,GACf,OAAIA,EAAYC,YACLV,EAAoBS,EAAYE,oBAAsB,YAE1DX,IAEZ,CACCC,MAAO,gBACPC,SAAU,2BACVE,MAAO,EACPG,OAAQ,OACRD,KAAM,gBACNE,QAAS,SAAUC,GACf,OAAIA,EAAYC,YACLV,EAAoBS,EAAYE,oBAAsB,mBAE1DX,EAAoB,oBAEhC,CACCC,MAAO,UACPC,SAAU,qBACVE,MAAO,EACPG,OAAQ,OACRD,KAAM,gBACNE,QAAS,SAAUC,GACf,OAAIA,EAAYC,YACLV,EAAoBS,EAAYE,oBAAsB,wBAE1DX,EAAoB","file":"104.42f8ece72006965c902d.bundle.js","sourcesContent":["PluginRegistry.add('route', [\n {\n 'url': '/sysinfo',\n 'module': 'graphdb.framework.stats',\n 'path': 'stats/app',\n 'chunk': 'stats',\n 'controller': 'AdminInfoCtrl',\n 'templateUrl': 'pages/info.html',\n 'title': 'view.system.information.title',\n 'helpInfo': 'view.system.information.helpInfo'\n }, {\n 'url': '/webapi',\n 'templateUrl': 'pages/webapi.html',\n 'title': 'view.rest.api.documentation.title',\n 'helpInfo': 'view.rest.api.documentation.helpInfo'\n }\n]);\n\nconst DOCUMENTATION_URL = 'https://graphdb.ontotext.com/documentation/';\n\nPluginRegistry.add('main.menu', {\n 'items': [\n {\n label: 'Setup',\n labelKey: 'menu.setup.label',\n href: '#',\n order: 7,\n role: 'IS_AUTHENTICATED_FULLY',\n icon: 'icon-settings'\n }, {\n label: 'Help',\n labelKey: 'menu.help.label',\n href: '#',\n order: 8,\n icon: 'icon-help'\n }, {\n label: 'System information',\n labelKey: 'menu.system.information.label',\n href: 'sysinfo',\n order: 50,\n parent: 'Help',\n role: 'ROLE_ADMIN'\n }, {\n label: 'REST API',\n labelKey: 'menu.rest.api.label',\n href: 'webapi',\n order: 1,\n parent: 'Help'\n }, {\n label: 'Documentation',\n labelKey: 'menu.documentation.label',\n order: 2,\n parent: 'Help',\n icon: 'icon-external',\n hrefFun: function (productInfo) {\n if (productInfo.productType) {\n return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/';\n }\n return DOCUMENTATION_URL;\n }\n }, {\n label: 'Developer Hub',\n labelKey: 'menu.developer.hub.label',\n order: 3,\n parent: 'Help',\n icon: 'icon-external',\n hrefFun: function (productInfo) {\n if (productInfo.productType) {\n return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/devhub/';\n }\n return DOCUMENTATION_URL + 'graphdb/devhub/';\n }\n }, {\n label: 'Support',\n labelKey: 'menu.support.label',\n order: 4,\n parent: 'Help',\n icon: 'icon-external',\n hrefFun: function (productInfo) {\n if (productInfo.productType) {\n return DOCUMENTATION_URL + productInfo.productShortVersion + '/graphdb/support.html';\n }\n return DOCUMENTATION_URL + 'graphdb/support.html';\n }\n }\n ]\n});\n"],"sourceRoot":""}