powr-sdk-web 5.9.0 → 5.10.0
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/dist/admin/index.js +15 -4
- package/dist/index.js +51 -0
- package/dist/sso/api.js +139 -0
- package/dist/sso/index.js +244 -0
- package/dist/sso/openPowrLogin.js +165 -0
- package/dist/users/admin.js +51 -22
- package/package.json +1 -1
package/dist/admin/index.js
CHANGED
|
@@ -66,7 +66,11 @@ var AdminDashboard = function AdminDashboard(_ref2) {
|
|
|
66
66
|
_ref2$theme = _ref2.theme,
|
|
67
67
|
theme = _ref2$theme === void 0 ? 'default' : _ref2$theme,
|
|
68
68
|
_ref2$sectionLoaders = _ref2.sectionLoaders,
|
|
69
|
-
sectionLoaders = _ref2$sectionLoaders === void 0 ? {} : _ref2$sectionLoaders
|
|
69
|
+
sectionLoaders = _ref2$sectionLoaders === void 0 ? {} : _ref2$sectionLoaders,
|
|
70
|
+
_ref2$roleOptions = _ref2.roleOptions,
|
|
71
|
+
roleOptions = _ref2$roleOptions === void 0 ? null : _ref2$roleOptions,
|
|
72
|
+
_ref2$usersProps = _ref2.usersProps,
|
|
73
|
+
usersProps = _ref2$usersProps === void 0 ? null : _ref2$usersProps;
|
|
70
74
|
var _useState = (0, _react.useState)(null),
|
|
71
75
|
_useState2 = _slicedToArray(_useState, 2),
|
|
72
76
|
currentSection = _useState2[0],
|
|
@@ -275,9 +279,11 @@ var AdminDashboard = function AdminDashboard(_ref2) {
|
|
|
275
279
|
formPublicBaseUrl: formPublicBaseUrl,
|
|
276
280
|
theme: theme === 'dark' ? 'dark' : 'blue'
|
|
277
281
|
};
|
|
278
|
-
var extraProps = currentSection === 'users' ? {
|
|
282
|
+
var extraProps = currentSection === 'users' ? _objectSpread(_objectSpread({
|
|
279
283
|
showActions: true
|
|
280
|
-
}
|
|
284
|
+
}, roleOptions ? {
|
|
285
|
+
roleOptions: roleOptions
|
|
286
|
+
} : {}), usersProps || {}) : currentSection === 'tasks' ? {
|
|
281
287
|
onError: function onError(message) {
|
|
282
288
|
return alert(message);
|
|
283
289
|
}
|
|
@@ -342,6 +348,11 @@ AdminDashboard.propTypes = {
|
|
|
342
348
|
sections: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
343
349
|
formPublicBaseUrl: _propTypes["default"].string,
|
|
344
350
|
theme: _propTypes["default"].oneOf(['default', 'dark']),
|
|
345
|
-
sectionLoaders: _propTypes["default"].objectOf(_propTypes["default"].func)
|
|
351
|
+
sectionLoaders: _propTypes["default"].objectOf(_propTypes["default"].func),
|
|
352
|
+
roleOptions: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
353
|
+
value: _propTypes["default"].number.isRequired,
|
|
354
|
+
label: _propTypes["default"].string.isRequired
|
|
355
|
+
})),
|
|
356
|
+
usersProps: _propTypes["default"].object
|
|
346
357
|
};
|
|
347
358
|
var _default2 = exports["default"] = AdminDashboard;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -21,6 +22,12 @@ Object.defineProperty(exports, "DEFAULT_COUNTRY_CODE", {
|
|
|
21
22
|
return _phone.DEFAULT_COUNTRY_CODE;
|
|
22
23
|
}
|
|
23
24
|
});
|
|
25
|
+
Object.defineProperty(exports, "DEFAULT_POWR_TARGETS", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _sso.DEFAULT_POWR_TARGETS;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
24
31
|
Object.defineProperty(exports, "OnboardingShell", {
|
|
25
32
|
enumerable: true,
|
|
26
33
|
get: function get() {
|
|
@@ -105,6 +112,12 @@ Object.defineProperty(exports, "PowrBaseReviews", {
|
|
|
105
112
|
return _reviews["default"];
|
|
106
113
|
}
|
|
107
114
|
});
|
|
115
|
+
Object.defineProperty(exports, "PowrBaseSso", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function get() {
|
|
118
|
+
return _sso["default"];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
108
121
|
Object.defineProperty(exports, "PowrBaseSwiper", {
|
|
109
122
|
enumerable: true,
|
|
110
123
|
get: function get() {
|
|
@@ -183,6 +196,12 @@ Object.defineProperty(exports, "buildPhoneFromParts", {
|
|
|
183
196
|
return _phone.buildPhoneFromParts;
|
|
184
197
|
}
|
|
185
198
|
});
|
|
199
|
+
Object.defineProperty(exports, "buildPowrSsoUrl", {
|
|
200
|
+
enumerable: true,
|
|
201
|
+
get: function get() {
|
|
202
|
+
return _sso.buildPowrSsoUrl;
|
|
203
|
+
}
|
|
204
|
+
});
|
|
186
205
|
Object.defineProperty(exports, "coercePhoneForStorage", {
|
|
187
206
|
enumerable: true,
|
|
188
207
|
get: function get() {
|
|
@@ -267,6 +286,24 @@ Object.defineProperty(exports, "isValidPhone", {
|
|
|
267
286
|
return _phone.isValidPhone;
|
|
268
287
|
}
|
|
269
288
|
});
|
|
289
|
+
Object.defineProperty(exports, "issueLoginCode", {
|
|
290
|
+
enumerable: true,
|
|
291
|
+
get: function get() {
|
|
292
|
+
return _sso.issueLoginCode;
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
Object.defineProperty(exports, "loginWithCode", {
|
|
296
|
+
enumerable: true,
|
|
297
|
+
get: function get() {
|
|
298
|
+
return _sso.loginWithCode;
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
Object.defineProperty(exports, "matchPowrTarget", {
|
|
302
|
+
enumerable: true,
|
|
303
|
+
get: function get() {
|
|
304
|
+
return _sso.matchPowrTarget;
|
|
305
|
+
}
|
|
306
|
+
});
|
|
270
307
|
Object.defineProperty(exports, "mergePowrSteps", {
|
|
271
308
|
enumerable: true,
|
|
272
309
|
get: function get() {
|
|
@@ -291,6 +328,12 @@ Object.defineProperty(exports, "normalizePhone", {
|
|
|
291
328
|
return _phone.normalizePhone;
|
|
292
329
|
}
|
|
293
330
|
});
|
|
331
|
+
Object.defineProperty(exports, "openPowrLogin", {
|
|
332
|
+
enumerable: true,
|
|
333
|
+
get: function get() {
|
|
334
|
+
return _sso.openPowrLogin;
|
|
335
|
+
}
|
|
336
|
+
});
|
|
294
337
|
Object.defineProperty(exports, "parsePhone", {
|
|
295
338
|
enumerable: true,
|
|
296
339
|
get: function get() {
|
|
@@ -309,6 +352,12 @@ Object.defineProperty(exports, "resolveCountry", {
|
|
|
309
352
|
return _phone.resolveCountry;
|
|
310
353
|
}
|
|
311
354
|
});
|
|
355
|
+
Object.defineProperty(exports, "safeNextPath", {
|
|
356
|
+
enumerable: true,
|
|
357
|
+
get: function get() {
|
|
358
|
+
return _sso.safeNextPath;
|
|
359
|
+
}
|
|
360
|
+
});
|
|
312
361
|
var _table = _interopRequireDefault(require("./table"));
|
|
313
362
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
314
363
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -321,6 +370,7 @@ var _calendar = _interopRequireDefault(require("./calendar"));
|
|
|
321
370
|
var _blogs = _interopRequireDefault(require("./blogs"));
|
|
322
371
|
var _likes = _interopRequireDefault(require("./likes"));
|
|
323
372
|
var _auth = _interopRequireDefault(require("./auth"));
|
|
373
|
+
var _sso = _interopRequireWildcard(require("./sso"));
|
|
324
374
|
var _forms = _interopRequireDefault(require("./forms"));
|
|
325
375
|
var _chat = _interopRequireDefault(require("./chat"));
|
|
326
376
|
var _feeds = _interopRequireDefault(require("./feeds"));
|
|
@@ -334,4 +384,5 @@ var _onboarding = require("./onboarding");
|
|
|
334
384
|
var _phone = require("./utils/phone");
|
|
335
385
|
var _jwt = require("./utils/jwt");
|
|
336
386
|
var _sessionMessages = require("./utils/sessionMessages");
|
|
387
|
+
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); }
|
|
337
388
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
package/dist/sso/api.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.issueLoginCode = issueLoginCode;
|
|
7
|
+
exports.loginWithCode = loginWithCode;
|
|
8
|
+
exports.readHandoffParams = readHandoffParams;
|
|
9
|
+
exports.safeNextPath = safeNextPath;
|
|
10
|
+
exports.stripHandoffParams = stripHandoffParams;
|
|
11
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
12
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
13
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
14
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
15
|
+
function joinApi(apiUrl, path) {
|
|
16
|
+
var base = String(apiUrl || "").replace(/\/+$/, "");
|
|
17
|
+
var p = String(path || "").replace(/^\/+/, "");
|
|
18
|
+
return "".concat(base, "/").concat(p);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Safe in-app path from `?next=` (relative only). */
|
|
22
|
+
function safeNextPath(next) {
|
|
23
|
+
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "/";
|
|
24
|
+
if (next && String(next).startsWith("/") && !String(next).startsWith("//")) {
|
|
25
|
+
return String(next);
|
|
26
|
+
}
|
|
27
|
+
return fallback;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Issue a one-time login code (caller must already be authenticated).
|
|
32
|
+
* @param {string} apiUrl - Powr API base (…/powr)
|
|
33
|
+
* @param {string} bearerToken
|
|
34
|
+
*/
|
|
35
|
+
function issueLoginCode(_x, _x2) {
|
|
36
|
+
return _issueLoginCode.apply(this, arguments);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Exchange loginId for session (same shape as /login).
|
|
40
|
+
* @param {string} apiUrl
|
|
41
|
+
* @param {string} loginId
|
|
42
|
+
*/
|
|
43
|
+
function _issueLoginCode() {
|
|
44
|
+
_issueLoginCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, bearerToken) {
|
|
45
|
+
var res, data;
|
|
46
|
+
return _regenerator().w(function (_context) {
|
|
47
|
+
while (1) switch (_context.n) {
|
|
48
|
+
case 0:
|
|
49
|
+
_context.n = 1;
|
|
50
|
+
return fetch(joinApi(apiUrl, "auth/issue-login-code"), {
|
|
51
|
+
method: "POST",
|
|
52
|
+
headers: {
|
|
53
|
+
Authorization: "Bearer ".concat(bearerToken),
|
|
54
|
+
"Content-Type": "application/json"
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
case 1:
|
|
58
|
+
res = _context.v;
|
|
59
|
+
_context.n = 2;
|
|
60
|
+
return res.json()["catch"](function () {
|
|
61
|
+
return {};
|
|
62
|
+
});
|
|
63
|
+
case 2:
|
|
64
|
+
data = _context.v;
|
|
65
|
+
if (!(!res.ok || !data.success || !data.loginId)) {
|
|
66
|
+
_context.n = 3;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
throw new Error(data.message || "Could not start sign-in");
|
|
70
|
+
case 3:
|
|
71
|
+
return _context.a(2, data);
|
|
72
|
+
}
|
|
73
|
+
}, _callee);
|
|
74
|
+
}));
|
|
75
|
+
return _issueLoginCode.apply(this, arguments);
|
|
76
|
+
}
|
|
77
|
+
function loginWithCode(_x3, _x4) {
|
|
78
|
+
return _loginWithCode.apply(this, arguments);
|
|
79
|
+
}
|
|
80
|
+
function _loginWithCode() {
|
|
81
|
+
_loginWithCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(apiUrl, loginId) {
|
|
82
|
+
var res, data, err;
|
|
83
|
+
return _regenerator().w(function (_context2) {
|
|
84
|
+
while (1) switch (_context2.n) {
|
|
85
|
+
case 0:
|
|
86
|
+
_context2.n = 1;
|
|
87
|
+
return fetch(joinApi(apiUrl, "auth/login-with-code"), {
|
|
88
|
+
method: "POST",
|
|
89
|
+
headers: {
|
|
90
|
+
"Content-Type": "application/json"
|
|
91
|
+
},
|
|
92
|
+
body: JSON.stringify({
|
|
93
|
+
loginId: loginId
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
case 1:
|
|
97
|
+
res = _context2.v;
|
|
98
|
+
_context2.n = 2;
|
|
99
|
+
return res.json()["catch"](function () {
|
|
100
|
+
return {};
|
|
101
|
+
});
|
|
102
|
+
case 2:
|
|
103
|
+
data = _context2.v;
|
|
104
|
+
if (!(!res.ok || !data.success || !data.token || !data.user)) {
|
|
105
|
+
_context2.n = 3;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
err = new Error(data.message || "This login link expired");
|
|
109
|
+
err.status = res.status;
|
|
110
|
+
err.data = data;
|
|
111
|
+
throw err;
|
|
112
|
+
case 3:
|
|
113
|
+
return _context2.a(2, data);
|
|
114
|
+
}
|
|
115
|
+
}, _callee2);
|
|
116
|
+
}));
|
|
117
|
+
return _loginWithCode.apply(this, arguments);
|
|
118
|
+
}
|
|
119
|
+
function readHandoffParams() {
|
|
120
|
+
if (typeof window === "undefined") {
|
|
121
|
+
return {
|
|
122
|
+
loginId: null,
|
|
123
|
+
next: ""
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
var params = new URLSearchParams(window.location.search);
|
|
127
|
+
return {
|
|
128
|
+
loginId: params.get("loginId"),
|
|
129
|
+
next: params.get("next") || ""
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function stripHandoffParams() {
|
|
133
|
+
if (typeof window === "undefined") return;
|
|
134
|
+
var params = new URLSearchParams(window.location.search);
|
|
135
|
+
params["delete"]("loginId");
|
|
136
|
+
params["delete"]("next");
|
|
137
|
+
var rest = params.toString();
|
|
138
|
+
window.history.replaceState({}, "", "".concat(window.location.pathname).concat(rest ? "?".concat(rest) : "").concat(window.location.hash));
|
|
139
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "DEFAULT_POWR_TARGETS", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _openPowrLogin.DEFAULT_POWR_TARGETS;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "buildPowrSsoUrl", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _openPowrLogin.buildPowrSsoUrl;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
exports["default"] = PowrBaseSso;
|
|
19
|
+
Object.defineProperty(exports, "issueLoginCode", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _api.issueLoginCode;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "loginWithCode", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _api.loginWithCode;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "matchPowrTarget", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function get() {
|
|
34
|
+
return _openPowrLogin.matchPowrTarget;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "openPowrLogin", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function get() {
|
|
40
|
+
return _openPowrLogin.openPowrLogin;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "readHandoffParams", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function get() {
|
|
46
|
+
return _api.readHandoffParams;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "safeNextPath", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function get() {
|
|
52
|
+
return _api.safeNextPath;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "stripHandoffParams", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function get() {
|
|
58
|
+
return _api.stripHandoffParams;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
62
|
+
var _api = require("./api");
|
|
63
|
+
var _openPowrLogin = require("./openPowrLogin");
|
|
64
|
+
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); }
|
|
65
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
66
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
67
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
68
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
69
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
70
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
71
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
72
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
73
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
74
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
75
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
76
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
77
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
78
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
79
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
80
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
81
|
+
var shellStyle = {
|
|
82
|
+
display: "flex",
|
|
83
|
+
minHeight: "100vh",
|
|
84
|
+
flexDirection: "column",
|
|
85
|
+
alignItems: "center",
|
|
86
|
+
justifyContent: "center",
|
|
87
|
+
padding: "0 1.5rem",
|
|
88
|
+
textAlign: "center",
|
|
89
|
+
background: "var(--background, #fafafa)",
|
|
90
|
+
color: "var(--foreground, #111)",
|
|
91
|
+
fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, sans-serif"
|
|
92
|
+
};
|
|
93
|
+
var mutedStyle = {
|
|
94
|
+
fontSize: "0.875rem",
|
|
95
|
+
fontWeight: 500,
|
|
96
|
+
color: "var(--muted-foreground, #737373)",
|
|
97
|
+
margin: 0
|
|
98
|
+
};
|
|
99
|
+
var titleStyle = {
|
|
100
|
+
marginTop: "1.5rem",
|
|
101
|
+
fontSize: "1.25rem",
|
|
102
|
+
fontWeight: 600,
|
|
103
|
+
letterSpacing: "-0.025em",
|
|
104
|
+
marginBottom: 0
|
|
105
|
+
};
|
|
106
|
+
var bodyStyle = {
|
|
107
|
+
marginTop: "0.5rem",
|
|
108
|
+
maxWidth: "24rem",
|
|
109
|
+
fontSize: "0.875rem",
|
|
110
|
+
color: "var(--muted-foreground, #737373)",
|
|
111
|
+
marginBottom: 0
|
|
112
|
+
};
|
|
113
|
+
var errorTextStyle = _objectSpread(_objectSpread({}, bodyStyle), {}, {
|
|
114
|
+
color: "var(--destructive, #dc2626)"
|
|
115
|
+
});
|
|
116
|
+
var spinnerStyle = {
|
|
117
|
+
marginTop: "1.5rem",
|
|
118
|
+
width: "2.5rem",
|
|
119
|
+
height: "2.5rem",
|
|
120
|
+
borderRadius: "9999px",
|
|
121
|
+
border: "2px solid var(--primary, #2563eb)",
|
|
122
|
+
borderTopColor: "transparent",
|
|
123
|
+
animation: "powr-sso-spin 0.7s linear infinite"
|
|
124
|
+
};
|
|
125
|
+
var btnStyle = {
|
|
126
|
+
marginTop: "1.5rem",
|
|
127
|
+
display: "inline-flex",
|
|
128
|
+
alignItems: "center",
|
|
129
|
+
justifyContent: "center",
|
|
130
|
+
borderRadius: "0.5rem",
|
|
131
|
+
background: "var(--primary, #2563eb)",
|
|
132
|
+
color: "var(--primary-foreground, #fff)",
|
|
133
|
+
padding: "0.5rem 1rem",
|
|
134
|
+
fontSize: "0.875rem",
|
|
135
|
+
fontWeight: 500,
|
|
136
|
+
textDecoration: "none",
|
|
137
|
+
border: "none",
|
|
138
|
+
cursor: "pointer"
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Cross-app SSO handoff UI (UrbanStall → Powr apps).
|
|
143
|
+
* Apps keep a thin `/sso` page that renders this with `apiUrl` + `onSuccess`.
|
|
144
|
+
*
|
|
145
|
+
* @param {object} props
|
|
146
|
+
* @param {string} props.apiUrl - Powr API base ending in /powr (or /powr/)
|
|
147
|
+
* @param {string} [props.appName]
|
|
148
|
+
* @param {boolean} [props.ready=true] - Wait (e.g. auth hydrate) before exchanging code
|
|
149
|
+
* @param {string} [props.loginHref="/login"]
|
|
150
|
+
* @param {string} [props.loginId] - Defaults to ?loginId=
|
|
151
|
+
* @param {string} [props.next] - Defaults to ?next=
|
|
152
|
+
* @param {(data: object, ctx: { next: string, safeNext: string }) => void | Promise<void>} props.onSuccess
|
|
153
|
+
* @param {string} [props.signingInTitle]
|
|
154
|
+
* @param {string} [props.signingInMessage]
|
|
155
|
+
* @param {string} [props.errorTitle]
|
|
156
|
+
*/
|
|
157
|
+
function PowrBaseSso(_ref) {
|
|
158
|
+
var apiUrl = _ref.apiUrl,
|
|
159
|
+
_ref$appName = _ref.appName,
|
|
160
|
+
appName = _ref$appName === void 0 ? "App" : _ref$appName,
|
|
161
|
+
_ref$ready = _ref.ready,
|
|
162
|
+
ready = _ref$ready === void 0 ? true : _ref$ready,
|
|
163
|
+
_ref$loginHref = _ref.loginHref,
|
|
164
|
+
loginHref = _ref$loginHref === void 0 ? "/login" : _ref$loginHref,
|
|
165
|
+
loginIdProp = _ref.loginId,
|
|
166
|
+
nextProp = _ref.next,
|
|
167
|
+
onSuccess = _ref.onSuccess,
|
|
168
|
+
_ref$signingInTitle = _ref.signingInTitle,
|
|
169
|
+
signingInTitle = _ref$signingInTitle === void 0 ? "Signing you in…" : _ref$signingInTitle,
|
|
170
|
+
_ref$signingInMessage = _ref.signingInMessage,
|
|
171
|
+
signingInMessage = _ref$signingInMessage === void 0 ? "Finishing your UrbanStall handoff. This only takes a moment." : _ref$signingInMessage,
|
|
172
|
+
_ref$errorTitle = _ref.errorTitle,
|
|
173
|
+
errorTitle = _ref$errorTitle === void 0 ? "Sign-in link expired" : _ref$errorTitle;
|
|
174
|
+
var fromUrl = (0, _react.useState)(function () {
|
|
175
|
+
return (0, _api.readHandoffParams)();
|
|
176
|
+
})[0];
|
|
177
|
+
var loginId = loginIdProp !== undefined ? loginIdProp : fromUrl.loginId;
|
|
178
|
+
var next = nextProp !== undefined ? nextProp : fromUrl.next;
|
|
179
|
+
var _useState = (0, _react.useState)(loginId ? null : "Missing login link"),
|
|
180
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
181
|
+
error = _useState2[0],
|
|
182
|
+
setError = _useState2[1];
|
|
183
|
+
var _useState3 = (0, _react.useState)(Boolean(loginId)),
|
|
184
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
185
|
+
busy = _useState4[0],
|
|
186
|
+
setBusy = _useState4[1];
|
|
187
|
+
var started = (0, _react.useRef)(false);
|
|
188
|
+
var onSuccessRef = (0, _react.useRef)(onSuccess);
|
|
189
|
+
onSuccessRef.current = onSuccess;
|
|
190
|
+
(0, _react.useEffect)(function () {
|
|
191
|
+
if (!loginId || !ready || !apiUrl || started.current) return;
|
|
192
|
+
started.current = true;
|
|
193
|
+
setBusy(true);
|
|
194
|
+
(0, _api.loginWithCode)(apiUrl, loginId).then(/*#__PURE__*/function () {
|
|
195
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(data) {
|
|
196
|
+
var cb;
|
|
197
|
+
return _regenerator().w(function (_context) {
|
|
198
|
+
while (1) switch (_context.n) {
|
|
199
|
+
case 0:
|
|
200
|
+
(0, _api.stripHandoffParams)();
|
|
201
|
+
cb = onSuccessRef.current;
|
|
202
|
+
if (!(typeof cb === "function")) {
|
|
203
|
+
_context.n = 1;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
_context.n = 1;
|
|
207
|
+
return cb(data, {
|
|
208
|
+
next: next,
|
|
209
|
+
safeNext: (0, _api.safeNextPath)(next, "/")
|
|
210
|
+
});
|
|
211
|
+
case 1:
|
|
212
|
+
return _context.a(2);
|
|
213
|
+
}
|
|
214
|
+
}, _callee);
|
|
215
|
+
}));
|
|
216
|
+
return function (_x) {
|
|
217
|
+
return _ref2.apply(this, arguments);
|
|
218
|
+
};
|
|
219
|
+
}())["catch"](function (err) {
|
|
220
|
+
(0, _api.stripHandoffParams)();
|
|
221
|
+
setError((err === null || err === void 0 ? void 0 : err.message) || "Could not finish sign-in");
|
|
222
|
+
setBusy(false);
|
|
223
|
+
});
|
|
224
|
+
}, [loginId, next, ready, apiUrl]);
|
|
225
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
226
|
+
style: shellStyle
|
|
227
|
+
}, /*#__PURE__*/_react["default"].createElement("style", null, "@keyframes powr-sso-spin{to{transform:rotate(360deg)}}"), /*#__PURE__*/_react["default"].createElement("p", {
|
|
228
|
+
style: mutedStyle
|
|
229
|
+
}, appName), busy && !error ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
230
|
+
style: spinnerStyle,
|
|
231
|
+
"aria-hidden": true
|
|
232
|
+
}), /*#__PURE__*/_react["default"].createElement("h1", {
|
|
233
|
+
style: titleStyle
|
|
234
|
+
}, signingInTitle), /*#__PURE__*/_react["default"].createElement("p", {
|
|
235
|
+
style: bodyStyle
|
|
236
|
+
}, signingInMessage)) : null, error ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("h1", {
|
|
237
|
+
style: titleStyle
|
|
238
|
+
}, errorTitle), /*#__PURE__*/_react["default"].createElement("p", {
|
|
239
|
+
style: errorTextStyle
|
|
240
|
+
}, error), /*#__PURE__*/_react["default"].createElement("a", {
|
|
241
|
+
href: loginHref,
|
|
242
|
+
style: btnStyle
|
|
243
|
+
}, "Continue to login")) : null);
|
|
244
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_POWR_TARGETS = void 0;
|
|
7
|
+
exports.buildPowrSsoUrl = buildPowrSsoUrl;
|
|
8
|
+
exports.matchPowrTarget = matchPowrTarget;
|
|
9
|
+
exports.openPowrLogin = openPowrLogin;
|
|
10
|
+
var _api = require("./api");
|
|
11
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
12
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
13
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
14
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
15
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
16
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
17
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
18
|
+
function normalizeOrigin(value) {
|
|
19
|
+
return String(value || "").replace(/\/$/, "").toLowerCase();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Default Lawazia Powr app origin → /powr API map (prod + common local Quiz).
|
|
24
|
+
* Host apps can pass `targets` to override (e.g. from NEXT_PUBLIC_* env).
|
|
25
|
+
*/
|
|
26
|
+
var DEFAULT_POWR_TARGETS = exports.DEFAULT_POWR_TARGETS = [{
|
|
27
|
+
origins: ["https://rasoi.lawazia.tech"],
|
|
28
|
+
powrApiUrl: "https://rasoiapp-api-690167968218.europe-west1.run.app/powr"
|
|
29
|
+
}, {
|
|
30
|
+
origins: ["https://win.urbanstall.app"],
|
|
31
|
+
powrApiUrl: "https://quizapp-api-new-762437065717.asia-south1.run.app/powr"
|
|
32
|
+
}, {
|
|
33
|
+
origins: ["http://localhost:3001", "http://127.0.0.1:3001", "http://localhost:3010", "http://127.0.0.1:3010"],
|
|
34
|
+
powrApiUrl: "http://localhost:3000/powr"
|
|
35
|
+
}, {
|
|
36
|
+
origins: ["https://earn.urbanstall.app"],
|
|
37
|
+
powrApiUrl: "https://ads-app-api-429552207832.asia-east1.run.app/powr"
|
|
38
|
+
}];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @param {string} url
|
|
42
|
+
* @param {Array<{ origins: string[], powrApiUrl: string }>} [targets]
|
|
43
|
+
* @returns {{ origin: string, powrApiUrl: string, pathname: string, search: string, hash: string } | null}
|
|
44
|
+
*/
|
|
45
|
+
function matchPowrTarget(url) {
|
|
46
|
+
var targets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_POWR_TARGETS;
|
|
47
|
+
var parsed;
|
|
48
|
+
try {
|
|
49
|
+
parsed = new URL(url);
|
|
50
|
+
} catch (_unused) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
var origin = normalizeOrigin(parsed.origin);
|
|
54
|
+
var _iterator = _createForOfIteratorHelper(targets),
|
|
55
|
+
_step;
|
|
56
|
+
try {
|
|
57
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
58
|
+
var target = _step.value;
|
|
59
|
+
if ((target.origins || []).some(function (o) {
|
|
60
|
+
return normalizeOrigin(o) === origin;
|
|
61
|
+
})) {
|
|
62
|
+
return {
|
|
63
|
+
origin: parsed.origin.replace(/\/$/, ""),
|
|
64
|
+
powrApiUrl: String(target.powrApiUrl).replace(/\/$/, ""),
|
|
65
|
+
pathname: parsed.pathname || "/",
|
|
66
|
+
search: parsed.search || "",
|
|
67
|
+
hash: parsed.hash || ""
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
} catch (err) {
|
|
72
|
+
_iterator.e(err);
|
|
73
|
+
} finally {
|
|
74
|
+
_iterator.f();
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Build destination `/sso?loginId=` (+ optional `next`) on the sibling app.
|
|
81
|
+
*/
|
|
82
|
+
function buildPowrSsoUrl(target, loginId) {
|
|
83
|
+
var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
84
|
+
_ref$ssoPath = _ref.ssoPath,
|
|
85
|
+
ssoPath = _ref$ssoPath === void 0 ? "/sso" : _ref$ssoPath;
|
|
86
|
+
var params = new URLSearchParams();
|
|
87
|
+
params.set("loginId", loginId);
|
|
88
|
+
var path = target.pathname || "/";
|
|
89
|
+
if (path && path !== "/" && path !== "/login" && path !== ssoPath) {
|
|
90
|
+
params.set("next", "".concat(path).concat(target.search || ""));
|
|
91
|
+
}
|
|
92
|
+
var basePath = ssoPath.startsWith("/") ? ssoPath : "/".concat(ssoPath);
|
|
93
|
+
return "".concat(target.origin).concat(basePath, "?").concat(params.toString());
|
|
94
|
+
}
|
|
95
|
+
function openPlain(url) {
|
|
96
|
+
if (typeof window === "undefined") return;
|
|
97
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Issue a login code on the target Powr API and navigate to `/sso?loginId=`.
|
|
102
|
+
* Falls back to opening the original URL when there is no token, no match, or issue fails.
|
|
103
|
+
*
|
|
104
|
+
* @param {string} url - Destination app URL (banner link, etc.)
|
|
105
|
+
* @param {string|null|undefined} token - Caller auth JWT (UrbanStall or Powr)
|
|
106
|
+
* @param {object} [options]
|
|
107
|
+
* @param {Array<{ origins: string[], powrApiUrl: string }>} [options.targets]
|
|
108
|
+
* @param {string} [options.ssoPath="/sso"]
|
|
109
|
+
* @param {(url: string) => void} [options.onFallback] - default window.open
|
|
110
|
+
* @param {(ssoUrl: string) => void} [options.navigate] - default location.assign
|
|
111
|
+
*/
|
|
112
|
+
function openPowrLogin(_x, _x2) {
|
|
113
|
+
return _openPowrLogin.apply(this, arguments);
|
|
114
|
+
}
|
|
115
|
+
function _openPowrLogin() {
|
|
116
|
+
_openPowrLogin = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url, token) {
|
|
117
|
+
var options,
|
|
118
|
+
_options$targets,
|
|
119
|
+
targets,
|
|
120
|
+
_options$ssoPath,
|
|
121
|
+
ssoPath,
|
|
122
|
+
_options$onFallback,
|
|
123
|
+
onFallback,
|
|
124
|
+
_options$navigate,
|
|
125
|
+
navigate,
|
|
126
|
+
target,
|
|
127
|
+
data,
|
|
128
|
+
_args = arguments,
|
|
129
|
+
_t;
|
|
130
|
+
return _regenerator().w(function (_context) {
|
|
131
|
+
while (1) switch (_context.p = _context.n) {
|
|
132
|
+
case 0:
|
|
133
|
+
options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
|
|
134
|
+
_options$targets = options.targets, targets = _options$targets === void 0 ? DEFAULT_POWR_TARGETS : _options$targets, _options$ssoPath = options.ssoPath, ssoPath = _options$ssoPath === void 0 ? "/sso" : _options$ssoPath, _options$onFallback = options.onFallback, onFallback = _options$onFallback === void 0 ? openPlain : _options$onFallback, _options$navigate = options.navigate, navigate = _options$navigate === void 0 ? function (ssoUrl) {
|
|
135
|
+
if (typeof window !== "undefined") window.location.assign(ssoUrl);
|
|
136
|
+
} : _options$navigate;
|
|
137
|
+
target = matchPowrTarget(url, targets);
|
|
138
|
+
if (!(!target || !token)) {
|
|
139
|
+
_context.n = 1;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
onFallback(url);
|
|
143
|
+
return _context.a(2);
|
|
144
|
+
case 1:
|
|
145
|
+
_context.p = 1;
|
|
146
|
+
_context.n = 2;
|
|
147
|
+
return (0, _api.issueLoginCode)(target.powrApiUrl, token);
|
|
148
|
+
case 2:
|
|
149
|
+
data = _context.v;
|
|
150
|
+
navigate(buildPowrSsoUrl(target, data.loginId, {
|
|
151
|
+
ssoPath: ssoPath
|
|
152
|
+
}));
|
|
153
|
+
_context.n = 4;
|
|
154
|
+
break;
|
|
155
|
+
case 3:
|
|
156
|
+
_context.p = 3;
|
|
157
|
+
_t = _context.v;
|
|
158
|
+
onFallback(url);
|
|
159
|
+
case 4:
|
|
160
|
+
return _context.a(2);
|
|
161
|
+
}
|
|
162
|
+
}, _callee, null, [[1, 3]]);
|
|
163
|
+
}));
|
|
164
|
+
return _openPowrLogin.apply(this, arguments);
|
|
165
|
+
}
|
package/dist/users/admin.js
CHANGED
|
@@ -13,6 +13,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
13
13
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
14
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
15
15
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
16
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
17
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
18
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
19
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
16
20
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
17
21
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
18
22
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
@@ -23,23 +27,14 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
23
27
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
28
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
25
29
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
-
|
|
30
|
+
/** Generic Powr defaults — apps pass `roleOptions` for product-specific roles. */
|
|
31
|
+
var DEFAULT_ROLE_OPTIONS = [{
|
|
27
32
|
value: 1,
|
|
28
|
-
label: '
|
|
29
|
-
}, {
|
|
30
|
-
value: 300,
|
|
31
|
-
label: 'College admin'
|
|
32
|
-
}, {
|
|
33
|
-
value: 900,
|
|
34
|
-
label: 'Client'
|
|
33
|
+
label: 'User'
|
|
35
34
|
}, {
|
|
36
35
|
value: 100,
|
|
37
36
|
label: 'Admin'
|
|
38
37
|
}];
|
|
39
|
-
var normalizeAccess = function normalizeAccess(access) {
|
|
40
|
-
if (access === 100 || access === 300 || access === 900) return access;
|
|
41
|
-
return 1;
|
|
42
|
-
};
|
|
43
38
|
var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
44
39
|
var apiUrl = _ref.apiUrl,
|
|
45
40
|
projectId = _ref.projectId,
|
|
@@ -52,7 +47,9 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
52
47
|
_ref$onAddUser = _ref.onAddUser,
|
|
53
48
|
onAddUser = _ref$onAddUser === void 0 ? null : _ref$onAddUser,
|
|
54
49
|
_ref$onRoleChange = _ref.onRoleChange,
|
|
55
|
-
onRoleChange = _ref$onRoleChange === void 0 ? null : _ref$onRoleChange
|
|
50
|
+
onRoleChange = _ref$onRoleChange === void 0 ? null : _ref$onRoleChange,
|
|
51
|
+
_ref$roleOptions = _ref.roleOptions,
|
|
52
|
+
roleOptions = _ref$roleOptions === void 0 ? null : _ref$roleOptions;
|
|
56
53
|
var _useState = (0, _react.useState)([]),
|
|
57
54
|
_useState2 = _slicedToArray(_useState, 2),
|
|
58
55
|
users = _useState2[0],
|
|
@@ -73,6 +70,15 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
73
70
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
74
71
|
updatingUserId = _useState0[0],
|
|
75
72
|
setUpdatingUserId = _useState0[1];
|
|
73
|
+
var resolvedRoleOptions = (0, _react.useMemo)(function () {
|
|
74
|
+
if (Array.isArray(roleOptions) && roleOptions.length > 0) return roleOptions;
|
|
75
|
+
return DEFAULT_ROLE_OPTIONS;
|
|
76
|
+
}, [roleOptions]);
|
|
77
|
+
var knownAccessValues = (0, _react.useMemo)(function () {
|
|
78
|
+
return new Set(resolvedRoleOptions.map(function (role) {
|
|
79
|
+
return Number(role.value);
|
|
80
|
+
}));
|
|
81
|
+
}, [resolvedRoleOptions]);
|
|
76
82
|
(0, _react.useEffect)(function () {
|
|
77
83
|
fetchUsers();
|
|
78
84
|
}, [projectId]);
|
|
@@ -127,17 +133,38 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
127
133
|
return _ref2.apply(this, arguments);
|
|
128
134
|
};
|
|
129
135
|
}();
|
|
136
|
+
var normalizeAccess = function normalizeAccess(access) {
|
|
137
|
+
var _resolvedRoleOptions$;
|
|
138
|
+
var n = Number(access);
|
|
139
|
+
if (knownAccessValues.has(n)) return n;
|
|
140
|
+
return Number((_resolvedRoleOptions$ = resolvedRoleOptions[0]) === null || _resolvedRoleOptions$ === void 0 ? void 0 : _resolvedRoleOptions$.value) || 1;
|
|
141
|
+
};
|
|
142
|
+
var optionsForUser = function optionsForUser(access) {
|
|
143
|
+
var n = Number(access);
|
|
144
|
+
if (Number.isFinite(n) && !knownAccessValues.has(n)) {
|
|
145
|
+
return [].concat(_toConsumableArray(resolvedRoleOptions), [{
|
|
146
|
+
value: n,
|
|
147
|
+
label: "Access ".concat(n)
|
|
148
|
+
}]);
|
|
149
|
+
}
|
|
150
|
+
return resolvedRoleOptions;
|
|
151
|
+
};
|
|
130
152
|
var getBadgeVariant = function getBadgeVariant(access) {
|
|
131
|
-
|
|
132
|
-
if (
|
|
133
|
-
if (
|
|
153
|
+
var n = Number(access);
|
|
154
|
+
if (n === 100) return 'bg-red-100 text-red-800';
|
|
155
|
+
if (n === 300) return 'bg-purple-100 text-purple-800';
|
|
156
|
+
if (n === 500) return 'bg-teal-100 text-teal-800';
|
|
157
|
+
if (n === 900) return 'bg-blue-100 text-blue-800';
|
|
134
158
|
return 'bg-gray-100 text-gray-800';
|
|
135
159
|
};
|
|
136
160
|
var getBadgeText = function getBadgeText(access) {
|
|
137
|
-
var
|
|
138
|
-
|
|
161
|
+
var n = Number(access);
|
|
162
|
+
var option = resolvedRoleOptions.find(function (role) {
|
|
163
|
+
return Number(role.value) === n;
|
|
139
164
|
});
|
|
140
|
-
|
|
165
|
+
if (option) return option.label;
|
|
166
|
+
if (Number.isFinite(n)) return "Access ".concat(n);
|
|
167
|
+
return 'User';
|
|
141
168
|
};
|
|
142
169
|
var updateUserRole = /*#__PURE__*/function () {
|
|
143
170
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(user, newAccess) {
|
|
@@ -153,7 +180,7 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
153
180
|
setFeedback('Could not resolve user id');
|
|
154
181
|
return _context2.a(2);
|
|
155
182
|
case 1:
|
|
156
|
-
if (!(
|
|
183
|
+
if (!(Number(user.access) === newAccess)) {
|
|
157
184
|
_context2.n = 2;
|
|
158
185
|
break;
|
|
159
186
|
}
|
|
@@ -266,6 +293,8 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
266
293
|
var _user$fullName;
|
|
267
294
|
var userId = getUserId(user);
|
|
268
295
|
var isUpdating = updatingUserId === userId;
|
|
296
|
+
var selectOptions = optionsForUser(user.access);
|
|
297
|
+
var selectValue = Number.isFinite(Number(user.access)) ? Number(user.access) : normalizeAccess(user.access);
|
|
269
298
|
return /*#__PURE__*/_react["default"].createElement("tr", {
|
|
270
299
|
key: userId || user._id,
|
|
271
300
|
className: onUserClick ? 'cursor-pointer hover:bg-gray-50' : '',
|
|
@@ -296,13 +325,13 @@ var PowrBaseUsersAdmin = function PowrBaseUsersAdmin(_ref) {
|
|
|
296
325
|
}, showActions ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
297
326
|
className: "flex items-center gap-2"
|
|
298
327
|
}, /*#__PURE__*/_react["default"].createElement("select", {
|
|
299
|
-
value:
|
|
328
|
+
value: selectValue,
|
|
300
329
|
disabled: isUpdating,
|
|
301
330
|
onChange: function onChange(e) {
|
|
302
331
|
return updateUserRole(user, Number(e.target.value));
|
|
303
332
|
},
|
|
304
333
|
className: "text-sm border border-gray-300 rounded-md px-2 py-1.5 bg-white focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:opacity-50"
|
|
305
|
-
},
|
|
334
|
+
}, selectOptions.map(function (role) {
|
|
306
335
|
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
307
336
|
key: role.value,
|
|
308
337
|
value: role.value
|