@girder/core 5.0.0-beta.0 → 5.0.0-beta.1

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 (240) hide show
  1. package/package.json +1 -1
  2. package/dist-lib/Girder_Favicon.png +0 -0
  3. package/dist-lib/Girder_Mark.png +0 -0
  4. package/dist-lib/girder-core.js +0 -48623
  5. package/dist-lib/girder-core.js.map +0 -1
  6. package/dist-lib/girder-core.umd.cjs +0 -633
  7. package/dist-lib/girder-core.umd.cjs.map +0 -1
  8. package/dist-lib/girder-swagger.js +0 -64
  9. package/dist-lib/index.d.ts +0 -1
  10. package/dist-lib/src/auth.js +0 -150
  11. package/dist-lib/src/collections/ApiKeyCollection.js +0 -9
  12. package/dist-lib/src/collections/AssetstoreCollection.js +0 -9
  13. package/dist-lib/src/collections/Collection.js +0 -295
  14. package/dist-lib/src/collections/CollectionCollection.js +0 -9
  15. package/dist-lib/src/collections/FileCollection.js +0 -11
  16. package/dist-lib/src/collections/FolderCollection.js +0 -11
  17. package/dist-lib/src/collections/GroupCollection.js +0 -9
  18. package/dist-lib/src/collections/ItemCollection.js +0 -11
  19. package/dist-lib/src/collections/UserCollection.js +0 -24
  20. package/dist-lib/src/collections/index.js +0 -21
  21. package/dist-lib/src/constants.js +0 -33
  22. package/dist-lib/src/dialog.js +0 -128
  23. package/dist-lib/src/events.js +0 -6
  24. package/dist-lib/src/index.d.ts +0 -22
  25. package/dist-lib/src/index.ts +0 -80
  26. package/dist-lib/src/main.ts +0 -37
  27. package/dist-lib/src/misc.js +0 -260
  28. package/dist-lib/src/models/AccessControlledModel.js +0 -76
  29. package/dist-lib/src/models/ApiKeyModel.js +0 -31
  30. package/dist-lib/src/models/AssetstoreModel.js +0 -43
  31. package/dist-lib/src/models/CollectionCreationPolicyModel.js +0 -20
  32. package/dist-lib/src/models/CollectionModel.js +0 -12
  33. package/dist-lib/src/models/FileModel.js +0 -310
  34. package/dist-lib/src/models/FolderModel.js +0 -33
  35. package/dist-lib/src/models/GroupModel.js +0 -197
  36. package/dist-lib/src/models/ItemModel.js +0 -72
  37. package/dist-lib/src/models/MetadataMixin.js +0 -88
  38. package/dist-lib/src/models/Model.js +0 -187
  39. package/dist-lib/src/models/UserModel.js +0 -189
  40. package/dist-lib/src/models/index.js +0 -25
  41. package/dist-lib/src/pluginUtils.js +0 -11
  42. package/dist-lib/src/rest.js +0 -207
  43. package/dist-lib/src/router.js +0 -58
  44. package/dist-lib/src/routes.js +0 -229
  45. package/dist-lib/src/stylesheets/apidocs/apidocs.styl +0 -50
  46. package/dist-lib/src/stylesheets/body/adminConsole.styl +0 -21
  47. package/dist-lib/src/stylesheets/body/assetstores.styl +0 -46
  48. package/dist-lib/src/stylesheets/body/collectionList.styl +0 -39
  49. package/dist-lib/src/stylesheets/body/collectionPage.styl +0 -6
  50. package/dist-lib/src/stylesheets/body/frontPage.styl +0 -48
  51. package/dist-lib/src/stylesheets/body/groupList.styl +0 -43
  52. package/dist-lib/src/stylesheets/body/groupPage.styl +0 -116
  53. package/dist-lib/src/stylesheets/body/itemPage.styl +0 -81
  54. package/dist-lib/src/stylesheets/body/plugins.styl +0 -61
  55. package/dist-lib/src/stylesheets/body/searchResultsList.styl +0 -51
  56. package/dist-lib/src/stylesheets/body/systemConfig.styl +0 -56
  57. package/dist-lib/src/stylesheets/body/userAccount.styl +0 -57
  58. package/dist-lib/src/stylesheets/body/userList.styl +0 -79
  59. package/dist-lib/src/stylesheets/body/userPage.styl +0 -6
  60. package/dist-lib/src/stylesheets/layout/footer.styl +0 -19
  61. package/dist-lib/src/stylesheets/layout/global.styl +0 -154
  62. package/dist-lib/src/stylesheets/layout/globalNav.styl +0 -89
  63. package/dist-lib/src/stylesheets/layout/header.styl +0 -29
  64. package/dist-lib/src/stylesheets/layout/headerUser.styl +0 -33
  65. package/dist-lib/src/stylesheets/layout/layout.styl +0 -75
  66. package/dist-lib/src/stylesheets/layout/layoutVars.styl +0 -9
  67. package/dist-lib/src/stylesheets/layout/loading.styl +0 -37
  68. package/dist-lib/src/stylesheets/layout/progressArea.styl +0 -17
  69. package/dist-lib/src/stylesheets/widgets/accessWidget.styl +0 -106
  70. package/dist-lib/src/stylesheets/widgets/browserWidget.styl +0 -9
  71. package/dist-lib/src/stylesheets/widgets/hierarchyWidget.styl +0 -188
  72. package/dist-lib/src/stylesheets/widgets/markdownWidget.styl +0 -92
  73. package/dist-lib/src/stylesheets/widgets/metadataWidget.styl +0 -92
  74. package/dist-lib/src/stylesheets/widgets/searchFieldWidget.styl +0 -70
  75. package/dist-lib/src/stylesheets/widgets/taskProgress.styl +0 -41
  76. package/dist-lib/src/stylesheets/widgets/timelineWidget.styl +0 -41
  77. package/dist-lib/src/stylesheets/widgets/uploadWidget.styl +0 -43
  78. package/dist-lib/src/stylesheets/widgets/userOtpManagementWidget.styl +0 -159
  79. package/dist-lib/src/templates/body/adminConsole.pug +0 -13
  80. package/dist-lib/src/templates/body/assetstores.pug +0 -98
  81. package/dist-lib/src/templates/body/collectionList.pug +0 -40
  82. package/dist-lib/src/templates/body/collectionPage.pug +0 -36
  83. package/dist-lib/src/templates/body/filesystemImport.pug +0 -41
  84. package/dist-lib/src/templates/body/frontPage.pug +0 -84
  85. package/dist-lib/src/templates/body/groupList.pug +0 -30
  86. package/dist-lib/src/templates/body/groupPage.pug +0 -116
  87. package/dist-lib/src/templates/body/itemPage.pug +0 -61
  88. package/dist-lib/src/templates/body/plugins.pug +0 -20
  89. package/dist-lib/src/templates/body/s3Import.pug +0 -35
  90. package/dist-lib/src/templates/body/searchResults.pug +0 -15
  91. package/dist-lib/src/templates/body/searchResultsType.pug +0 -13
  92. package/dist-lib/src/templates/body/systemConfiguration.pug +0 -221
  93. package/dist-lib/src/templates/body/userAccount.pug +0 -83
  94. package/dist-lib/src/templates/body/userList.pug +0 -43
  95. package/dist-lib/src/templates/body/userPage.pug +0 -40
  96. package/dist-lib/src/templates/layout/alert.pug +0 -5
  97. package/dist-lib/src/templates/layout/layout.pug +0 -12
  98. package/dist-lib/src/templates/layout/layoutFooter.pug +0 -11
  99. package/dist-lib/src/templates/layout/layoutGlobalNav.pug +0 -7
  100. package/dist-lib/src/templates/layout/layoutHeader.pug +0 -8
  101. package/dist-lib/src/templates/layout/layoutHeaderUser.pug +0 -26
  102. package/dist-lib/src/templates/layout/layoutProgressArea.pug +0 -1
  103. package/dist-lib/src/templates/layout/loginDialog.pug +0 -30
  104. package/dist-lib/src/templates/layout/registerDialog.pug +0 -35
  105. package/dist-lib/src/templates/layout/resetPasswordDialog.pug +0 -25
  106. package/dist-lib/src/templates/widgets/accessEditor.pug +0 -23
  107. package/dist-lib/src/templates/widgets/accessEditorMixins.pug +0 -57
  108. package/dist-lib/src/templates/widgets/accessEditorNonModal.pug +0 -11
  109. package/dist-lib/src/templates/widgets/accessEntry.pug +0 -32
  110. package/dist-lib/src/templates/widgets/apiKeyList.pug +0 -50
  111. package/dist-lib/src/templates/widgets/browserWidget.pug +0 -32
  112. package/dist-lib/src/templates/widgets/checkedActionsMenu.pug +0 -46
  113. package/dist-lib/src/templates/widgets/collectionInfoDialog.pug +0 -37
  114. package/dist-lib/src/templates/widgets/confirmDialog.pug +0 -14
  115. package/dist-lib/src/templates/widgets/dateTimeRangeWidget.pug +0 -20
  116. package/dist-lib/src/templates/widgets/dateTimeWidget.pug +0 -8
  117. package/dist-lib/src/templates/widgets/editApiKeyWidget.pug +0 -43
  118. package/dist-lib/src/templates/widgets/editAssetstoreWidget.pug +0 -78
  119. package/dist-lib/src/templates/widgets/editCollectionWidget.pug +0 -27
  120. package/dist-lib/src/templates/widgets/editFileWidget.pug +0 -21
  121. package/dist-lib/src/templates/widgets/editFolderWidget.pug +0 -27
  122. package/dist-lib/src/templates/widgets/editGroupWidget.pug +0 -54
  123. package/dist-lib/src/templates/widgets/editItemWidget.pug +0 -27
  124. package/dist-lib/src/templates/widgets/fileInfoDialog.pug +0 -33
  125. package/dist-lib/src/templates/widgets/fileList.pug +0 -33
  126. package/dist-lib/src/templates/widgets/folderInfoDialog.pug +0 -42
  127. package/dist-lib/src/templates/widgets/folderList.pug +0 -21
  128. package/dist-lib/src/templates/widgets/groupAdminList.pug +0 -33
  129. package/dist-lib/src/templates/widgets/groupInviteDialog.pug +0 -76
  130. package/dist-lib/src/templates/widgets/groupInviteList.pug +0 -14
  131. package/dist-lib/src/templates/widgets/groupMemberList.pug +0 -39
  132. package/dist-lib/src/templates/widgets/groupModList.pug +0 -23
  133. package/dist-lib/src/templates/widgets/hierarchyBreadcrumb.pug +0 -37
  134. package/dist-lib/src/templates/widgets/hierarchyPaginated.pug +0 -19
  135. package/dist-lib/src/templates/widgets/hierarchyWidget.pug +0 -96
  136. package/dist-lib/src/templates/widgets/itemBreadcrumb.pug +0 -16
  137. package/dist-lib/src/templates/widgets/itemList.pug +0 -27
  138. package/dist-lib/src/templates/widgets/jsonMetadatumEditWidget.pug +0 -13
  139. package/dist-lib/src/templates/widgets/jsonMetadatumView.pug +0 -6
  140. package/dist-lib/src/templates/widgets/loadingAnimation.pug +0 -4
  141. package/dist-lib/src/templates/widgets/markdownWidget.pug +0 -34
  142. package/dist-lib/src/templates/widgets/metadataWidget.pug +0 -16
  143. package/dist-lib/src/templates/widgets/metadatumEditWidget.pug +0 -15
  144. package/dist-lib/src/templates/widgets/metadatumView.pug +0 -5
  145. package/dist-lib/src/templates/widgets/newAssetstore.pug +0 -118
  146. package/dist-lib/src/templates/widgets/paginateWidget.pug +0 -7
  147. package/dist-lib/src/templates/widgets/pluginConfigBreadcrumb.pug +0 -13
  148. package/dist-lib/src/templates/widgets/rootSelectorWidget.pug +0 -13
  149. package/dist-lib/src/templates/widgets/searchField.pug +0 -10
  150. package/dist-lib/src/templates/widgets/searchHelp.pug +0 -12
  151. package/dist-lib/src/templates/widgets/searchModeSelect.pug +0 -9
  152. package/dist-lib/src/templates/widgets/searchResults.pug +0 -14
  153. package/dist-lib/src/templates/widgets/sortCollectionWidget.pug +0 -14
  154. package/dist-lib/src/templates/widgets/taskProgress.pug +0 -16
  155. package/dist-lib/src/templates/widgets/timeline.pug +0 -15
  156. package/dist-lib/src/templates/widgets/uploadWidget.pug +0 -15
  157. package/dist-lib/src/templates/widgets/uploadWidgetMixins.pug +0 -31
  158. package/dist-lib/src/templates/widgets/uploadWidgetNonModal.pug +0 -10
  159. package/dist-lib/src/templates/widgets/userOtpBegin.pug +0 -4
  160. package/dist-lib/src/templates/widgets/userOtpDisable.pug +0 -6
  161. package/dist-lib/src/templates/widgets/userOtpEnable.pug +0 -44
  162. package/dist-lib/src/utilities/EventStream.js +0 -177
  163. package/dist-lib/src/utilities/PluginUtils.js +0 -36
  164. package/dist-lib/src/utilities/S3UploadHandler.js +0 -303
  165. package/dist-lib/src/utilities/index.js +0 -9
  166. package/dist-lib/src/utilities/jquery/girderEnable.js +0 -19
  167. package/dist-lib/src/utilities/jquery/girderModal.js +0 -48
  168. package/dist-lib/src/version.js +0 -8
  169. package/dist-lib/src/views/App.js +0 -359
  170. package/dist-lib/src/views/View.js +0 -79
  171. package/dist-lib/src/views/body/AdminView.js +0 -29
  172. package/dist-lib/src/views/body/AssetstoresView.js +0 -234
  173. package/dist-lib/src/views/body/CollectionView.js +0 -188
  174. package/dist-lib/src/views/body/CollectionsView.js +0 -120
  175. package/dist-lib/src/views/body/FilesystemImportView.js +0 -83
  176. package/dist-lib/src/views/body/FolderView.js +0 -54
  177. package/dist-lib/src/views/body/FrontPageView.js +0 -47
  178. package/dist-lib/src/views/body/GroupView.js +0 -336
  179. package/dist-lib/src/views/body/GroupsView.js +0 -106
  180. package/dist-lib/src/views/body/ItemView.js +0 -177
  181. package/dist-lib/src/views/body/PluginsView.js +0 -73
  182. package/dist-lib/src/views/body/S3ImportView.js +0 -80
  183. package/dist-lib/src/views/body/SearchResultsView.js +0 -162
  184. package/dist-lib/src/views/body/SystemConfigurationView.js +0 -196
  185. package/dist-lib/src/views/body/UserAccountView.js +0 -179
  186. package/dist-lib/src/views/body/UserView.js +0 -165
  187. package/dist-lib/src/views/body/UsersView.js +0 -124
  188. package/dist-lib/src/views/body/index.js +0 -37
  189. package/dist-lib/src/views/index.js +0 -13
  190. package/dist-lib/src/views/layout/FooterView.js +0 -29
  191. package/dist-lib/src/views/layout/GlobalNavView.js +0 -103
  192. package/dist-lib/src/views/layout/HeaderUserView.js +0 -45
  193. package/dist-lib/src/views/layout/HeaderView.js +0 -83
  194. package/dist-lib/src/views/layout/LoginView.js +0 -100
  195. package/dist-lib/src/views/layout/ProgressListView.js +0 -70
  196. package/dist-lib/src/views/layout/RegisterView.js +0 -104
  197. package/dist-lib/src/views/layout/ResetPasswordView.js +0 -70
  198. package/dist-lib/src/views/layout/index.js +0 -19
  199. package/dist-lib/src/views/widgets/AccessWidget.js +0 -427
  200. package/dist-lib/src/views/widgets/ApiKeyListWidget.js +0 -140
  201. package/dist-lib/src/views/widgets/BrowserWidget.js +0 -317
  202. package/dist-lib/src/views/widgets/CheckedMenuWidget.js +0 -68
  203. package/dist-lib/src/views/widgets/CollectionInfoWidget.js +0 -40
  204. package/dist-lib/src/views/widgets/DateTimeRangeWidget.js +0 -180
  205. package/dist-lib/src/views/widgets/DateTimeWidget.js +0 -110
  206. package/dist-lib/src/views/widgets/EditApiKeyWidget.js +0 -122
  207. package/dist-lib/src/views/widgets/EditAssetstoreWidget.js +0 -148
  208. package/dist-lib/src/views/widgets/EditCollectionWidget.js +0 -93
  209. package/dist-lib/src/views/widgets/EditFileWidget.js +0 -56
  210. package/dist-lib/src/views/widgets/EditFolderWidget.js +0 -116
  211. package/dist-lib/src/views/widgets/EditGroupWidget.js +0 -125
  212. package/dist-lib/src/views/widgets/EditItemWidget.js +0 -110
  213. package/dist-lib/src/views/widgets/FileInfoWidget.js +0 -26
  214. package/dist-lib/src/views/widgets/FileListWidget.js +0 -151
  215. package/dist-lib/src/views/widgets/FolderInfoWidget.js +0 -39
  216. package/dist-lib/src/views/widgets/FolderListWidget.js +0 -106
  217. package/dist-lib/src/views/widgets/GroupAdminsWidget.js +0 -88
  218. package/dist-lib/src/views/widgets/GroupInvitesWidget.js +0 -56
  219. package/dist-lib/src/views/widgets/GroupMembersWidget.js +0 -185
  220. package/dist-lib/src/views/widgets/GroupModsWidget.js +0 -77
  221. package/dist-lib/src/views/widgets/HierarchyWidget.js +0 -1097
  222. package/dist-lib/src/views/widgets/ItemBreadcrumbWidget.js +0 -38
  223. package/dist-lib/src/views/widgets/ItemListWidget.js +0 -345
  224. package/dist-lib/src/views/widgets/LoadingAnimation.js +0 -17
  225. package/dist-lib/src/views/widgets/MarkdownWidget.js +0 -217
  226. package/dist-lib/src/views/widgets/MetadataWidget.js +0 -508
  227. package/dist-lib/src/views/widgets/NewAssetstoreWidget.js +0 -81
  228. package/dist-lib/src/views/widgets/PaginateWidget.js +0 -37
  229. package/dist-lib/src/views/widgets/PluginConfigBreadcrumbWidget.js +0 -33
  230. package/dist-lib/src/views/widgets/RootSelectorWidget.js +0 -192
  231. package/dist-lib/src/views/widgets/SearchFieldWidget.js +0 -365
  232. package/dist-lib/src/views/widgets/SearchPaginateWidget.js +0 -149
  233. package/dist-lib/src/views/widgets/SortCollectionWidget.js +0 -53
  234. package/dist-lib/src/views/widgets/TaskProgressWidget.js +0 -91
  235. package/dist-lib/src/views/widgets/TimelineWidget.js +0 -155
  236. package/dist-lib/src/views/widgets/UploadWidget.js +0 -340
  237. package/dist-lib/src/views/widgets/UserOtpManagementWidget.js +0 -105
  238. package/dist-lib/src/views/widgets/index.js +0 -75
  239. package/dist-lib/src/vite-env.d.ts +0 -5
  240. package/dist-lib/style.css +0 -16
