authscape 1.0.538 → 1.0.540

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -9303,13 +9303,12 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
9303
9303
  Object.defineProperty(exports, "__esModule", {
9304
9304
  value: true
9305
9305
  });
9306
- exports["default"] = UserEditor;
9306
+ exports.UserEditor = UserEditor;
9307
9307
  var _react = _interopRequireWildcard(require("react"));
9308
9308
  var _system = require("@mui/system");
9309
9309
  var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
9310
9310
  var _material = require("@mui/material");
9311
9311
  var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
9312
- var _authscape = require("authscape");
9313
9312
  var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
9314
9313
  var _InputLabel = _interopRequireDefault(require("@mui/material/InputLabel"));
9315
9314
  var _Select = _interopRequireDefault(require("@mui/material/Select"));
@@ -9332,10 +9331,14 @@ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructur
9332
9331
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9333
9332
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9334
9333
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
9335
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9334
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // import { apiService } from 'authscape';
9336
9335
  function UserEditor(_ref) {
9337
9336
  var _ref$userId = _ref.userId,
9338
- userId = _ref$userId === void 0 ? null : _ref$userId;
9337
+ userId = _ref$userId === void 0 ? null : _ref$userId,
9338
+ _ref$customFields = _ref.customFields,
9339
+ customFields = _ref$customFields === void 0 ? null : _ref$customFields,
9340
+ _ref$onSaved = _ref.onSaved,
9341
+ onSaved = _ref$onSaved === void 0 ? null : _ref$onSaved;
9339
9342
  var _useForm = (0, _reactHookForm.useForm)(),
9340
9343
  control = _useForm.control,
9341
9344
  register = _useForm.register,
@@ -9381,14 +9384,14 @@ function UserEditor(_ref) {
9381
9384
  while (1) switch (_context.prev = _context.next) {
9382
9385
  case 0:
9383
9386
  _context.next = 2;
9384
- return (0, _authscape.apiService)().get("/UserManagement/GetRoles");
9387
+ return apiService().get("/UserManagement/GetRoles");
9385
9388
  case 2:
9386
9389
  responseRoles = _context.sent;
9387
9390
  if (responseRoles != null && responseRoles.status == 200) {
9388
9391
  setRole(responseRoles.data);
9389
9392
  }
9390
9393
  _context.next = 6;
9391
- return (0, _authscape.apiService)().get("/UserManagement/GetPermissions");
9394
+ return apiService().get("/UserManagement/GetPermissions");
9392
9395
  case 6:
9393
9396
  responsePermissions = _context.sent;
9394
9397
  if (responsePermissions != null && responsePermissions.status == 200) {
@@ -9410,16 +9413,18 @@ function UserEditor(_ref) {
9410
9413
  if (userId != null) {
9411
9414
  var fetchData = /*#__PURE__*/function () {
9412
9415
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
9413
- var response, roleNames, index, role;
9416
+ var response, roleNames, index, role, permissionNames, _index, permission;
9414
9417
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
9415
9418
  while (1) switch (_context2.prev = _context2.next) {
9416
9419
  case 0:
9417
9420
  _context2.next = 2;
9418
- return (0, _authscape.apiService)().get("/UserManagement/GetUser?userId=" + userId);
9421
+ return apiService().get("/UserManagement/GetUser?userId=" + userId);
9419
9422
  case 2:
9420
9423
  response = _context2.sent;
9421
9424
  if (response != null && response.status == 200) {
9422
9425
  setUser(response.data);
9426
+
9427
+ // assign all selected roles
9423
9428
  if (response.data.roles != null) {
9424
9429
  roleNames = [];
9425
9430
  for (index = 0; index < response.data.roles.length; index++) {
@@ -9428,6 +9433,16 @@ function UserEditor(_ref) {
9428
9433
  }
9429
9434
  setSelectedRole(roleNames);
9430
9435
  }
9436
+
9437
+ // assign all selected permissions
9438
+ if (response.data.permissions != null) {
9439
+ permissionNames = [];
9440
+ for (_index = 0; _index < response.data.permissions.length; _index++) {
9441
+ permission = response.data.permissions[_index];
9442
+ permissionNames.push(permission);
9443
+ }
9444
+ setSelectedPermission(permissionNames);
9445
+ }
9431
9446
  }
9432
9447
  case 4:
9433
9448
  case "end":
@@ -9442,20 +9457,7 @@ function UserEditor(_ref) {
9442
9457
  fetchData();
9443
9458
  }
9444
9459
  }, [userId]);
9445
- var fields = ["FirstName", "LastName", "Company", "IsActive",
9446
- // "Department / Group",
9447
- "Email"
9448
- // "Email Verified",
9449
- // "Business Phone",
9450
- // "Mobile Phone",
9451
- // "Fax",
9452
- // "Street",
9453
- // "City",
9454
- // "State",
9455
- // "Postal Code",
9456
- // "Region"
9457
- ];
9458
-
9460
+ var fields = ["FirstName", "LastName", "Company", "IsActive", "Email"];
9459
9461
  var findTheValue = function findTheValue(field) {
9460
9462
  var result = "";
9461
9463
  if (user != null) {
@@ -9467,41 +9469,138 @@ function UserEditor(_ref) {
9467
9469
  }
9468
9470
  return result;
9469
9471
  };
9472
+ var findCustomFieldValue = function findCustomFieldValue(field) {
9473
+ var result = "";
9474
+ if (user != null && user.userCustomFields) {
9475
+ user.userCustomFields.forEach(function (userCustomField) {
9476
+ if (field.toLowerCase() == userCustomField.name.toLowerCase()) {
9477
+ result = userCustomField.value;
9478
+ }
9479
+ });
9480
+ }
9481
+ return result;
9482
+ };
9483
+ var renderCustomField = function renderCustomField(customFields) {
9484
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, user != null && customFields.map(function (field) {
9485
+ var result = findCustomFieldValue(field.name);
9486
+ return /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
9487
+ name: field.name,
9488
+ control: control,
9489
+ rules: {
9490
+ required: field.isRequired
9491
+ },
9492
+ render: function render(_ref4) {
9493
+ var renderField = _ref4.renderField;
9494
+ return /*#__PURE__*/_react["default"].createElement(_TextField["default"], _extends({
9495
+ label: field.name,
9496
+ variant: "outlined",
9497
+ defaultValue: result,
9498
+ margin: "normal",
9499
+ fullWidth: true
9500
+ }, register(field.name, {
9501
+ required: field.isRequired
9502
+ }), renderField));
9503
+ }
9504
+ }), errors[field.name] && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9505
+ color: "red"
9506
+ }, field.name, " is required."));
9507
+ }));
9508
+ };
9509
+ var renderSystemField = function renderSystemField(customFields) {
9510
+ var isSystemField = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
9511
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, user != null && customFields.map(function (field) {
9512
+ var result = findTheValue(field);
9513
+ return /*#__PURE__*/_react["default"].createElement(_system.Box, null, field == "IsActive" && /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
9514
+ name: field,
9515
+ control: control,
9516
+ rules: {
9517
+ required: false
9518
+ },
9519
+ render: function render(_ref5) {
9520
+ var renderField = _ref5.renderField;
9521
+ return /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], _extends({
9522
+ control: /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
9523
+ defaultChecked: result
9524
+ }),
9525
+ label: field
9526
+ }, register(field, {
9527
+ required: false
9528
+ }), renderField));
9529
+ }
9530
+ }), errors[field] && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9531
+ color: "red"
9532
+ }, field, " is required.")), field != "IsActive" && /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
9533
+ name: field,
9534
+ control: control,
9535
+ rules: {
9536
+ required: true
9537
+ },
9538
+ render: function render(_ref6) {
9539
+ var renderField = _ref6.renderField;
9540
+ return /*#__PURE__*/_react["default"].createElement(_TextField["default"], _extends({
9541
+ label: field,
9542
+ variant: "outlined",
9543
+ defaultValue: result,
9544
+ margin: "normal",
9545
+ fullWidth: true
9546
+ }, register(field, {
9547
+ required: true
9548
+ }), renderField));
9549
+ }
9550
+ }), errors[field] && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9551
+ color: "red"
9552
+ }, field, " is required.")));
9553
+ }));
9554
+ };
9470
9555
  return /*#__PURE__*/_react["default"].createElement(_system.Box, {
9471
9556
  sx: {
9472
- paddingTop: 8
9557
+ paddingTop: 0
9473
9558
  }
9474
- }, /*#__PURE__*/_react["default"].createElement("form", {
9559
+ }, /*#__PURE__*/_react["default"].createElement(_system.Box, {
9560
+ sx: {
9561
+ paddingBottom: 2
9562
+ }
9563
+ }, "Edit Account"), /*#__PURE__*/_react["default"].createElement("form", {
9475
9564
  onSubmit: handleSubmit( /*#__PURE__*/function () {
9476
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
9477
- var response;
9565
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(data) {
9566
+ var userCustomFields, response;
9478
9567
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
9479
9568
  while (1) switch (_context3.prev = _context3.next) {
9480
9569
  case 0:
9481
- _context3.next = 2;
9482
- return (0, _authscape.apiService)().put("/UserManagement/UpdateUser", {
9570
+ userCustomFields = [];
9571
+ customFields.forEach(function (customField) {
9572
+ userCustomFields.push({
9573
+ name: customField.name,
9574
+ value: data[customField.name]
9575
+ });
9576
+ });
9577
+ _context3.next = 4;
9578
+ return apiService().put("/UserManagement/UpdateUser", {
9483
9579
  id: userId,
9484
9580
  firstName: data.FirstName,
9485
9581
  lastName: data.LastName,
9486
9582
  company: data.Company,
9487
9583
  email: data.Email,
9488
9584
  isActive: data.IsActive,
9489
- roles: data.roles != "" ? data.roles : null,
9490
- permissions: data.permissions != "" ? data.permissions : null
9585
+ roles: selectedRoles != "" ? selectedRoles : null,
9586
+ permissions: selectedPermission != "" ? selectedPermission : null,
9587
+ userCustomFields: userCustomFields
9491
9588
  });
9492
- case 2:
9589
+ case 4:
9493
9590
  response = _context3.sent;
9494
9591
  if (response != null && response.status == 200) {
9495
- alert("Updated the user");
9592
+ if (onSaved != null) {
9593
+ onSaved();
9594
+ }
9496
9595
  }
9497
- case 4:
9596
+ case 6:
9498
9597
  case "end":
9499
9598
  return _context3.stop();
9500
9599
  }
9501
9600
  }, _callee3);
9502
9601
  }));
9503
9602
  return function (_x2) {
9504
- return _ref4.apply(this, arguments);
9603
+ return _ref7.apply(this, arguments);
9505
9604
  };
9506
9605
  }()),
9507
9606
  noValidate: true,
@@ -9512,49 +9611,7 @@ function UserEditor(_ref) {
9512
9611
  }, /*#__PURE__*/_react["default"].createElement(_material.Grid, {
9513
9612
  item: true,
9514
9613
  xs: 6
9515
- }, /*#__PURE__*/_react["default"].createElement(_system.Box, null, user != null && fields.map(function (field) {
9516
- var result = findTheValue(field);
9517
- return /*#__PURE__*/_react["default"].createElement(_system.Box, null, field == "IsActive" && /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
9518
- name: field,
9519
- control: control,
9520
- rules: {
9521
- required: false
9522
- },
9523
- render: function render(_ref5) {
9524
- var renderField = _ref5.renderField;
9525
- return /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], _extends({
9526
- control: /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
9527
- defaultChecked: result
9528
- }),
9529
- label: field
9530
- }, register(field, {
9531
- required: false
9532
- }), renderField));
9533
- }
9534
- }), errors[field] && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9535
- color: "red"
9536
- }, field, " is required.")), field != "IsActive" && /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_reactHookForm.Controller, {
9537
- name: field,
9538
- control: control,
9539
- rules: {
9540
- required: true
9541
- },
9542
- render: function render(_ref6) {
9543
- var renderField = _ref6.renderField;
9544
- return /*#__PURE__*/_react["default"].createElement(_TextField["default"], _extends({
9545
- label: field,
9546
- variant: "outlined",
9547
- defaultValue: result,
9548
- margin: "normal",
9549
- fullWidth: true
9550
- }, register(field, {
9551
- required: true
9552
- }), renderField));
9553
- }
9554
- }), errors[field] && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9555
- color: "red"
9556
- }, field, " is required.")));
9557
- }))), /*#__PURE__*/_react["default"].createElement(_material.Grid, {
9614
+ }, /*#__PURE__*/_react["default"].createElement(_system.Box, null, renderSystemField(fields), renderCustomField(customFields))), /*#__PURE__*/_react["default"].createElement(_material.Grid, {
9558
9615
  item: true,
9559
9616
  xs: 6
9560
9617
  }, /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_FormControl["default"], {
@@ -9639,7 +9696,11 @@ function UserEditor(_ref) {
9639
9696
  }));
