@abtnode/ux 1.16.13 → 1.16.14-beta-0c29907f
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/lib/blocklet/actions.js +2 -2
- package/lib/blocklet/audit-logs.js +23 -4
- package/lib/blocklet/component/space-connector.js +1 -1
- package/lib/blocklet/config-navigation.js +20 -6
- package/lib/blocklet/oauth/federated-detail-dialog.js +183 -0
- package/lib/blocklet/oauth/federated-invite-dialog.js +93 -0
- package/lib/blocklet/oauth/federated-join-dialog.js +120 -0
- package/lib/blocklet/oauth/federated-site-list.js +318 -0
- package/lib/blocklet/oauth/federated.js +92 -0
- package/lib/blocklet/oauth/index.js +9 -0
- package/lib/blocklet/storage/backups.js +22 -5
- package/lib/blocklet/storage/item.js +7 -26
- package/lib/card-selector.js +8 -5
- package/lib/contexts/audit-log.js +17 -3
- package/lib/did-address.js +16 -31
- package/lib/hooks/blocklet.js +2 -3
- package/lib/hooks/confirm.js +106 -0
- package/lib/invitation/invitation-passport.js +12 -26
- package/lib/invitation/invitation.js +3 -0
- package/lib/locales/en.js +51 -3
- package/lib/locales/zh.js +51 -3
- package/lib/lost-passport.js +4 -3
- package/lib/schema-form/passport-input.js +3 -2
- package/lib/team/members/index.js +13 -6
- package/lib/team/members/member.js +9 -6
- package/lib/team/members/passports.js +7 -5
- package/lib/team/passports/color.js +3 -2
- package/lib/team/passports/index.js +24 -15
- package/lib/team/passports/trusted-factories.js +5 -20
- package/lib/team/passports/trusted-issuers.js +5 -19
- package/package.json +20 -18
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _SvgIcon = _interopRequireDefault(require("@mui/material/SvgIcon"));
|
|
8
|
+
var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
|
|
9
|
+
var _Stars = _interopRequireDefault(require("@mui/icons-material/Stars"));
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
12
|
+
var _Datatable = _interopRequireDefault(require("@arcblock/ux/lib/Datatable"));
|
|
13
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
14
|
+
var _Address = _interopRequireDefault(require("@arcblock/did-connect/lib/Address"));
|
|
15
|
+
var _react = require("react");
|
|
16
|
+
var _ahooks = require("ahooks");
|
|
17
|
+
var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
18
|
+
var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
19
|
+
var _blocklet = require("../../contexts/blocklet");
|
|
20
|
+
var _node = require("../../contexts/node");
|
|
21
|
+
var _confirm = _interopRequireDefault(require("../../hooks/confirm"));
|
|
22
|
+
var _federatedDetailDialog = _interopRequireDefault(require("./federated-detail-dialog"));
|
|
23
|
+
var _federatedInviteDialog = _interopRequireDefault(require("./federated-invite-dialog"));
|
|
24
|
+
var _switchControl = _interopRequireDefault(require("../component/switch-control"));
|
|
25
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
/* eslint-disable react/no-unstable-nested-components */
|
|
28
|
+
|
|
29
|
+
function FederatedSiteList(_ref) {
|
|
30
|
+
var _blocklet$settings$fe, _blocklet$settings$fe2, _blocklet$site2, _blocklet$site2$domai, _blocklet$site2$domai2;
|
|
31
|
+
let {
|
|
32
|
+
mode
|
|
33
|
+
} = _ref;
|
|
34
|
+
const federatedInviteDialogRef = (0, _react.useRef)(null);
|
|
35
|
+
const federatedDetailDialogRef = (0, _react.useRef)(null);
|
|
36
|
+
const {
|
|
37
|
+
t,
|
|
38
|
+
locale
|
|
39
|
+
} = (0, _react.useContext)(_context.LocaleContext);
|
|
40
|
+
const {
|
|
41
|
+
blocklet,
|
|
42
|
+
actions: {
|
|
43
|
+
refreshBlocklet
|
|
44
|
+
}
|
|
45
|
+
} = (0, _blocklet.useBlockletContext)();
|
|
46
|
+
const {
|
|
47
|
+
confirmApi,
|
|
48
|
+
confirmHolder
|
|
49
|
+
} = (0, _confirm.default)();
|
|
50
|
+
const {
|
|
51
|
+
api
|
|
52
|
+
} = (0, _node.useNodeContext)();
|
|
53
|
+
const federatedSites = ((_blocklet$settings$fe = blocklet.settings.federated) === null || _blocklet$settings$fe === void 0 ? void 0 : _blocklet$settings$fe.sites) || [];
|
|
54
|
+
const federatedConfig = ((_blocklet$settings$fe2 = blocklet.settings.federated) === null || _blocklet$settings$fe2 === void 0 ? void 0 : _blocklet$settings$fe2.config) || {
|
|
55
|
+
autoLogin: false
|
|
56
|
+
};
|
|
57
|
+
const isMaster = federatedConfig.isMaster !== false;
|
|
58
|
+
const viewDetail = (0, _ahooks.useMemoizedFn)(row => {
|
|
59
|
+
var _federatedDetailDialo;
|
|
60
|
+
(_federatedDetailDialo = federatedDetailDialogRef.current) === null || _federatedDetailDialo === void 0 ? void 0 : _federatedDetailDialo.open(row);
|
|
61
|
+
});
|
|
62
|
+
const approveSite = (0, _ahooks.useMemoizedFn)(row => {
|
|
63
|
+
var _federatedDetailDialo2;
|
|
64
|
+
(_federatedDetailDialo2 = federatedDetailDialogRef.current) === null || _federatedDetailDialo2 === void 0 ? void 0 : _federatedDetailDialo2.approve(row, refreshBlocklet);
|
|
65
|
+
});
|
|
66
|
+
const toRevokeSite = (0, _ahooks.useMemoizedFn)(row => {
|
|
67
|
+
confirmApi.open({
|
|
68
|
+
title: t('federated.disableFederatedLogin'),
|
|
69
|
+
content: t('federated.disableFederatedLoginDescription'),
|
|
70
|
+
async onConfirm(close) {
|
|
71
|
+
await api.auditFederatedLogin({
|
|
72
|
+
input: {
|
|
73
|
+
appId: row.appId,
|
|
74
|
+
did: blocklet.meta.did,
|
|
75
|
+
status: 'revoked'
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
close();
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
const toApproveSite = (0, _ahooks.useMemoizedFn)(row => {
|
|
83
|
+
confirmApi.open({
|
|
84
|
+
title: t('federated.enableFederatedLogin'),
|
|
85
|
+
content: t('federated.enableFederatedLoginDescription'),
|
|
86
|
+
async onConfirm(close) {
|
|
87
|
+
await api.auditFederatedLogin({
|
|
88
|
+
input: {
|
|
89
|
+
appId: row.appId,
|
|
90
|
+
did: blocklet.meta.did,
|
|
91
|
+
status: 'approved'
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
close();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
const columns = (0, _ahooks.useCreation)(() => {
|
|
99
|
+
const list = [{
|
|
100
|
+
label: t('common.name'),
|
|
101
|
+
name: 'appName',
|
|
102
|
+
options: {
|
|
103
|
+
customBodyRenderLite: rowIndex => {
|
|
104
|
+
const row = federatedSites[rowIndex];
|
|
105
|
+
const isSelfMaster = row.isMaster !== false;
|
|
106
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
107
|
+
display: "inline-block",
|
|
108
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
109
|
+
component: "a",
|
|
110
|
+
display: "flex",
|
|
111
|
+
alignItems: "center",
|
|
112
|
+
href: row.appUrl,
|
|
113
|
+
target: "_blank",
|
|
114
|
+
onClick: e => {
|
|
115
|
+
e.stopPropagation();
|
|
116
|
+
},
|
|
117
|
+
children: [isSelfMaster && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SvgIcon.default, {
|
|
118
|
+
component: _Stars.default,
|
|
119
|
+
style: {
|
|
120
|
+
marginRight: '4px'
|
|
121
|
+
}
|
|
122
|
+
}), row.appName]
|
|
123
|
+
})
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}, {
|
|
128
|
+
label: t('common.did'),
|
|
129
|
+
name: 'appId',
|
|
130
|
+
options: {
|
|
131
|
+
customBodyRenderLite: rowIndex => {
|
|
132
|
+
const row = federatedSites[rowIndex];
|
|
133
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Address.default, {
|
|
134
|
+
children: row.appId
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}, {
|
|
139
|
+
label: t('common.status'),
|
|
140
|
+
name: 'status',
|
|
141
|
+
options: {
|
|
142
|
+
customBodyRenderLite: rowIndex => {
|
|
143
|
+
const row = federatedSites[rowIndex];
|
|
144
|
+
const isSelfMaster = row.isMaster !== false;
|
|
145
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
146
|
+
children: isSelfMaster ? '-' : t("federated.status.".concat(row.status))
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}];
|
|
151
|
+
if (isMaster) {
|
|
152
|
+
list.push({
|
|
153
|
+
label: t('common.actions'),
|
|
154
|
+
name: 'actions',
|
|
155
|
+
options: {
|
|
156
|
+
customBodyRenderLite: rowIndex => {
|
|
157
|
+
const row = federatedSites[rowIndex];
|
|
158
|
+
const isSelfMaster = row.isMaster !== false;
|
|
159
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
160
|
+
display: "flex",
|
|
161
|
+
gap: 1,
|
|
162
|
+
children: !isSelfMaster ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
163
|
+
children: [row.status === 'pending' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
164
|
+
variant: "contained",
|
|
165
|
+
color: "primary",
|
|
166
|
+
size: "small",
|
|
167
|
+
onClick: e => {
|
|
168
|
+
e.stopPropagation();
|
|
169
|
+
approveSite(row);
|
|
170
|
+
},
|
|
171
|
+
children: t('federated.status.pending')
|
|
172
|
+
}), row.status === 'approved' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
173
|
+
variant: "contained",
|
|
174
|
+
color: "error",
|
|
175
|
+
size: "small",
|
|
176
|
+
onClick: e => {
|
|
177
|
+
e.stopPropagation();
|
|
178
|
+
toRevokeSite(row);
|
|
179
|
+
},
|
|
180
|
+
style: {
|
|
181
|
+
whiteSpace: 'nowrap'
|
|
182
|
+
},
|
|
183
|
+
children: t('federated.revoke')
|
|
184
|
+
}), row.status === 'revoked' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
185
|
+
variant: "contained",
|
|
186
|
+
color: "warning",
|
|
187
|
+
size: "small",
|
|
188
|
+
onClick: e => {
|
|
189
|
+
e.stopPropagation();
|
|
190
|
+
toApproveSite(row);
|
|
191
|
+
},
|
|
192
|
+
style: {
|
|
193
|
+
whiteSpace: 'nowrap'
|
|
194
|
+
},
|
|
195
|
+
children: t('federated.approve')
|
|
196
|
+
})]
|
|
197
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
198
|
+
children: [row.status === 'rejected' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
199
|
+
variant: "contained",
|
|
200
|
+
color: "error",
|
|
201
|
+
size: "small",
|
|
202
|
+
onClick: e => {
|
|
203
|
+
e.stopPropagation();
|
|
204
|
+
},
|
|
205
|
+
children: t('federated.status.rejected')
|
|
206
|
+
}), row.status === 'revoked' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
207
|
+
variant: "contained",
|
|
208
|
+
color: "secondary",
|
|
209
|
+
size: "small",
|
|
210
|
+
onClick: e => {
|
|
211
|
+
e.stopPropagation();
|
|
212
|
+
},
|
|
213
|
+
children: t('federated.status.revoked')
|
|
214
|
+
})]
|
|
215
|
+
})
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return list;
|
|
222
|
+
}, [federatedConfig.appId, federatedSites, isMaster]);
|
|
223
|
+
const tableOptions = (0, _ahooks.useCreation)(() => {
|
|
224
|
+
return {
|
|
225
|
+
sort: true,
|
|
226
|
+
download: false,
|
|
227
|
+
filter: false,
|
|
228
|
+
print: false,
|
|
229
|
+
expandableRowsOnClick: true,
|
|
230
|
+
onRowClick(e, _ref2) {
|
|
231
|
+
let {
|
|
232
|
+
dataIndex
|
|
233
|
+
} = _ref2;
|
|
234
|
+
const x = federatedSites[dataIndex];
|
|
235
|
+
viewDetail(x);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}, []);
|
|
239
|
+
const showInvite = (0, _ahooks.useMemoizedFn)(() => {
|
|
240
|
+
var _blocklet$site, _blocklet$site$domain, _blocklet$site$domain2;
|
|
241
|
+
const link = (_blocklet$site = blocklet.site) === null || _blocklet$site === void 0 ? void 0 : (_blocklet$site$domain = _blocklet$site.domainAliases) === null || _blocklet$site$domain === void 0 ? void 0 : (_blocklet$site$domain2 = _blocklet$site$domain[0]) === null || _blocklet$site$domain2 === void 0 ? void 0 : _blocklet$site$domain2.href;
|
|
242
|
+
if (link) {
|
|
243
|
+
try {
|
|
244
|
+
var _federatedInviteDialo;
|
|
245
|
+
const url = new URL(link);
|
|
246
|
+
(_federatedInviteDialo = federatedInviteDialogRef.current) === null || _federatedInviteDialo === void 0 ? void 0 : _federatedInviteDialo.open({
|
|
247
|
+
link: url.origin
|
|
248
|
+
});
|
|
249
|
+
} catch (_unused) {
|
|
250
|
+
_Toast.default.error(t('federated.failedToGetFederatedLoginLink'));
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}, [(_blocklet$site2 = blocklet.site) === null || _blocklet$site2 === void 0 ? void 0 : (_blocklet$site2$domai = _blocklet$site2.domainAliases) === null || _blocklet$site2$domai === void 0 ? void 0 : (_blocklet$site2$domai2 = _blocklet$site2$domai[0]) === null || _blocklet$site2$domai2 === void 0 ? void 0 : _blocklet$site2$domai2.href]);
|
|
254
|
+
const [checked, setChecked] = (0, _react.useState)(federatedConfig.autoLogin || false);
|
|
255
|
+
const changeAutoLogin = (0, _ahooks.useMemoizedFn)(() => {
|
|
256
|
+
confirmApi.open({
|
|
257
|
+
title: checked ? t('federated.disableFederatedAutoLogin') : t('federated.enableFederatedAutoLogin'),
|
|
258
|
+
content: checked ? t('federated.disableFederatedAutoLoginDescription') : t('federated.enableFederatedAutoLoginDescription'),
|
|
259
|
+
async onConfirm(close) {
|
|
260
|
+
await api.configFederated({
|
|
261
|
+
input: {
|
|
262
|
+
did: blocklet.meta.did,
|
|
263
|
+
autoLogin: !checked
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
setChecked(prevValue => !prevValue);
|
|
267
|
+
close();
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}, [setChecked, checked]);
|
|
271
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
272
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
|
|
273
|
+
className: "main-table",
|
|
274
|
+
locale: locale,
|
|
275
|
+
data: federatedSites,
|
|
276
|
+
columns: columns,
|
|
277
|
+
title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
278
|
+
className: "table-toolbar-left",
|
|
279
|
+
children: mode === 'master' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
280
|
+
variant: "contained",
|
|
281
|
+
onClick: showInvite,
|
|
282
|
+
children: t('federated.inviteJoinFederatedLogin')
|
|
283
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlLabel.default, {
|
|
284
|
+
sx: {
|
|
285
|
+
ml: 0,
|
|
286
|
+
'& span.MuiSwitch-switchBase': {
|
|
287
|
+
display: 'flex'
|
|
288
|
+
},
|
|
289
|
+
'& span.MuiSwitch-track': {
|
|
290
|
+
display: 'block'
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
control: /*#__PURE__*/(0, _jsxRuntime.jsx)(_switchControl.default, {
|
|
294
|
+
checked: checked,
|
|
295
|
+
style: {
|
|
296
|
+
marginRight: '6px'
|
|
297
|
+
},
|
|
298
|
+
onChange: changeAutoLogin
|
|
299
|
+
}),
|
|
300
|
+
label: t('federated.enableFederatedAutoLogin')
|
|
301
|
+
})
|
|
302
|
+
}),
|
|
303
|
+
options: tableOptions
|
|
304
|
+
}), confirmHolder, /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedInviteDialog.default, {
|
|
305
|
+
ref: federatedInviteDialogRef
|
|
306
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedDetailDialog.default, {
|
|
307
|
+
ref: federatedDetailDialogRef
|
|
308
|
+
})]
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
FederatedSiteList.propTypes = {
|
|
312
|
+
mode: _propTypes.default.oneOf(['member', 'master'])
|
|
313
|
+
};
|
|
314
|
+
FederatedSiteList.defaultProps = {
|
|
315
|
+
mode: 'member'
|
|
316
|
+
};
|
|
317
|
+
var _default = FederatedSiteList;
|
|
318
|
+
exports.default = _default;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = FederatedLogin;
|
|
7
|
+
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
8
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _ahooks = require("ahooks");
|
|
11
|
+
var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
12
|
+
var _material = require("@mui/material");
|
|
13
|
+
var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
14
|
+
var _blocklet = require("../../contexts/blocklet");
|
|
15
|
+
var _federatedSiteList = _interopRequireDefault(require("./federated-site-list"));
|
|
16
|
+
var _federatedJoinDialog = _interopRequireDefault(require("./federated-join-dialog"));
|
|
17
|
+
var _federatedInviteDialog = _interopRequireDefault(require("./federated-invite-dialog"));
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
|
+
/* eslint-disable react/no-unstable-nested-components */
|
|
21
|
+
|
|
22
|
+
function FederatedLogin() {
|
|
23
|
+
var _blocklet$site2, _blocklet$site2$domai, _blocklet$site2$domai2, _blocklet$settings$fe;
|
|
24
|
+
const federatedInviteRef = (0, _react.useRef)(null);
|
|
25
|
+
const federatedJoinRef = (0, _react.useRef)(null);
|
|
26
|
+
const {
|
|
27
|
+
t
|
|
28
|
+
} = (0, _react.useContext)(_context.LocaleContext);
|
|
29
|
+
const {
|
|
30
|
+
blocklet,
|
|
31
|
+
actions: {
|
|
32
|
+
refreshBlocklet
|
|
33
|
+
}
|
|
34
|
+
} = (0, _blocklet.useBlockletContext)();
|
|
35
|
+
const showInvite = (0, _ahooks.useMemoizedFn)(() => {
|
|
36
|
+
var _blocklet$site, _blocklet$site$domain, _blocklet$site$domain2;
|
|
37
|
+
const link = (_blocklet$site = blocklet.site) === null || _blocklet$site === void 0 ? void 0 : (_blocklet$site$domain = _blocklet$site.domainAliases) === null || _blocklet$site$domain === void 0 ? void 0 : (_blocklet$site$domain2 = _blocklet$site$domain[0]) === null || _blocklet$site$domain2 === void 0 ? void 0 : _blocklet$site$domain2.href;
|
|
38
|
+
if (link) {
|
|
39
|
+
try {
|
|
40
|
+
var _federatedInviteRef$c;
|
|
41
|
+
const url = new URL(link);
|
|
42
|
+
(_federatedInviteRef$c = federatedInviteRef.current) === null || _federatedInviteRef$c === void 0 ? void 0 : _federatedInviteRef$c.open({
|
|
43
|
+
link: url.origin
|
|
44
|
+
});
|
|
45
|
+
} catch (_unused) {
|
|
46
|
+
_Toast.default.error(t('federated.failedToGetFederatedLoginLink'));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, [(_blocklet$site2 = blocklet.site) === null || _blocklet$site2 === void 0 ? void 0 : (_blocklet$site2$domai = _blocklet$site2.domainAliases) === null || _blocklet$site2$domai === void 0 ? void 0 : (_blocklet$site2$domai2 = _blocklet$site2$domai[0]) === null || _blocklet$site2$domai2 === void 0 ? void 0 : _blocklet$site2$domai2.href]);
|
|
50
|
+
const joinInvite = (0, _ahooks.useMemoizedFn)(() => {
|
|
51
|
+
var _federatedJoinRef$cur;
|
|
52
|
+
(_federatedJoinRef$cur = federatedJoinRef.current) === null || _federatedJoinRef$cur === void 0 ? void 0 : _federatedJoinRef$cur.open(() => {
|
|
53
|
+
refreshBlocklet();
|
|
54
|
+
});
|
|
55
|
+
}, [refreshBlocklet]);
|
|
56
|
+
if (((_blocklet$settings$fe = blocklet.settings.federated) === null || _blocklet$settings$fe === void 0 ? void 0 : _blocklet$settings$fe.sites.length) > 0) {
|
|
57
|
+
var _blocklet$settings$fe2;
|
|
58
|
+
const isMaster = ((_blocklet$settings$fe2 = blocklet.settings.federated) === null || _blocklet$settings$fe2 === void 0 ? void 0 : _blocklet$settings$fe2.config.isMaster) !== false;
|
|
59
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedSiteList.default, {
|
|
60
|
+
mode: isMaster ? 'master' : 'member'
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
64
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
65
|
+
display: "flex",
|
|
66
|
+
flexDirection: "column",
|
|
67
|
+
gap: 2,
|
|
68
|
+
justifyContent: "center",
|
|
69
|
+
alignItems: "center",
|
|
70
|
+
minHeight: "200px",
|
|
71
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
72
|
+
variant: "contained",
|
|
73
|
+
onClick: showInvite,
|
|
74
|
+
children: t('federated.inviteJoinFederatedLogin')
|
|
75
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Divider, {
|
|
76
|
+
sx: {
|
|
77
|
+
width: '150px',
|
|
78
|
+
color: 'rgba(0, 0, 0, 0.3)'
|
|
79
|
+
},
|
|
80
|
+
children: "OR"
|
|
81
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
|
|
82
|
+
variant: "outlined",
|
|
83
|
+
onClick: joinInvite,
|
|
84
|
+
children: t('federated.joinFederatedLogin')
|
|
85
|
+
})]
|
|
86
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedInviteDialog.default, {
|
|
87
|
+
ref: federatedInviteRef
|
|
88
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_federatedJoinDialog.default, {
|
|
89
|
+
ref: federatedJoinRef
|
|
90
|
+
})]
|
|
91
|
+
});
|
|
92
|
+
}
|
|
@@ -12,6 +12,7 @@ var _ahooks = require("ahooks");
|
|
|
12
12
|
var _react = require("react");
|
|
13
13
|
var _auth = _interopRequireDefault(require("./auth0"));
|
|
14
14
|
var _commonSettings = _interopRequireDefault(require("./common-settings"));
|
|
15
|
+
var _federated = _interopRequireDefault(require("./federated"));
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
18
|
function OAuth() {
|
|
@@ -25,6 +26,13 @@ function OAuth() {
|
|
|
25
26
|
children: t('oauth.commonSettings')
|
|
26
27
|
}),
|
|
27
28
|
value: 'settings'
|
|
29
|
+
}, {
|
|
30
|
+
label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
31
|
+
textAlign: "center",
|
|
32
|
+
width: "100%",
|
|
33
|
+
children: t('oauth.federated')
|
|
34
|
+
}),
|
|
35
|
+
value: 'federated'
|
|
28
36
|
}, {
|
|
29
37
|
label: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
30
38
|
textAlign: "center",
|
|
@@ -43,6 +51,7 @@ function OAuth() {
|
|
|
43
51
|
const [currentTab, setCurrentTab] = (0, _react.useState)(tabs[0].value);
|
|
44
52
|
const contents = (0, _ahooks.useCreation)(() => ({
|
|
45
53
|
auth0: /*#__PURE__*/(0, _jsxRuntime.jsx)(_auth.default, {}),
|
|
54
|
+
federated: /*#__PURE__*/(0, _jsxRuntime.jsx)(_federated.default, {}),
|
|
46
55
|
more: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
47
56
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Empty.default, {
|
|
48
57
|
children: t('oauth.comingSoon')
|
|
@@ -210,7 +210,11 @@ function SpacesBackupRecords(_ref2) {
|
|
|
210
210
|
}];
|
|
211
211
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, _objectSpread(_objectSpread({}, rest), {}, {
|
|
212
212
|
children: backups !== null && backups !== void 0 && backups.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
|
|
213
|
-
title:
|
|
213
|
+
title: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
214
|
+
fontSize: "1.2rem",
|
|
215
|
+
fontWeight: "bold",
|
|
216
|
+
children: t('storage.spaces.backup.records')
|
|
217
|
+
}),
|
|
214
218
|
data: backups,
|
|
215
219
|
columns: columns,
|
|
216
220
|
emptyNode: t('storage.spaces.record.emptyData', locale),
|
|
@@ -219,10 +223,23 @@ function SpacesBackupRecords(_ref2) {
|
|
|
219
223
|
filter: false,
|
|
220
224
|
print: false
|
|
221
225
|
}
|
|
222
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
227
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
228
|
+
display: "flex",
|
|
229
|
+
height: "56px",
|
|
230
|
+
lineHeight: "56px",
|
|
231
|
+
alignItems: "center",
|
|
232
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Typography, {
|
|
233
|
+
fontSize: "1.2rem",
|
|
234
|
+
fontWeight: "bold",
|
|
235
|
+
children: t('storage.spaces.backup.records')
|
|
236
|
+
})
|
|
237
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Box, {
|
|
238
|
+
color: "#9397A1",
|
|
239
|
+
marginTop: "16px",
|
|
240
|
+
marginBottom: "24px",
|
|
241
|
+
children: t('storage.spaces.record.emptyData')
|
|
242
|
+
})]
|
|
226
243
|
})
|
|
227
244
|
}));
|
|
228
245
|
}
|
|
@@ -13,13 +13,11 @@ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
|
13
13
|
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
14
14
|
var _constant = require("@blocklet/constant");
|
|
15
15
|
var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect"));
|
|
16
|
-
var _Address = _interopRequireDefault(require("@arcblock/ux/lib/Address"));
|
|
17
|
-
var _Avatar = _interopRequireDefault(require("@arcblock/did-connect/lib/Avatar"));
|
|
18
16
|
var _ahooks = require("ahooks");
|
|
19
|
-
var _didMotif = require("@arcblock/did-motif");
|
|
20
17
|
var _lodash = require("lodash");
|
|
21
18
|
var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
|
|
22
19
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
20
|
+
var _didAddress = _interopRequireDefault(require("../../did-address"));
|
|
23
21
|
var _switchControl = _interopRequireDefault(require("../component/switch-control"));
|
|
24
22
|
var _action = _interopRequireDefault(require("./action"));
|
|
25
23
|
var _mode = require("../../util/mode");
|
|
@@ -368,29 +366,12 @@ function SpaceItem(_ref) {
|
|
|
368
366
|
fontSize: '14px'
|
|
369
367
|
},
|
|
370
368
|
color: "#9397A1",
|
|
371
|
-
children: spaceGateway.did && /*#__PURE__*/(0, _jsxRuntime.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
style: {
|
|
378
|
-
display: 'inline-flex',
|
|
379
|
-
marginLeft: '8px'
|
|
380
|
-
},
|
|
381
|
-
copyable: false,
|
|
382
|
-
size: 14,
|
|
383
|
-
compact: true,
|
|
384
|
-
responsive: false,
|
|
385
|
-
prepend: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
|
|
386
|
-
did: spaceGateway.did,
|
|
387
|
-
size: 16,
|
|
388
|
-
style: {
|
|
389
|
-
marginRight: 8
|
|
390
|
-
}
|
|
391
|
-
}),
|
|
392
|
-
children: spaceGateway.did
|
|
393
|
-
})]
|
|
369
|
+
children: spaceGateway.did && /*#__PURE__*/(0, _jsxRuntime.jsx)(_didAddress.default, {
|
|
370
|
+
copyable: false,
|
|
371
|
+
size: 14,
|
|
372
|
+
compact: true,
|
|
373
|
+
responsive: false,
|
|
374
|
+
did: spaceGateway.did
|
|
394
375
|
})
|
|
395
376
|
})
|
|
396
377
|
})]
|
package/lib/card-selector.js
CHANGED
|
@@ -9,6 +9,7 @@ var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
10
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
11
|
var _templateObject;
|
|
12
|
+
/* eslint-disable jsx-a11y/alt-text */
|
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
14
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
14
15
|
function CardSelector(_ref) {
|
|
@@ -70,7 +71,7 @@ function CardSelector(_ref) {
|
|
|
70
71
|
transform: "translate(".concat(-translateX, "px, 0)")
|
|
71
72
|
},
|
|
72
73
|
children: list.map((e, i) => {
|
|
73
|
-
return /*#__PURE__*/(0, _jsxRuntime.
|
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
74
75
|
className: "card-item ".concat(i === selectedId ? 'selected' : ''),
|
|
75
76
|
style: {
|
|
76
77
|
width,
|
|
@@ -81,16 +82,18 @@ function CardSelector(_ref) {
|
|
|
81
82
|
,
|
|
82
83
|
|
|
83
84
|
onClick: () => selectedItem(i),
|
|
84
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("
|
|
85
|
-
|
|
85
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("object", {
|
|
86
|
+
data: e.src,
|
|
86
87
|
alt: e.name
|
|
87
|
-
})
|
|
88
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
89
|
+
className: "card-item-cover"
|
|
90
|
+
})]
|
|
88
91
|
}, i);
|
|
89
92
|
})
|
|
90
93
|
})
|
|
91
94
|
});
|
|
92
95
|
}
|
|
93
|
-
const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n
|
|
96
|
+
const Contianer = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n overflow: hidden;\n mask-image: linear-gradient(to left, transparent, black 3%, black 97%, transparent);\n overflow: hidden;\n .card-container {\n display: flex;\n white-space: nowrap;\n width: max-content;\n transition: all ease 0.3s;\n }\n .card-item {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n\n .card-item-cover {\n position: absolute;\n width: 100%;\n height: 100%;\n cursor: pointer;\n z-index: 99;\n }\n\n object {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n outline: #526ded solid 0;\n transition: all ease 0.2s;\n box-shadow: rgba(0, 0, 0, 0.2) 0 0 10px;\n }\n &.selected {\n cursor: default;\n object {\n outline: #526ded solid 5px;\n }\n }\n }\n"])));
|
|
94
97
|
CardSelector.propTypes = {
|
|
95
98
|
list: _propTypes.default.array,
|
|
96
99
|
width: _propTypes.default.number,
|
|
@@ -25,10 +25,13 @@ function AuditLogProvider(_ref) {
|
|
|
25
25
|
let {
|
|
26
26
|
children,
|
|
27
27
|
scope = '',
|
|
28
|
-
categories = []
|
|
28
|
+
categories = [],
|
|
29
|
+
showScope,
|
|
30
|
+
scopeFormatter
|
|
29
31
|
} = _ref;
|
|
30
32
|
const {
|
|
31
|
-
api: client
|
|
33
|
+
api: client,
|
|
34
|
+
info: nodeInfo
|
|
32
35
|
} = (0, _node.useNodeContext)();
|
|
33
36
|
const [auditLogs, setAuditLogs] = (0, _react.useState)([]);
|
|
34
37
|
const [paging, setPaging] = (0, _react.useState)({
|
|
@@ -101,6 +104,15 @@ function AuditLogProvider(_ref) {
|
|
|
101
104
|
scope
|
|
102
105
|
}
|
|
103
106
|
});
|
|
107
|
+
|
|
108
|
+
// add link for blocklet audit logs
|
|
109
|
+
if (showScope) {
|
|
110
|
+
(res.list || []).forEach(x => {
|
|
111
|
+
if (x.scope !== nodeInfo.did) {
|
|
112
|
+
x.link = "/blocklets/".concat(x.scope, "/components");
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
104
116
|
setAuditLogs(res.list);
|
|
105
117
|
setPaging(res.paging);
|
|
106
118
|
setLoading(false);
|
|
@@ -133,7 +145,9 @@ function AuditLogProvider(_ref) {
|
|
|
133
145
|
categories: filterCategories,
|
|
134
146
|
setCategory,
|
|
135
147
|
data: auditLogs,
|
|
136
|
-
paging
|
|
148
|
+
paging,
|
|
149
|
+
showScope,
|
|
150
|
+
scopeFormatter
|
|
137
151
|
};
|
|
138
152
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Provider, {
|
|
139
153
|
value: {
|