geoserver-node-client 1.6.1 → 1.6.2

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.
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
7
+ exports.default = void 0;
12
8
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
13
9
  var _geoserver = require("./util/geoserver.js");
14
10
  /**
@@ -16,15 +12,14 @@ var _geoserver = require("./util/geoserver.js");
16
12
  *
17
13
  * @module SecurityClient
18
14
  */
19
- var SecurityClient = exports["default"] = /*#__PURE__*/function () {
15
+ class SecurityClient {
20
16
  /**
21
17
  * Creates a GeoServer REST SecurityClient instance.
22
18
  *
23
19
  * @param {String} url The URL of the GeoServer REST API endpoint
24
20
  * @param {String} auth The Basic Authentication string
25
21
  */
26
- function SecurityClient(url, auth) {
27
- (0, _classCallCheck2["default"])(this, SecurityClient);
22
+ constructor(url, auth) {
28
23
  this.url = url;
29
24
  this.auth = auth;
30
25
  }
@@ -36,572 +31,289 @@ var SecurityClient = exports["default"] = /*#__PURE__*/function () {
36
31
  *
37
32
  * @returns {Object} An object with all users
38
33
  */
39
- return (0, _createClass2["default"])(SecurityClient, [{
40
- key: "getAllUsers",
41
- value: (function () {
42
- var _getAllUsers = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
43
- var response, geoServerResponse;
44
- return _regenerator["default"].wrap(function (_context) {
45
- while (1) switch (_context.prev = _context.next) {
46
- case 0:
47
- _context.next = 1;
48
- return (0, _nodeFetch["default"])(this.url + 'security/usergroup/users.json', {
49
- credentials: 'include',
50
- method: 'GET',
51
- headers: {
52
- Authorization: this.auth
53
- }
54
- });
55
- case 1:
56
- response = _context.sent;
57
- if (response.ok) {
58
- _context.next = 3;
59
- break;
60
- }
61
- _context.next = 2;
62
- return (0, _geoserver.getGeoServerResponseText)(response);
63
- case 2:
64
- geoServerResponse = _context.sent;
65
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
66
- case 3:
67
- return _context.abrupt("return", response.json());
68
- case 4:
69
- case "end":
70
- return _context.stop();
71
- }
72
- }, _callee, this);
73
- }));
74
- function getAllUsers() {
75
- return _getAllUsers.apply(this, arguments);
34
+ async getAllUsers() {
35
+ const response = await (0, _nodeFetch.default)(this.url + 'security/usergroup/users.json', {
36
+ credentials: 'include',
37
+ method: 'GET',
38
+ headers: {
39
+ Authorization: this.auth
76
40
  }
77
- return getAllUsers;
78
- }()
79
- /**
80
- * Creates a new user.
81
- *
82
- * @param {String} username The name of the user to be created
83
- * @param {String} password The password of the user to be created
84
- *
85
- * @throws Error if request fails
86
- */
87
- )
88
- }, {
89
- key: "createUser",
90
- value: (function () {
91
- var _createUser = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(username, password) {
92
- var body, response, geoServerResponse, _t;
93
- return _regenerator["default"].wrap(function (_context2) {
94
- while (1) switch (_context2.prev = _context2.next) {
95
- case 0:
96
- body = {
97
- user: {
98
- userName: username,
99
- password: password,
100
- enabled: true
101
- }
102
- };
103
- _context2.next = 1;
104
- return (0, _nodeFetch["default"])(this.url + 'security/usergroup/users.json', {
105
- credentials: 'include',
106
- method: 'POST',
107
- headers: {
108
- Authorization: this.auth,
109
- 'Content-Type': 'application/json'
110
- },
111
- body: JSON.stringify(body)
112
- });
113
- case 1:
114
- response = _context2.sent;
115
- if (response.ok) {
116
- _context2.next = 5;
117
- break;
118
- }
119
- _context2.next = 2;
120
- return (0, _geoserver.getGeoServerResponseText)(response);
121
- case 2:
122
- geoServerResponse = _context2.sent;
123
- _t = response.status;
124
- _context2.next = _t === 404 ? 3 : 4;
125
- break;
126
- case 3:
127
- throw new _geoserver.GeoServerResponseError("User ".concat(username, " might already exists."), geoServerResponse);
128
- case 4:
129
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
130
- case 5:
131
- case "end":
132
- return _context2.stop();
133
- }
134
- }, _callee2, this);
135
- }));
136
- function createUser(_x, _x2) {
137
- return _createUser.apply(this, arguments);
41
+ });
42
+ if (!response.ok) {
43
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
44
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
45
+ }
46
+ return response.json();
47
+ }
48
+
49
+ /**
50
+ * Creates a new user.
51
+ *
52
+ * @param {String} username The name of the user to be created
53
+ * @param {String} password The password of the user to be created
54
+ *
55
+ * @throws Error if request fails
56
+ */
57
+ async createUser(username, password) {
58
+ const body = {
59
+ user: {
60
+ userName: username,
61
+ password: password,
62
+ enabled: true
138
63
  }
139
- return createUser;
140
- }()
141
- /**
142
- * Updates an existing user. User name is only taken for identification and
143
- * cannot be changed with this API call.
144
- *
145
- * @param {String} username The name of the user to be created
146
- * @param {String} password The password of the user to be created
147
- * @param {Boolean} enabled Enable / disable the user
148
- *
149
- * @throws Error if request fails
150
- */
151
- )
152
- }, {
153
- key: "updateUser",
154
- value: (function () {
155
- var _updateUser = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(username, password, enabled) {
156
- var body, response, geoServerResponse;
157
- return _regenerator["default"].wrap(function (_context3) {
158
- while (1) switch (_context3.prev = _context3.next) {
159
- case 0:
160
- body = {
161
- user: {
162
- password: password,
163
- enabled: enabled
164
- }
165
- };
166
- _context3.next = 1;
167
- return (0, _nodeFetch["default"])(this.url + 'security/usergroup/user/' + username, {
168
- credentials: 'include',
169
- method: 'POST',
170
- headers: {
171
- Authorization: this.auth,
172
- 'Content-Type': 'application/json'
173
- },
174
- body: JSON.stringify(body)
175
- });
176
- case 1:
177
- response = _context3.sent;
178
- if (response.ok) {
179
- _context3.next = 3;
180
- break;
181
- }
182
- _context3.next = 2;
183
- return (0, _geoserver.getGeoServerResponseText)(response);
184
- case 2:
185
- geoServerResponse = _context3.sent;
186
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
187
- case 3:
188
- case "end":
189
- return _context3.stop();
190
- }
191
- }, _callee3, this);
192
- }));
193
- function updateUser(_x3, _x4, _x5) {
194
- return _updateUser.apply(this, arguments);
64
+ };
65
+ const response = await (0, _nodeFetch.default)(this.url + 'security/usergroup/users.json', {
66
+ credentials: 'include',
67
+ method: 'POST',
68
+ headers: {
69
+ Authorization: this.auth,
70
+ 'Content-Type': 'application/json'
71
+ },
72
+ body: JSON.stringify(body)
73
+ });
74
+ if (!response.ok) {
75
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
76
+ switch (response.status) {
77
+ case 404:
78
+ throw new _geoserver.GeoServerResponseError(`User ${username} might already exists.`, geoServerResponse);
79
+ default:
80
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
195
81
  }
196
- return updateUser;
197
- }()
198
- /**
199
- * Deletes an existing user.
200
- *
201
- * @param {String} username The name of the user to be deleted
202
- *
203
- * @throws Error if request fails
204
- */
205
- )
206
- }, {
207
- key: "deleteUser",
208
- value: (function () {
209
- var _deleteUser = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(username) {
210
- var response, geoServerResponse;
211
- return _regenerator["default"].wrap(function (_context4) {
212
- while (1) switch (_context4.prev = _context4.next) {
213
- case 0:
214
- _context4.next = 1;
215
- return (0, _nodeFetch["default"])(this.url + 'security/usergroup/user/' + username, {
216
- credentials: 'include',
217
- method: 'DELETE',
218
- headers: {
219
- Authorization: this.auth
220
- }
221
- });
222
- case 1:
223
- response = _context4.sent;
224
- if (response.ok) {
225
- _context4.next = 3;
226
- break;
227
- }
228
- _context4.next = 2;
229
- return (0, _geoserver.getGeoServerResponseText)(response);
230
- case 2:
231
- geoServerResponse = _context4.sent;
232
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
233
- case 3:
234
- case "end":
235
- return _context4.stop();
236
- }
237
- }, _callee4, this);
238
- }));
239
- function deleteUser(_x6) {
240
- return _deleteUser.apply(this, arguments);
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Updates an existing user. User name is only taken for identification and
87
+ * cannot be changed with this API call.
88
+ *
89
+ * @param {String} username The name of the user to be created
90
+ * @param {String} password The password of the user to be created
91
+ * @param {Boolean} enabled Enable / disable the user
92
+ *
93
+ * @throws Error if request fails
94
+ */
95
+ async updateUser(username, password, enabled) {
96
+ const body = {
97
+ user: {
98
+ password: password,
99
+ enabled: enabled
241
100
  }
242
- return deleteUser;
243
- }()
244
- /**
245
- * Returns all roles registered in GeoServer.
246
- *
247
- * @throws Error if request fails
248
- *
249
- * @returns {Object} An object with all roles like { "roles": ["ADMIN", "GROUP_ADMIN"] }
250
- */
251
- )
252
- }, {
253
- key: "getAllRoles",
254
- value: (function () {
255
- var _getAllRoles = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
256
- var url, response, geoServerResponse;
257
- return _regenerator["default"].wrap(function (_context5) {
258
- while (1) switch (_context5.prev = _context5.next) {
259
- case 0:
260
- url = "".concat(this.url, "security/roles.json");
261
- _context5.next = 1;
262
- return (0, _nodeFetch["default"])(url, {
263
- credentials: 'include',
264
- method: 'GET',
265
- headers: {
266
- Authorization: this.auth
267
- }
268
- });
269
- case 1:
270
- response = _context5.sent;
271
- if (response.ok) {
272
- _context5.next = 3;
273
- break;
274
- }
275
- _context5.next = 2;
276
- return (0, _geoserver.getGeoServerResponseText)(response);
277
- case 2:
278
- geoServerResponse = _context5.sent;
279
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
280
- case 3:
281
- return _context5.abrupt("return", response.json());
282
- case 4:
283
- case "end":
284
- return _context5.stop();
285
- }
286
- }, _callee5, this);
287
- }));
288
- function getAllRoles() {
289
- return _getAllRoles.apply(this, arguments);
101
+ };
102
+ const response = await (0, _nodeFetch.default)(this.url + 'security/usergroup/user/' + username, {
103
+ credentials: 'include',
104
+ method: 'POST',
105
+ headers: {
106
+ Authorization: this.auth,
107
+ 'Content-Type': 'application/json'
108
+ },
109
+ body: JSON.stringify(body)
110
+ });
111
+ if (!response.ok) {
112
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
113
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Deletes an existing user.
119
+ *
120
+ * @param {String} username The name of the user to be deleted
121
+ *
122
+ * @throws Error if request fails
123
+ */
124
+ async deleteUser(username) {
125
+ const response = await (0, _nodeFetch.default)(this.url + 'security/usergroup/user/' + username, {
126
+ credentials: 'include',
127
+ method: 'DELETE',
128
+ headers: {
129
+ Authorization: this.auth
290
130
  }
291
- return getAllRoles;
292
- }()
293
- /**
294
- * Creates a new role.
295
- *
296
- * @param {String} role The name of the role to be created
297
- *
298
- * @throws Error if request fails
299
- */
300
- )
301
- }, {
302
- key: "createRole",
303
- value: (function () {
304
- var _createRole = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6(role) {
305
- var url, response, geoServerResponse, _t2;
306
- return _regenerator["default"].wrap(function (_context6) {
307
- while (1) switch (_context6.prev = _context6.next) {
308
- case 0:
309
- url = "".concat(this.url, "security/roles/role/").concat(role);
310
- _context6.next = 1;
311
- return (0, _nodeFetch["default"])(url, {
312
- credentials: 'include',
313
- method: 'POST',
314
- headers: {
315
- Authorization: this.auth
316
- }
317
- });
318
- case 1:
319
- response = _context6.sent;
320
- if (response.ok) {
321
- _context6.next = 5;
322
- break;
323
- }
324
- _context6.next = 2;
325
- return (0, _geoserver.getGeoServerResponseText)(response);
326
- case 2:
327
- geoServerResponse = _context6.sent;
328
- _t2 = response.status;
329
- _context6.next = _t2 === 404 ? 3 : 4;
330
- break;
331
- case 3:
332
- throw new _geoserver.GeoServerResponseError("Role ".concat(role, " might already exist."), geoServerResponse);
333
- case 4:
334
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
335
- case 5:
336
- case "end":
337
- return _context6.stop();
338
- }
339
- }, _callee6, this);
340
- }));
341
- function createRole(_x7) {
342
- return _createRole.apply(this, arguments);
131
+ });
132
+ if (!response.ok) {
133
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
134
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
135
+ }
136
+ }
137
+
138
+ /**
139
+ * Returns all roles registered in GeoServer.
140
+ *
141
+ * @throws Error if request fails
142
+ *
143
+ * @returns {Object} An object with all roles like { "roles": ["ADMIN", "GROUP_ADMIN"] }
144
+ */
145
+ async getAllRoles() {
146
+ const url = `${this.url}security/roles.json`;
147
+ const response = await (0, _nodeFetch.default)(url, {
148
+ credentials: 'include',
149
+ method: 'GET',
150
+ headers: {
151
+ Authorization: this.auth
343
152
  }
344
- return createRole;
345
- }()
346
- /**
347
- * Deletes an existing role.
348
- *
349
- * @param {String} role The name of the role to be deleted
350
- *
351
- * @throws Error if request fails
352
- */
353
- )
354
- }, {
355
- key: "deleteRole",
356
- value: (function () {
357
- var _deleteRole = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7(role) {
358
- var url, response, geoServerResponse, _t3;
359
- return _regenerator["default"].wrap(function (_context7) {
360
- while (1) switch (_context7.prev = _context7.next) {
361
- case 0:
362
- url = "".concat(this.url, "security/roles/role/").concat(role);
363
- _context7.next = 1;
364
- return (0, _nodeFetch["default"])(url, {
365
- credentials: 'include',
366
- method: 'DELETE',
367
- headers: {
368
- Authorization: this.auth
369
- }
370
- });
371
- case 1:
372
- response = _context7.sent;
373
- if (response.ok) {
374
- _context7.next = 5;
375
- break;
376
- }
377
- _context7.next = 2;
378
- return (0, _geoserver.getGeoServerResponseText)(response);
379
- case 2:
380
- geoServerResponse = _context7.sent;
381
- _t3 = response.status;
382
- _context7.next = _t3 === 404 ? 3 : 4;
383
- break;
384
- case 3:
385
- throw new _geoserver.GeoServerResponseError("Role ".concat(role, " not existing."), geoServerResponse);
386
- case 4:
387
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
388
- case 5:
389
- case "end":
390
- return _context7.stop();
391
- }
392
- }, _callee7, this);
393
- }));
394
- function deleteRole(_x8) {
395
- return _deleteRole.apply(this, arguments);
153
+ });
154
+ if (!response.ok) {
155
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
156
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
157
+ }
158
+ return response.json();
159
+ }
160
+
161
+ /**
162
+ * Creates a new role.
163
+ *
164
+ * @param {String} role The name of the role to be created
165
+ *
166
+ * @throws Error if request fails
167
+ */
168
+ async createRole(role) {
169
+ const url = `${this.url}security/roles/role/${role}`;
170
+ const response = await (0, _nodeFetch.default)(url, {
171
+ credentials: 'include',
172
+ method: 'POST',
173
+ headers: {
174
+ Authorization: this.auth
396
175
  }
397
- return deleteRole;
398
- }()
399
- /**
400
- * Associates the given role to the user.
401
- *
402
- * @param {String} username The name of the user to add the role to
403
- * @param {String} role The role to associate
404
- *
405
- * @throws Error if request fails
406
- */
407
- )
408
- }, {
409
- key: "associateUserRole",
410
- value: (function () {
411
- var _associateUserRole = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee8(username, role) {
412
- var response, geoServerResponse;
413
- return _regenerator["default"].wrap(function (_context8) {
414
- while (1) switch (_context8.prev = _context8.next) {
415
- case 0:
416
- _context8.next = 1;
417
- return (0, _nodeFetch["default"])("".concat(this.url, "security/roles/role/").concat(role, "/user/").concat(username), {
418
- credentials: 'include',
419
- method: 'POST',
420
- headers: {
421
- Authorization: this.auth
422
- }
423
- });
424
- case 1:
425
- response = _context8.sent;
426
- if (response.ok) {
427
- _context8.next = 3;
428
- break;
429
- }
430
- _context8.next = 2;
431
- return (0, _geoserver.getGeoServerResponseText)(response);
432
- case 2:
433
- geoServerResponse = _context8.sent;
434
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
435
- case 3:
436
- case "end":
437
- return _context8.stop();
438
- }
439
- }, _callee8, this);
440
- }));
441
- function associateUserRole(_x9, _x0) {
442
- return _associateUserRole.apply(this, arguments);
176
+ });
177
+ if (!response.ok) {
178
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
179
+ switch (response.status) {
180
+ case 404:
181
+ throw new _geoserver.GeoServerResponseError(`Role ${role} might already exist.`, geoServerResponse);
182
+ default:
183
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
443
184
  }
444
- return associateUserRole;
445
- }()
446
- /**
447
- * Returns all data access rules registered in GeoServer.
448
- *
449
- * @throws Error if request fails
450
- *
451
- * @returns {Object} An object with all data access rules like { "*.*.r": ["ADMIN", "GROUP_ADMIN"] }
452
- */
453
- )
454
- }, {
455
- key: "getAllAccessRules",
456
- value: (function () {
457
- var _getAllAccessRules = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee9() {
458
- var url, response, geoServerResponse;
459
- return _regenerator["default"].wrap(function (_context9) {
460
- while (1) switch (_context9.prev = _context9.next) {
461
- case 0:
462
- url = "".concat(this.url, "security/acl/layers.json");
463
- _context9.next = 1;
464
- return (0, _nodeFetch["default"])(url, {
465
- credentials: 'include',
466
- method: 'GET',
467
- headers: {
468
- Authorization: this.auth
469
- }
470
- });
471
- case 1:
472
- response = _context9.sent;
473
- if (response.ok) {
474
- _context9.next = 3;
475
- break;
476
- }
477
- _context9.next = 2;
478
- return (0, _geoserver.getGeoServerResponseText)(response);
479
- case 2:
480
- geoServerResponse = _context9.sent;
481
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
482
- case 3:
483
- return _context9.abrupt("return", response.json());
484
- case 4:
485
- case "end":
486
- return _context9.stop();
487
- }
488
- }, _callee9, this);
489
- }));
490
- function getAllAccessRules() {
491
- return _getAllAccessRules.apply(this, arguments);
185
+ }
186
+ }
187
+
188
+ /**
189
+ * Deletes an existing role.
190
+ *
191
+ * @param {String} role The name of the role to be deleted
192
+ *
193
+ * @throws Error if request fails
194
+ */
195
+ async deleteRole(role) {
196
+ const url = `${this.url}security/roles/role/${role}`;
197
+ const response = await (0, _nodeFetch.default)(url, {
198
+ credentials: 'include',
199
+ method: 'DELETE',
200
+ headers: {
201
+ Authorization: this.auth
492
202
  }
493
- return getAllAccessRules;
494
- }()
495
- /**
496
- * Creates a new data access rule.
497
- *
498
- * @param {String} rule The rule in the form '<MY_WS>.<MY_LAYER>.r'
499
- * @param {String[]} roles The roles to allow access to rule
500
- *
501
- * @throws Error if request fails
502
- */
503
- )
504
- }, {
505
- key: "createDataAccessRule",
506
- value: (function () {
507
- var _createDataAccessRule = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0(rule, roles) {
508
- var url, body, response, geoServerResponse, _t4;
509
- return _regenerator["default"].wrap(function (_context0) {
510
- while (1) switch (_context0.prev = _context0.next) {
511
- case 0:
512
- url = "".concat(this.url, "security/acl/layers");
513
- body = {};
514
- body[rule] = roles.join(',');
515
- _context0.next = 1;
516
- return (0, _nodeFetch["default"])(url, {
517
- credentials: 'include',
518
- method: 'POST',
519
- headers: {
520
- Authorization: this.auth,
521
- 'Content-Type': 'application/json'
522
- },
523
- body: JSON.stringify(body)
524
- });
525
- case 1:
526
- response = _context0.sent;
527
- if (response.ok) {
528
- _context0.next = 5;
529
- break;
530
- }
531
- _context0.next = 2;
532
- return (0, _geoserver.getGeoServerResponseText)(response);
533
- case 2:
534
- geoServerResponse = _context0.sent;
535
- _t4 = response.status;
536
- _context0.next = _t4 === 404 ? 3 : 4;
537
- break;
538
- case 3:
539
- throw new _geoserver.GeoServerResponseError("Rule ".concat(rule, " might already exists."), geoServerResponse);
540
- case 4:
541
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
542
- case 5:
543
- case "end":
544
- return _context0.stop();
545
- }
546
- }, _callee0, this);
547
- }));
548
- function createDataAccessRule(_x1, _x10) {
549
- return _createDataAccessRule.apply(this, arguments);
203
+ });
204
+ if (!response.ok) {
205
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
206
+ switch (response.status) {
207
+ case 404:
208
+ throw new _geoserver.GeoServerResponseError(`Role ${role} not existing.`, geoServerResponse);
209
+ default:
210
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
550
211
  }
551
- return createDataAccessRule;
552
- }()
553
- /**
554
- * Deletes an existing data access rule.
555
- *
556
- * @param {String} rule The rule to be deleted, like '<MY_WS>.<MY_LAYER>.r'
557
- *
558
- * @throws Error if request fails
559
- */
560
- )
561
- }, {
562
- key: "deleteDataAccessRule",
563
- value: (function () {
564
- var _deleteDataAccessRule = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee1(rule) {
565
- var url, response, geoServerResponse, _t5;
566
- return _regenerator["default"].wrap(function (_context1) {
567
- while (1) switch (_context1.prev = _context1.next) {
568
- case 0:
569
- url = "".concat(this.url, "security/acl/layers/").concat(rule);
570
- _context1.next = 1;
571
- return (0, _nodeFetch["default"])(url, {
572
- credentials: 'include',
573
- method: 'DELETE',
574
- headers: {
575
- Authorization: this.auth
576
- }
577
- });
578
- case 1:
579
- response = _context1.sent;
580
- if (response.ok) {
581
- _context1.next = 5;
582
- break;
583
- }
584
- _context1.next = 2;
585
- return (0, _geoserver.getGeoServerResponseText)(response);
586
- case 2:
587
- geoServerResponse = _context1.sent;
588
- _t5 = response.status;
589
- _context1.next = _t5 === 404 ? 3 : 4;
590
- break;
591
- case 3:
592
- throw new _geoserver.GeoServerResponseError("Rule ".concat(rule, " not existing."), geoServerResponse);
593
- case 4:
594
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
595
- case 5:
596
- case "end":
597
- return _context1.stop();
598
- }
599
- }, _callee1, this);
600
- }));
601
- function deleteDataAccessRule(_x11) {
602
- return _deleteDataAccessRule.apply(this, arguments);
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Associates the given role to the user.
217
+ *
218
+ * @param {String} username The name of the user to add the role to
219
+ * @param {String} role The role to associate
220
+ *
221
+ * @throws Error if request fails
222
+ */
223
+ async associateUserRole(username, role) {
224
+ const response = await (0, _nodeFetch.default)(`${this.url}security/roles/role/${role}/user/${username}`, {
225
+ credentials: 'include',
226
+ method: 'POST',
227
+ headers: {
228
+ Authorization: this.auth
229
+ }
230
+ });
231
+ if (!response.ok) {
232
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
233
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
234
+ }
235
+ }
236
+
237
+ /**
238
+ * Returns all data access rules registered in GeoServer.
239
+ *
240
+ * @throws Error if request fails
241
+ *
242
+ * @returns {Object} An object with all data access rules like { "*.*.r": ["ADMIN", "GROUP_ADMIN"] }
243
+ */
244
+ async getAllAccessRules() {
245
+ const url = `${this.url}security/acl/layers.json`;
246
+ const response = await (0, _nodeFetch.default)(url, {
247
+ credentials: 'include',
248
+ method: 'GET',
249
+ headers: {
250
+ Authorization: this.auth
603
251
  }
604
- return deleteDataAccessRule;
605
- }())
606
- }]);
607
- }();
252
+ });
253
+ if (!response.ok) {
254
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
255
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
256
+ }
257
+ return response.json();
258
+ }
259
+
260
+ /**
261
+ * Creates a new data access rule.
262
+ *
263
+ * @param {String} rule The rule in the form '<MY_WS>.<MY_LAYER>.r'
264
+ * @param {String[]} roles The roles to allow access to rule
265
+ *
266
+ * @throws Error if request fails
267
+ */
268
+ async createDataAccessRule(rule, roles) {
269
+ const url = `${this.url}security/acl/layers`;
270
+ const body = {};
271
+ body[rule] = roles.join(',');
272
+ const response = await (0, _nodeFetch.default)(url, {
273
+ credentials: 'include',
274
+ method: 'POST',
275
+ headers: {
276
+ Authorization: this.auth,
277
+ 'Content-Type': 'application/json'
278
+ },
279
+ body: JSON.stringify(body)
280
+ });
281
+ if (!response.ok) {
282
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
283
+ switch (response.status) {
284
+ case 404:
285
+ throw new _geoserver.GeoServerResponseError(`Rule ${rule} might already exists.`, geoServerResponse);
286
+ default:
287
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
288
+ }
289
+ }
290
+ }
291
+
292
+ /**
293
+ * Deletes an existing data access rule.
294
+ *
295
+ * @param {String} rule The rule to be deleted, like '<MY_WS>.<MY_LAYER>.r'
296
+ *
297
+ * @throws Error if request fails
298
+ */
299
+ async deleteDataAccessRule(rule) {
300
+ const url = `${this.url}security/acl/layers/${rule}`;
301
+ const response = await (0, _nodeFetch.default)(url, {
302
+ credentials: 'include',
303
+ method: 'DELETE',
304
+ headers: {
305
+ Authorization: this.auth
306
+ }
307
+ });
308
+ if (!response.ok) {
309
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
310
+ switch (response.status) {
311
+ case 404:
312
+ throw new _geoserver.GeoServerResponseError(`Rule ${rule} not existing.`, geoServerResponse);
313
+ default:
314
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
315
+ }
316
+ }
317
+ }
318
+ }
319
+ exports.default = SecurityClient;