asab_webui_shell 27.2.7 → 27.3.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.
package/README.md CHANGED
@@ -21,6 +21,8 @@ Possible imports:
21
21
  - AuthModule
22
22
  - TenantModule
23
23
  - I18nModule
24
+ - AttentionRequiredModule
25
+ - InviteModule
24
26
  - getBrandImage
25
27
 
26
28
  ## Documentation
@@ -402,7 +402,14 @@ class Application extends _react.Component {
402
402
  for (var interceptor of this.WebSocketInterceptors.keys()) {
403
403
  // Avoid pushing undefined interceptor values
404
404
  if (interceptor) {
405
- subprotocols.push(interceptor);
405
+ /*
406
+ Interceptor should be a function that returns the current subprotocol value
407
+ Otherwise use the value directly (for backward compatibility)
408
+ */
409
+ var interceptorValue = typeof interceptor === 'function' ? interceptor() : interceptor;
410
+ if (interceptorValue) {
411
+ subprotocols.push(interceptorValue);
412
+ }
406
413
  }
407
414
  }
408
415
 
package/dist/index.js CHANGED
@@ -34,6 +34,12 @@ Object.defineProperty(exports, "I18nModule", {
34
34
  return _i18n.default;
35
35
  }
36
36
  });
37
+ Object.defineProperty(exports, "InviteModule", {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _invite.default;
41
+ }
42
+ });
37
43
  Object.defineProperty(exports, "TenantModule", {
38
44
  enumerable: true,
39
45
  get: function get() {
@@ -53,4 +59,5 @@ var _i18n = _interopRequireDefault(require("./modules/i18n"));
53
59
  var _tenant = _interopRequireDefault(require("./modules/tenant"));
54
60
  var _auth = _interopRequireDefault(require("./modules/auth"));
55
61
  var _about = _interopRequireDefault(require("./modules/about"));
56
- var _index2 = _interopRequireDefault(require("./modules/attentionrequired/index.js"));
62
+ var _index2 = _interopRequireDefault(require("./modules/attentionrequired/index.js"));
63
+ var _invite = _interopRequireDefault(require("./modules/invite"));
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AuthHeaderDropdown = AuthHeaderDropdown;
8
- exports.AuthHeaderInvitation = AuthHeaderInvitation;
9
8
  var _react = _interopRequireDefault(require("react"));
10
9
  var _reactRouter = require("react-router");
11
10
  var _reactI18next = require("react-i18next");
@@ -33,35 +32,15 @@ require("./header.scss");
33
32
 
34
33
  */
35
34
 
36
- function AuthHeaderInvitation(props) {
37
- var tenant = (0, _asab_webui_components.useAppSelector)(state => {
38
- var _state$tenant;
39
- return (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
40
- });
41
- var navigate = (0, _reactRouter.useNavigate)();
42
- var {
43
- t
44
- } = (0, _reactI18next.useTranslation)();
45
- if (!tenant || !(0, _seacatAuth.isAuthorized)(['seacat:tenant:assign'], props.app)) {
46
- return null;
47
- }
48
- ;
49
- return /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
50
- outline: true,
51
- onClick: e => {
52
- e.preventDefault(), navigate('/auth/invite');
53
- },
54
- title: t('AuthHeader|Invite other users'),
55
- className: "invite-nav-button",
56
- color: "primary"
57
- }, /*#__PURE__*/_react.default.createElement("i", {
58
- className: "bi bi-person-plus me-2"
59
- }), t('AuthHeader|Invite other users'));
60
- }
61
35
  function AuthHeaderDropdown(props) {
36
+ var _props$app;
62
37
  var {
63
38
  t
64
39
  } = (0, _reactI18next.useTranslation)();
40
+ var tenant = (0, _asab_webui_components.useAppSelector)(state => {
41
+ var _state$tenant;
42
+ return (_state$tenant = state.tenant) === null || _state$tenant === void 0 ? void 0 : _state$tenant.current;
43
+ });
65
44
  var userinfo = (0, _asab_webui_components.useAppSelector)(state => {
66
45
  var _state$auth;
67
46
  return (_state$auth = state.auth) === null || _state$auth === void 0 ? void 0 : _state$auth.userinfo;
@@ -70,6 +49,9 @@ function AuthHeaderDropdown(props) {
70
49
  var logout = () => {
71
50
  props.AuthModule.logout();
72
51
  };
52
+
53
+ // Validation on displaying the invite option
54
+ var displayInvite = ((_props$app = props.app) === null || _props$app === void 0 || (_props$app = _props$app.Modules) === null || _props$app === void 0 ? void 0 : _props$app.some(obj => (obj === null || obj === void 0 ? void 0 : obj.Name) === "InviteModule")) && tenant && (0, _seacatAuth.isAuthorized)(['seacat:tenant:assign'], props.app);
73
55
  return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledDropdown, {
74
56
  direction: "down"
75
57
  }, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownToggle, {
@@ -88,7 +70,14 @@ function AuthHeaderDropdown(props) {
88
70
  className: "shadow"
89
71
  }, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
90
72
  header: true
91
- }, t('AuthHeader|My account')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
73
+ }, t('AuthHeader|My account')), displayInvite && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
74
+ divider: true
75
+ }), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
76
+ tag: _reactRouter.Link,
77
+ to: "/auth/invite"
78
+ }, t('AuthHeader|Invite other users')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
79
+ divider: true
80
+ })), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
92
81
  tag: _reactRouter.Link,