9640
9697
  }))), errors.permissions && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
9641
9698
  color: "red"
9642
- }, "permissions", " is required.")))), /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(_material.Button, {
9699
+ }, "permissions", " is required.")))), /*#__PURE__*/_react["default"].createElement(_system.Box, {
9700
+ sx: {
9701
+ paddingTop: 2
9702
+ }
9703
+ }, /*#__PURE__*/_react["default"].createElement(_material.Button, {
9643
9704
  variant: "contained",
9644
9705
  type: "submit"
9645
9706
  }, "Submit"))));
@@ -9655,7 +9716,6 @@ var _react = _interopRequireWildcard(require("react"));
9655
9716
  var _system = require("@mui/system");
9656
9717
  var _material = require("@mui/material");
9657
9718
  var _Stack = _interopRequireDefault(require("@mui/material/Stack"));
9658
- var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
9659
9719
  var _Table = _interopRequireDefault(require("@mui/material/Table"));
9660
9720
  var _TableBody = _interopRequireDefault(require("@mui/material/TableBody"));
9661
9721
  var _TableCell = _interopRequireDefault(require("@mui/material/TableCell"));
@@ -9684,12 +9744,13 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
9684
9744
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9685
9745
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
9686
9746
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // import { FileUploader, apiService } from 'authscape';
9747
+ // import { UserEditor } from '../../components/users/userEditor';
9748
+
9687
9749
  function UserManagement(_ref) {
9688
- var _ref$onUploadComplete = _ref.onUploadCompleted,
9750
+ var _ref$customFields = _ref.customFields,
9751
+ customFields = _ref$customFields === void 0 ? null : _ref$customFields,
9752
+ _ref$onUploadComplete = _ref.onUploadCompleted,
9689
9753
  _onUploadCompleted = _ref$onUploadComplete === void 0 ? null : _ref$onUploadComplete;
9690
- // const [comments, setComments] = useState([]);
9691
- // const [message, setMessage] = useState("");
9692
-
9693
9754
  var _useState = (0, _react.useState)(null),
9694
9755
  _useState2 = _slicedToArray(_useState, 2),
9695
9756
  showUserDetails = _useState2[0],
@@ -9847,7 +9908,11 @@ function UserManagement(_ref) {
9847
9908
  maxWidth: "xl",
9848
9909
  fullWidth: true
9849
9910
  }, /*#__PURE__*/_react["default"].createElement(_DialogContent["default"], null, /*#__PURE__*/_react["default"].createElement(_system.Box, null, /*#__PURE__*/_react["default"].createElement(UserEditor, {
9850
- userId: showUserDetails
9911
+ userId: showUserDetails,
9912
+ customFields: customFields,
9913
+ onSaved: function onSaved() {
9914
+ setShowUserDetails(null);
9915
+ }
9851
9916
  })))));