@@ -1,88 +0,0 @@
1
- import _ from 'underscore';
2
-
3
- import { restRequest } from '@girder/core/rest';
4
-
5
- var MetadataMixin = {
6
- _sendMetadata: function (metadata, successCallback, errorCallback, opts) {
7
- opts = opts || {};
8
- restRequest({
9
- url: opts.path ||
10
- ((this.altUrl || this.resourceName) + `/${this.id}/metadata?allowNull=true`),
11
- contentType: 'application/json',
12
- data: JSON.stringify(metadata),
13
- method: 'PUT',
14
- error: null
15
- }).done((resp) => {
16
- this.set(opts.field || 'meta', resp.meta);
17
- if (_.isFunction(successCallback)) {
18
- successCallback();
19
- }
20
- }).fail((err) => {
21
- err.message = err.responseJSON.message;
22
- if (_.isFunction(errorCallback)) {
23
- errorCallback(err);
24
- }
25
- });
26
- },
27
-
28
- addMetadata: function (key, value, successCallback, errorCallback, opts) {
29
- opts = opts || {};
30
- var datum = {};
31
- datum[key] = value;
32
- var meta = this.get(opts.field || 'meta');
33
- if (meta && _.has(meta, key)) {
34
- if (_.isFunction(errorCallback)) {
35
- errorCallback({ message: key + ' is already a metadata key' });
36
- }
37
- } else {
38
- this._sendMetadata(datum, successCallback, errorCallback, opts);
39
- }
40
- },
41
-
42
- removeMetadata: function (key, successCallback, errorCallback, opts) {
43
- if (!_.isArray(key)) {
44
- key = [key];
45
- }
46
- restRequest({
47
- url: opts.path ||
48
- ((this.altUrl || this.resourceName) + `/${this.id}/metadata`),
49
- contentType: 'application/json',
50
- data: JSON.stringify(key),
51
- method: 'DELETE',
52
- error: null
53
- }).done((resp) => {
54
- this.set(opts.field || 'meta', resp.meta);
55
- if (_.isFunction(successCallback)) {
56
- successCallback();
57
- }
58
- }).fail((err) => {
59
- err.message = err.responseJSON.message;
60
- if (_.isFunction(errorCallback)) {
61
- errorCallback(err);
62
- }
63
- });
64
- },
65
-
66
- editMetadata: function (newKey, oldKey, value, successCallback, errorCallback, opts) {
67
- opts = opts || {};
68
-
69
- if (newKey === oldKey) {
70
- var datum = {};
71
- datum[newKey] = value;
72
- this._sendMetadata(datum, successCallback, errorCallback, opts);
73
- } else {
74
- if (_.has(this.get(opts.field || 'meta'), newKey)) {
75
- if (_.isFunction(errorCallback)) {
76
- errorCallback({ message: newKey + ' is already a metadata key' });
77
- }
78
- } else {
79
- var metas = {};
80
- metas[oldKey] = null;
81
- metas[newKey] = value;
82
- this._sendMetadata(metas, successCallback, errorCallback, opts);
83
- }
84
- }
85
- }
86
- };
87
-
88
- export default MetadataMixin;
@@ -1,187 +0,0 @@
1
- import $ from 'jquery';
2
- import _ from 'underscore';
3
- import Backbone from 'backbone';
4
-
5
- import { restRequest, getApiRoot } from '@girder/core/rest';
6
-
7
- /**
8
- * All models should descend from this base model, which provides a number
9
- * of utilities for synchronization.
10
- */
11
- var Model = Backbone.Model.extend({
12
- resourceName: null,
13
- altUrl: null,
14
- idAttribute: '_id',
15
-
16
- /**
17
- * Convenience method for incrementing numeric properties.
18
- * @param {string} attr The attribute to increment.
19
- * @param {number} [amount] The amount to increment by. Defaults to 1.
20
- */
21
- increment: function (attr, amount) {
22
- if (amount === undefined) {
23
- amount = 1;
24
- }
25
- if (!amount) {
26
- return;
27
- }
28
- return this.set(attr, this.get(attr) + amount);
29
- },
30
-
31
- /**
32
- * Get the name for this resource. By default, just the name attribute.
33
- */
34
- name: function () {
35
- return this.get('name');
36
- },
37
-
38
- /**
39
- * Save this model to the server. If this is a new model, meaning it has no
40
- * _id attribute, this will create it. If the _id is set, we update the
41
- * existing model. Triggers g:saved on success, and g:error on error.
42
- */
43
- save: function () {
44
- if (this.altUrl === null && this.resourceName === null) {
45
- throw new Error('An altUrl or resourceName must be set on the Model.');
46
- }
47
-
48
- var path, type;
49
- if (this.has('_id')) {
50
- path = (this.altUrl || this.resourceName) + '/' + this.get('_id');
51
- type = 'PUT';
52
- } else {
53
- path = (this.altUrl || this.resourceName);
54
- type = 'POST';
55
- }
56
- /* Don't save attributes which are objects using this call. For
57
- * instance, if the metadata of an item has keys that contain non-ascii
58
- * values, they won't get handled by the rest call. */
59
- var data = {};
60
- _.each(this.keys(), function (key) {
61
- var value = this.get(key);
62
- if (!_.isObject(value)) {
63
- data[key] = value;
64
- }
65
- }, this);
66
-
67
- return restRequest({
68
- url: path,
69
- method: type,
70
- data: data,
71
- error: null // don't do default error behavior (validation may fail)
72
- }).done((resp) => {
73
- this.set(resp);
74
- this.trigger('g:saved');
75
- }).fail((err) => {
76
- this.trigger('g:error', err);
77
- });
78
- },
79
-
80
- /**
81
- * Fetch a single resource from the server. Triggers g:fetched on success,
82
- * or g:error on error.
83
- *
84
- * @param {object|undefined} opts: additional options, which can include:
85
- * ignoreError: true - ignore the default error handler
86
- * extraPath - a string to append to the end of the resource URL
87
- * data - a dictionary of parameters to pass to the endpoint.
88
- */
89
- fetch: function (opts) {
90
- if (this.altUrl === null && this.resourceName === null) {
91
- throw new Error('An altUrl or resourceName must be set on the Model.');
92
- }
93
-
94
- opts = opts || {};
95
- var restOpts = {
96
- url: `${this.altUrl || this.resourceName}/${this.id}`
97
- };
98
- if (opts.extraPath) {
99
- restOpts.url += '/' + opts.extraPath;
100
- }
101
- if (opts.ignoreError) {
102
- restOpts.error = null;
103
- }
104
- if (opts.data) {
105
- restOpts.data = opts.data;
106
- }
107
- return restRequest(restOpts).done((resp) => {
108
- this.set(resp);
109
- if (opts.extraPath) {
110
- this.trigger('g:fetched.' + opts.extraPath);
111
- } else {
112
- this.trigger('g:fetched');
113
- }
114
- }).fail((err) => {
115
- this.trigger('g:error', err);
116
- });
117
- },
118
-
119
- /**
120
- * Get the path for downloading this resource via the API. Can be used
121
- * as the href property of a direct download link.
122
- * @param params {Object} list of key-value parameters to include in the
123
- * query string.
124
- */
125
- downloadUrl: function (params) {
126
- let url = `${getApiRoot()}/${this.altUrl || this.resourceName}/${this.id}/download`;
127
-
128
- if (params) {
129
- url += '?' + $.param(params);
130
- }
131
-
132
- return url;
133
- },
134
-
135
- /**
136
- * For models that can be downloaded, this method can be used to
137
- * initiate the download in the browser.
138
- */
139
- download: function () {
140
- window.location.assign(this.downloadUrl());
141
- },
142
-
143
- /**
144
- * Delete the model on the server.
145
- * @param opts Options, may contain:
146
- * throwError Whether to throw an error (bool, default=true)
147
- * progress Whether to record progress (bool, default=false)
148
- */
149
- destroy: function (opts) {
150
- if (this.altUrl === null && this.resourceName === null) {
151
- throw new Error('An altUrl or resourceName must be set on the Model.');
152
- }
153
-
154
- var args = {
155
- url: `${this.altUrl || this.resourceName}/${this.id}`,
156
- method: 'DELETE'
157
- };
158
-
159
- opts = opts || {};
160
- if (opts.progress === true) {
161
- args.url += '?progress=true';
162
- }
163
-
164
- if (opts.throwError !== false) {
165
- args.error = null;
166
- }
167
-
168
- return restRequest(args).done(() => {
169
- if (this.collection) {
170
- this.collection.remove(this);
171
- }
172
- this.trigger('g:deleted');
173
- }).fail((err) => {
174
- this.trigger('g:error', err);
175
- });
176
- },
177
-
178
- /**
179
- * Return the access level with respect to the current user
180
- */
181
- getAccessLevel: function () {
182
- return this.get('_accessLevel');
183
- }
184
-
185
- });
186
-
187
- export default Model;
@@ -1,189 +0,0 @@
1
- import _ from 'underscore';
2
-
3
- import { fetchCurrentUser, setCurrentToken, setCurrentUser } from '@girder/core/auth';
4
- import events from '@girder/core/events';
5
- import Model from '@girder/core/models/Model';
6
- import { restRequest } from '@girder/core/rest';
7
- import eventStream from '@girder/core/utilities/EventStream';
8
-
9
- var UserModel = Model.extend({
10
- resourceName: 'user',
11
-
12
- /**
13
- * Calling this function mutates the model in one of two ways: (1) if a user
14
- * is currently logged into Girder, the model will reflect that user; (2) if
15
- * no user is logged in, the model will become clear. To know which path
16
- * occurred, you can call this method, then install a one-time event handler
17
- * for the model's change event. In that handler, calling isNew() on the
18
- * model will tell if you if a user is logged in (false) or not (true).
19
- *
20
- * This is equivalent to invoking fetchCurrentUser(), then calling
21
- * clear() or set() on the model depending on whether the result of the call
22
- * is null or not.
23
- */
24
- current: function () {
25
- fetchCurrentUser()
26
- .done((user) => {
27
- if (user) {
28
- this.set(user);
29
- } else {
30
- this.clear();
31
- }
32
- });
33
- },
34
-
35
- name: function () {
36
- return this.get('firstName') + ' ' + this.get('lastName');
37
- },
38
-
39
- /**
40
- * When this user is added to a group, call this on the user model.
41
- */
42
- addToGroup: function (groupId) {
43
- var groups = this.get('groups') || [];
44
- groups.push(groupId);
45
- this.set('groups', groups);
46
- },
47
-
48
- /**
49
- * When this user is removed from a group, call this on the user model.
50
- */
51
- removeFromGroup: function (groupId) {
52
- var groups = this.get('groups') || [];
53
- var index = groups.indexOf(groupId);
54
-
55
- while (index >= 0) {
56
- groups.splice(index, 1);
57
- index = groups.indexOf(groupId);
58
- }
59
-
60
- this.set('groups', groups);
61
- },
62
-
63
- /**
64
- * When this user is invited to a group, call this on the user model.
65
- */
66
- addInvitation: function (groupId, level) {
67
- var invites = this.get('groupInvites') || [];
68
- invites.push({
69
- groupId: groupId,
70
- level: level
71
- });
72
-
73
- this.set('groupInvites', invites);
74
- },
75
-
76
- /**
77
- * When this user's invitation is deleted, either by joining the group or
78
- * having the invitation deleted manually, this should be called on the user
79
- * model.
80
- */
81
- removeInvitation: function (groupId) {
82
- var invites = this.get('groupInvites') || [];
83
- var filtered = _.reject(invites, _.matcher({ groupId: groupId }));
84
-
85
- this.set('groupInvites', filtered);
86
- },
87
-
88
- /**
89
- * Change the password for this user.
90
- */
91
- changePassword: function (oldPassword, newPassword) {
92
- return restRequest({
93
- url: `${this.resourceName}/password`,
94
- data: {
95
- old: oldPassword,
96
- new: newPassword
97
- },
98
- method: 'PUT',
99
- error: null
100
- }).done(() => {
101
- this.trigger('g:passwordChanged');
102
- }).fail((err) => {
103
- this.trigger('g:error', err);
104
- });
105
- },
106
-
107
- /**
108
- * Change the password for another user (as an admin).
109
- */
110
- adminChangePassword: function (newPassword) {
111
- return restRequest({
112
- url: `${this.resourceName}/${this.id}/password`,
113
- data: {
114
- password: newPassword
115
- },
116
- method: 'PUT',
117
- error: null
118
- }).done(() => {
119
- this.trigger('g:passwordChanged');
120
- }).fail((err) => {
121
- this.trigger('g:error', err);
122
- });
123
- },
124
-
125
- initializeEnableOtp: function () {
126
- return restRequest({
127
- url: `user/${this.id}/otp`,
128
- method: 'POST',
129
- error: null
130
- })
131
- .then((resp) => {
132
- return resp.totpUri;
133
- });
134
- },
135
-
136
- finializeEnableOtp: function (otpToken) {
137
- return restRequest({
138
- url: `user/${this.id}/otp`,
139
- method: 'PUT',
140
- headers: {
141
- 'Girder-OTP': otpToken
142
- },
143
- error: null
144
- })
145
- .done(() => {
146
- this.set('otp', true);
147
- });
148
- },
149
-
150
- disableOtp: function () {
151
- return restRequest({
152
- url: `user/${this.id}/otp`,
153
- method: 'DELETE',
154
- error: null
155
- })
156
- .done(() => {
157
- this.set('otp', false);
158
- });
159
- }
160
- }, {
161
- fromTemporaryToken: function (userId, token) {
162
- return restRequest({
163
- url: `user/password/temporary/${userId}`,
164
- method: 'GET',
165
- data: { token: token },
166
- error: null
167
- }).done((resp) => {
168
- resp.user.token = resp.authToken.token;
169
- eventStream.close();
170
- setCurrentUser(new UserModel(resp.user));
171
- setCurrentToken(resp.authToken.token);
172
- eventStream.open();
173
- events.trigger('g:login-changed');
174
- });
175
- },
176
-
177
- sendVerificationEmail: function (login) {
178
- return restRequest({
179
- url: 'user/verification',
180
- method: 'POST',
181
- data: {
182
- login: login
183
- },
184
- error: null
185
- });
186
- }
187
- });
188
-
189
- export default UserModel;
@@ -1,25 +0,0 @@
1
- import AccessControlledModel from './AccessControlledModel';
2
- import ApiKeyModel from './ApiKeyModel';
3
- import AssetstoreModel from './AssetstoreModel';
4
- import CollectionModel from './CollectionModel';
5
- import FileModel from './FileModel';
6
- import FolderModel from './FolderModel';
7
- import GroupModel from './GroupModel';
8
- import ItemModel from './ItemModel';
9
- import MetadataMixin from './MetadataMixin';
10
- import Model from './Model';
11
- import UserModel from './UserModel';
12
-
13
- export {
14
- AccessControlledModel,
15
- ApiKeyModel,
16
- AssetstoreModel,
17
- CollectionModel,
18
- FileModel,
19
- FolderModel,
20
- GroupModel,
21
- ItemModel,
22
- MetadataMixin,
23
- Model,
24
- UserModel
25
- };
@@ -1,11 +0,0 @@
1
- /**
2
- * Expose the symbols for a girder plugin under the window.girder.plugins
3
- * namespace. Required since each plugin is loaded dynamically.
4
- */
5
- var registerPluginNamespace = function (pluginName, symbols) {
6
- window.girder.plugins[pluginName] = symbols;
7
- };
8
-
9
- export {
10
- registerPluginNamespace
11
- };