93
82
  to: "/auth/access-control"
94
83
  }, t('AuthHeader|Access control')), /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
@@ -17,7 +17,6 @@ var _locationReplace = require("../../components/locationReplace");
17
17
  var _SessionExpirationAlert = require("./components/SessionExpirationAlert");
18
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } // TODO: Use SessionExpirationAlert only after proper fix of the component
19
19
  var AccessControlScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./screens/AccessControlScreen"))));
20
- var InvitationScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./screens/InvitationScreen"))));
21
20
  class AuthModule extends _asab_webui_components.Module {
22
21
  constructor(app, name) {
23
22
  super(app, "AuthModule");
@@ -41,27 +40,11 @@ class AuthModule extends _asab_webui_components.Module {
41
40
  component: AccessControlScreen,
42
41
  resource: "*"
43
42
  });
44
-
45
- // Invitation screen
46
- app.Router.addRoute({
47
- path: '/auth/invite',
48
- end: true,
49
- name: 'Invite',
50
- component: InvitationScreen,
51
- resource: "seacat:tenant:assign"
52
- });
53
43
  }
54
44
  initialize() {
55
45
  var _this = this;
56
46
  return (0, _asyncToGenerator2.default)(function* () {
57
47
  var headerService = _this.App.locateService("HeaderService");
58
- headerService.addComponent({
59
- component: _header.AuthHeaderInvitation,
60
- componentProps: {
61
- AuthModule: _this
62
- },
63
- order: 200
64
- });
65
48
  headerService.addComponent({
66
49
  component: _header.AuthHeaderDropdown,
67
50
  componentProps: {
@@ -195,7 +178,8 @@ class AuthModule extends _asab_webui_components.Module {
195
178
  return interceptor;
196
179
  }
197
180
  webSocketAuthInterceptor() {
198
- return "access_token_".concat(this.OAuthTokens['access_token']);
181
+ // Return a function to ensure that the token is always current and not static
182
+ return () => "access_token_".concat(this.OAuthTokens['access_token']);
199
183
  }
200
184
  simulateUserinfo(mock_userinfo) {
201
185
  var _this2 = this;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _asab_webui_components = require("asab_webui_components");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
+ var InvitationScreen = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require("./InvitationScreen"))));
11
+ class InviteModule extends _asab_webui_components.Module {
12
+ constructor(app, name) {
13
+ super(app, 'InviteModule');
14
+ // Invitation screen
15
+ app.Router.addRoute({
16
+ path: '/auth/invite',
17
+ end: true,
18
+ name: 'Invite',
19
+ component: InvitationScreen,
20
+ resource: 'seacat:tenant:assign'
21
+ });
22
+ }
23
+ }
24
+ exports.default = InviteModule;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "asab_webui_shell",
3
- "version": "27.2.7",
3
+ "version": "27.3.1",
4
4
  "license": "BSD-3-Clause",
5
5
  "description": "TeskaLabs ASAB WebUI Shell Application",
6
6
  "contributors": [