9852
9917
  }
9853
9918
  "use strict";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "authscape",
3
- "version": "1.0.538",
3
+ "version": "1.0.540",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -3,7 +3,7 @@ import { Box } from '@mui/system';
3
3
  import TextField from '@mui/material/TextField';
4
4
  import { Button, Grid } from '@mui/material';
5
5
  import Typography from '@mui/material/Typography';
6
- import { apiService } from 'authscape';
6
+ // import { apiService } from 'authscape';
7
7
  import FormControl from '@mui/material/FormControl';
8
8
  import InputLabel from '@mui/material/InputLabel';
9
9
  import Select from '@mui/material/Select';
@@ -15,7 +15,7 @@ import { useForm, Controller } from 'react-hook-form';
15
15
  import FormControlLabel from '@mui/material/FormControlLabel';
16
16
  import Switch from '@mui/material/Switch';
17
17
 
18
- export default function UserEditor({userId = null}) {
18
+ export function UserEditor({userId = null, customFields = null, onSaved = null}) {
19
19
 
20
20
  const {control, register, handleSubmit, formState: { errors }, watch, setValue } = useForm();
21
21
 
@@ -69,6 +69,7 @@ export default function UserEditor({userId = null}) {
69
69
  {
70
70
  setUser(response.data);
71
71
 
72
+ // assign all selected roles
72
73
  if (response.data.roles != null)
73
74
  {
74
75
  let roleNames = [];
@@ -79,6 +80,18 @@ export default function UserEditor({userId = null}) {
79
80
  }
80
81
  setSelectedRole(roleNames);
81
82
  }
83
+
84
+ // assign all selected permissions
85
+ if (response.data.permissions != null)
86
+ {
87
+ let permissionNames = [];
88
+ for (let index = 0; index < response.data.permissions.length; index++) {
89
+ const permission = response.data.permissions[index];
90
+
91
+ permissionNames.push(permission);
92
+ }
93
+ setSelectedPermission(permissionNames);
94
+ }
82
95
 
83
96
  }
84
97
  }
@@ -92,17 +105,7 @@ export default function UserEditor({userId = null}) {
92
105
  "LastName",
93
106
  "Company",
94
107
  "IsActive",
95
- // "Department / Group",
96
- "Email",
97
- // "Email Verified",
98
- // "Business Phone",
99
- // "Mobile Phone",
100
- // "Fax",
101
- // "Street",
102
- // "City",
103
- // "State",
104
- // "Postal Code",
105
- // "Region"
108
+ "Email"
106
109
  ]
107
110
 
108
111
  const findTheValue = (field) => {
@@ -123,26 +126,155 @@ export default function UserEditor({userId = null}) {
123
126
  return result;
124
127
  }
125
128
 
129
+ const findCustomFieldValue = (field) => {
130
+
131
+ let result = "";
132
+ if (user != null && user.userCustomFields)
133
+ {
134
+ user.userCustomFields.forEach(userCustomField => {
135
+
136
+ if (field.toLowerCase() == userCustomField.name.toLowerCase())
137
+ {
138
+ result = userCustomField.value;
139
+ }
140
+
141
+ });
142
+ }
143
+
144
+ return result;
145
+ }
146
+
147
+ const renderCustomField = (customFields) => {
148
+
149
+ return (
150
+ <>
151
+ {user != null && customFields.map((field) => {
152
+
153
+ let result = findCustomFieldValue(field.name);
154
+
155
+ return (
156
+ <Box>
157
+ <Controller name={field.name}
158
+ control={control}
159
+ rules={{
160
+ required: field.isRequired,
161
+ }}
162
+ render={({renderField}) =>
163
+ <TextField
164
+ label={field.name}
165
+ variant="outlined"
166
+ defaultValue={result}
167
+ margin="normal"
168
+ fullWidth
169
+ {...register(field.name, { required: field.isRequired })}
170
+ {...renderField}
171
+ />
172
+ }
173
+ />
174
+ {errors[field.name] && <Typography color={"red"}>{field.name} is required.</Typography>}
175
+ </Box>
176
+ )
177
+
178
+ })}
179
+ </>
180
+ )
181
+ }
182
+
183
+ const renderSystemField = (customFields, isSystemField = false) => {
184
+
185
+ return (
186
+ <>
187
+ {user != null && customFields.map((field) => {
188
+
189
+ let result = findTheValue(field);
190
+
191
+ return (
192
+ <Box>
193
+
194
+ {field == "IsActive" &&
195
+ <Box>
196
+ <Controller name={field}
197
+ control={control}
198
+ rules={{
199
+ required: false,
200
+ }}
201
+ render={({renderField}) =>
202
+ <FormControlLabel control={<Switch defaultChecked={result} />} label={field} {...register(field, { required: false })} {...renderField} />
203
+ }
204
+ />
205
+ {errors[field] && <Typography color={"red"}>{field} is required.</Typography>}
206
+
207
+ </Box>
208
+ }
209
+
210
+ {field != "IsActive" &&
211
+ <Box>
212
+ <Controller name={field}
213
+ control={control}
214
+ rules={{
215
+ required: true,
216
+ }}
217
+ render={({renderField}) =>
218
+ <TextField
219
+ label={field}
220
+ variant="outlined"
221
+ defaultValue={result}
222
+ margin="normal"
223
+ fullWidth
224
+ {...register(field, { required: true })}
225
+ {...renderField}
226
+ />
227
+ }
228
+ />
229
+ {errors[field] && <Typography color={"red"}>{field} is required.</Typography>}
230
+ </Box>
231
+ }
232
+ </Box>
233
+ )
234
+
235
+ })}
236
+ </>
237
+ )
238
+ }
239
+
126
240
  return (
127
- <Box sx={{paddingTop:8}}>
241
+ <Box sx={{paddingTop:0}}>
242
+
243
+ <Box sx={{paddingBottom:2}}>
244
+ Edit Account
245
+ </Box>
128
246
 
129
247
  <form onSubmit={handleSubmit(async (data) => {
248
+
249
+ let userCustomFields = [];
250
+
251
+ customFields.forEach(customField => {
252
+
253
+ userCustomFields.push({
254
+ name: customField.name,
255
+ value: data[customField.name]
256
+ });
257
+ });
130
258
 
131
- let response = await apiService().put("/UserManagement/UpdateUser", {
259
+ let response = await apiService().put("/UserManagement/UpdateUser", {
132
260
  id: userId,
133
261
  firstName: data.FirstName,
134
262
  lastName: data.LastName,
135
263
  company: data.Company,
136
264
  email: data.Email,
137
265
  isActive: data.IsActive,
138
- roles: data.roles != "" ? data.roles : null,
139
- permissions: data.permissions != "" ? data.permissions : null
140
- });
141
-
142
- if (response != null && response.status == 200)
143
- {
144
- alert("Updated the user");
145
- }
266
+ roles: selectedRoles != "" ? selectedRoles : null,
267
+ permissions: selectedPermission != "" ? selectedPermission : null,
268
+ userCustomFields: userCustomFields
269
+ });
270
+
271
+ if (response != null && response.status == 200)
272
+ {
273
+ if (onSaved != null)
274
+ {
275
+ onSaved();
276
+ }
277
+ }
146
278
 
147
279
  })} noValidate autoComplete="off">
148
280
  <Grid container spacing={2}>
@@ -150,55 +282,9 @@ export default function UserEditor({userId = null}) {
150
282
 
151
283
  <Box>
152
284
 
153
- {user != null && fields.map((field) => {
154
-
155
- let result = findTheValue(field);
156
-
157
- return (
158
- <Box>
159
-
160
- {field == "IsActive" &&
161
- <Box>
162
- <Controller name={field}
163
- control={control}
164
- rules={{
165
- required: false,
166
- }}
167
- render={({renderField}) =>
168
- <FormControlLabel control={<Switch defaultChecked={result} />} label={field} {...register(field, { required: false })} {...renderField} />
169
- }
170
- />
171
- {errors[field] && <Typography color={"red"}>{field} is required.</Typography>}
172
-
173
- </Box>
174
- }
175
-
176
- {field != "IsActive" &&
177
- <Box>
178
- <Controller name={field}
179
- control={control}
180
- rules={{
181
- required: true,
182
- }}
183
- render={({renderField}) =>
184
- <TextField
185
- label={field}
186
- variant="outlined"
187
- defaultValue={result}
188
- margin="normal"
189
- fullWidth
190
- {...register(field, { required: true })}
191
- {...renderField}
192
- />
193
- }
194
- />
195
- {errors[field] && <Typography color={"red"}>{field} is required.</Typography>}
196
- </Box>
197
- }
198
- </Box>
199
- )
200
-
201
- })}
285
+ {renderSystemField(fields)}
286
+
287
+ {renderCustomField(customFields)}
202
288
 
203
289
  </Box>
204
290
 
@@ -208,37 +294,35 @@ export default function UserEditor({userId = null}) {
208
294
 
209
295
  <Box>
210
296
 
211
-
212
-
213
297
  <FormControl sx={{ paddingTop:1, m: 1, width: "100%" }}>
214
298
  <InputLabel id="demo-multiple-checkbox-label">Roles</InputLabel>
215
299
  <Select
216
- fullWidth={true}
217
- labelId="demo-multiple-checkbox-label"
218
- id="demo-multiple-checkbox"
219
- {...register("roles", { required: false })}
220
- multiple
221
- value={selectedRoles}
222
- onChange={(event) => {
223
-
224
- const {
225
- target: { value },
226
- } = event;
227
- setSelectedRole(
228
- // On autofill we get a stringified value.
229
- typeof value === 'string' ? value.split(',') : value,
230
- );
231
-
232
- }}
233
- input={<OutlinedInput label="Roles" />}
234
- renderValue={(selected) => selected.join(', ')}
235
- MenuProps={MenuProps}>
236
- {roles.map((role) => (
237
- <MenuItem key={role.name} value={role.name}>
238
- <Checkbox checked={selectedRoles.indexOf(role.name) > -1} />
239
- <ListItemText primary={role.name} />
240
- </MenuItem>
241
- ))}
300
+ fullWidth={true}
301
+ labelId="demo-multiple-checkbox-label"
302
+ id="demo-multiple-checkbox"
303
+ {...register("roles", { required: false })}
304
+ multiple
305
+ value={selectedRoles}
306
+ onChange={(event) => {
307
+
308
+ const {
309
+ target: { value },
310
+ } = event;
311
+ setSelectedRole(
312
+ // On autofill we get a stringified value.
313
+ typeof value === 'string' ? value.split(',') : value,
314
+ );
315
+
316
+ }}
317
+ input={<OutlinedInput label="Roles" />}
318
+ renderValue={(selected) => selected.join(', ')}
319
+ MenuProps={MenuProps}>
320
+ {roles.map((role) => (
321
+ <MenuItem key={role.name} value={role.name}>
322
+ <Checkbox checked={selectedRoles.indexOf(role.name) > -1} />
323
+ <ListItemText primary={role.name} />
324
+ </MenuItem>
325
+ ))}
242
326
  </Select>
243
327
  </FormControl>
244
328
  {errors.roles && <Typography color={"red"}>{"roles"} is required.</Typography>}
@@ -281,7 +365,7 @@ export default function UserEditor({userId = null}) {
281
365
 
282
366
  </Grid>
283
367
  </Grid>
284
- <Box>
368
+ <Box sx={{paddingTop:2}}>
285
369
  <Button variant="contained" type="submit">Submit</Button>
286
370
  </Box>
287
371
  </form>
@@ -2,7 +2,6 @@ import React, {useEffect, useState, useRef} from 'react';
2
2
  import { Box } from '@mui/system';
3
3
  import { Button, Grid } from '@mui/material';
4
4
  import Stack from '@mui/material/Stack';
5
- import Typography from '@mui/material/Typography';
6
5
  import Table from '@mui/material/Table';
7
6
  import TableBody from '@mui/material/TableBody';
8
7
  import TableCell from '@mui/material/TableCell';
@@ -22,10 +21,9 @@ import DialogContent from '@mui/material/DialogContent';
22
21
  import DialogContentText from '@mui/material/DialogContentText';
23
22
  import DialogTitle from '@mui/material/DialogTitle';
24
23
 
25
- export function UserManagement({onUploadCompleted = null}) {
24
+ // import { UserEditor } from '../../components/users/userEditor';
26
25
 
27
- // const [comments, setComments] = useState([]);
28
- // const [message, setMessage] = useState("");
26
+ export function UserManagement({customFields = null, onUploadCompleted = null}) {
29
27
 
30
28
  const [showUserDetails, setShowUserDetails] = useState(null);
31
29
  const [newUserDialog, setNewUserDialog] = useState(false);
@@ -148,21 +146,16 @@ export function UserManagement({onUploadCompleted = null}) {
148
146
  }}
149
147
  maxWidth={"xl"}
150
148
  fullWidth={true}>
151
- {/* <DialogTitle>
152
- {"Upload users"}
153
- </DialogTitle> */}
154
149
  <DialogContent>
155
-
156
150
  <Box>
157
- <UserEditor userId={showUserDetails} />
151
+ <UserEditor
152
+ userId={showUserDetails}
153
+ customFields={customFields}
154
+ onSaved={() => {
155
+ setShowUserDetails(null);
156
+ }} />
158
157
  </Box>
159
-
160
158
  </DialogContent>
161
- {/* <DialogActions>
162
- <Button onClick={() => {
163
- setUploadUsersShowDialog(false);
164
- }}>Cancel</Button>
165
- </DialogActions> */}
166
159
  </Dialog>
167
160
 
168
161
  </Box>