@abtnode/ux 1.16.32-beta-4d47ae7f → 1.16.32-beta-17be26d7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,52 @@
1
+ import React from 'react';
1
2
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
3
+ import SwitchControl from '@arcblock/ux/lib/Switch';
2
4
  import Box from '@mui/material/Box';
3
5
  import { Controller, useForm } from 'react-hook-form';
4
6
  import Button from '@mui/material/Button';
5
7
  import FormControl from '@mui/material/FormControl';
8
+ import FormControlLabel from '@mui/material/FormControlLabel';
6
9
  import Slider from '@mui/material/Slider';
7
10
  import Stack from '@mui/material/Stack';
11
+ import Typography from '@mui/material/Typography';
8
12
  import Toast from '@arcblock/ux/lib/Toast';
9
13
  import { useMemoizedFn } from 'ahooks';
10
14
  import pick from 'lodash/pick';
11
- import { SESSION_TTL } from '@abtnode/constant';
15
+ import omit from 'lodash/omit';
16
+ import merge from 'lodash/merge';
17
+ import { SESSION_TTL, SESSION_CACHE_TTL } from '@abtnode/constant';
12
18
  import { useBlockletContext } from '../../contexts/blocklet';
13
19
  import { useNodeContext } from '../../contexts/node';
14
20
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
21
  const defaultForm = {
16
- ttl: SESSION_TTL
22
+ ttl: SESSION_TTL,
23
+ cacheTtl: SESSION_CACHE_TTL,
24
+ email: {
25
+ enabled: false,
26
+ requireVerified: false,
27
+ requireUnique: false,
28
+ trustOauthProviders: false,
29
+ domainBlackList: [],
30
+ trustedIssuers: []
31
+ },
32
+ phone: {
33
+ enabled: false,
34
+ requireVerified: false,
35
+ requireUnique: false,
36
+ regionBlackList: [],
37
+ trustedIssuers: []
38
+ }
17
39
  };
40
+ function Switch(props) {
41
+ return /*#__PURE__*/_jsx(SwitchControl, {
42
+ ...props,
43
+ sx: {
44
+ marginLeft: 1,
45
+ marginRight: 0.5,
46
+ transform: 'scale(0.75)'
47
+ }
48
+ });
49
+ }
18
50
  function fixTtl(data, reverse = false) {
19
51
  const ttl = reverse ? data.ttl * 86400 : data.ttl / 86400;
20
52
  return {
@@ -30,18 +62,27 @@ export default function CommonSettings() {
30
62
  blocklet
31
63
  } = useBlockletContext();
32
64
  const did = blocklet?.meta?.did;
33
- const sessionSettings = Object.assign({}, defaultForm, blocklet?.settings?.session || {});
65
+ const sessionSettings = merge({}, defaultForm, blocklet?.settings?.session || {});
66
+ if (!sessionSettings.phone) {
67
+ sessionSettings.phone = defaultForm.phone;
68
+ }
69
+ if (!sessionSettings.email) {
70
+ sessionSettings.email = defaultForm.email;
71
+ }
34
72
  const {
35
73
  handleSubmit,
36
74
  control,
37
75
  formState,
38
- reset
76
+ reset,
77
+ watch
39
78
  } = useForm({
40
- defaultValues: pick(fixTtl(sessionSettings), ['ttl'])
79
+ defaultValues: pick(fixTtl(sessionSettings), ['ttl', 'cacheTtl', 'email', 'phone'])
41
80
  });
42
81
  const {
43
82
  t
44
83
  } = useLocaleContext();
84
+ const emailEnabled = watch('email.enabled');
85
+ const phoneEnabled = watch('phone.enabled');
45
86
  const onSubmit = useMemoizedFn(async data => {
46
87
  try {
47
88
  const {
@@ -49,84 +90,215 @@ export default function CommonSettings() {
49
90
  } = await api.updateAppSessionConfig({
50
91
  input: {
51
92
  did,
52
- config: fixTtl(data, true)
93
+ config: omit(fixTtl(data, true), ['phone'])
53
94
  }
54
95
  });
55
- const defaultValues = Object.assign({}, defaultForm, pick(blockletChanged?.settings?.session || {}, ['ttl']));
56
- // 将当前表单的默认值重置为新的数据,这样能够修正页面的 isDirty 数据
96
+ const defaultValues = Object.assign({}, defaultForm, pick(blockletChanged?.settings?.session || {}, ['ttl', 'cacheTtl', 'email', 'phone']));
57
97
  reset(fixTtl(defaultValues));
58
98
  Toast.success(t('common.configSuccess'));
59
99
  } catch (err) {
60
100
  Toast.error(err.message);
61
101
  }
62
102
  });
63
- return /*#__PURE__*/_jsx(Box, {
64
- children: /*#__PURE__*/_jsxs("form", {
65
- onSubmit: handleSubmit(onSubmit),
66
- disabled: true,
67
- children: [/*#__PURE__*/_jsx(Controller, {
68
- name: "ttl",
69
- control: control,
70
- render: ({
71
- field
72
- }) => /*#__PURE__*/_jsx(FormControl, {
73
- fullWidth: true,
103
+ return /*#__PURE__*/_jsx("form", {
104
+ onSubmit: handleSubmit(onSubmit),
105
+ children: /*#__PURE__*/_jsxs(Stack, {
106
+ direction: "column",
107
+ spacing: 4,
108
+ children: [/*#__PURE__*/_jsxs(Stack, {
109
+ direction: "column",
110
+ children: [/*#__PURE__*/_jsx(Typography, {
111
+ variant: "body1",
112
+ mb: 1,
113
+ children: t('blocklet.config.session.profile')
114
+ }), /*#__PURE__*/_jsx(FormControlLabel, {
115
+ disabled: true,
116
+ control: /*#__PURE__*/_jsx(Switch, {
117
+ size: "small",
118
+ checked: true
119
+ }),
120
+ label: t('blocklet.config.session.fullNameEnabled')
121
+ }), /*#__PURE__*/_jsx(FormControlLabel, {
122
+ disabled: true,
123
+ control: /*#__PURE__*/_jsx(Switch, {
124
+ checked: true
125
+ }),
126
+ label: t('blocklet.config.session.avatarEnabled')
127
+ }), /*#__PURE__*/_jsx(Controller, {
128
+ name: "email.enabled",
129
+ control: control,
130
+ render: ({
131
+ field
132
+ }) => {
133
+ return /*#__PURE__*/_jsx(FormControlLabel, {
134
+ control: /*#__PURE__*/_jsx(Switch, {
135
+ ...field,
136
+ checked: field.value
137
+ }),
138
+ label: t('blocklet.config.session.emailEnabled')
139
+ });
140
+ }
141
+ }), emailEnabled && /*#__PURE__*/_jsxs(Stack, {
142
+ direction: "column",
143
+ ml: 2,
144
+ children: [/*#__PURE__*/_jsx(Controller, {
145
+ name: "email.requireVerified",
146
+ control: control,
147
+ render: ({
148
+ field
149
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
150
+ control: /*#__PURE__*/_jsx(Switch, {
151
+ ...field,
152
+ checked: field.value
153
+ }),
154
+ label: t('blocklet.config.session.emailRequireVerified')
155
+ })
156
+ }), /*#__PURE__*/_jsx(Controller, {
157
+ name: "email.requireUnique",
158
+ control: control,
159
+ render: ({
160
+ field
161
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
162
+ control: /*#__PURE__*/_jsx(Switch, {
163
+ ...field,
164
+ checked: field.value
165
+ }),
166
+ label: t('blocklet.config.session.emailRequireUnique')
167
+ })
168
+ }), /*#__PURE__*/_jsx(Controller, {
169
+ name: "email.trustOauthProviders",
170
+ control: control,
171
+ render: ({
172
+ field
173
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
174
+ control: /*#__PURE__*/_jsx(Switch, {
175
+ ...field,
176
+ checked: field.value
177
+ }),
178
+ label: t('blocklet.config.session.emailTrustOauthProviders')
179
+ })
180
+ })]
181
+ }), /*#__PURE__*/_jsxs(Box, {
74
182
  sx: {
75
- mb: 2
183
+ display: 'none'
76
184
  },
77
- children: /*#__PURE__*/_jsxs(Stack, {
78
- px: 3,
79
- children: [/*#__PURE__*/_jsx(Box, {
80
- mx: -3,
81
- my: 0.5,
82
- children: t('blocklet.config.session.ttl', {
83
- day: field.value
185
+ children: [/*#__PURE__*/_jsx(Controller, {
186
+ name: "phone.enabled",
187
+ control: control,
188
+ disabled: true,
189
+ render: ({
190
+ field
191
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
192
+ control: /*#__PURE__*/_jsx(Switch, {
193
+ ...field,
194
+ checked: field.value
195
+ }),
196
+ label: t('blocklet.config.session.phoneEnabled')
197
+ })
198
+ }), phoneEnabled && /*#__PURE__*/_jsxs(Stack, {
199
+ direction: "column",
200
+ ml: 2,
201
+ children: [/*#__PURE__*/_jsx(Controller, {
202
+ name: "phone.requireVerified",
203
+ control: control,
204
+ render: ({
205
+ field
206
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
207
+ control: /*#__PURE__*/_jsx(Switch, {
208
+ ...field,
209
+ checked: field.value
210
+ }),
211
+ label: t('blocklet.config.session.phoneRequireVerified')
212
+ })
213
+ }), /*#__PURE__*/_jsx(Controller, {
214
+ name: "phone.requireUnique",
215
+ control: control,
216
+ render: ({
217
+ field
218
+ }) => /*#__PURE__*/_jsx(FormControlLabel, {
219
+ control: /*#__PURE__*/_jsx(Switch, {
220
+ ...field,
221
+ checked: field.value
222
+ }),
223
+ label: t('blocklet.config.session.phoneRequireUnique')
84
224
  })
85
- }), /*#__PURE__*/_jsx(Slider, {
86
- ...field,
87
- defaultValue: 7,
88
- step: 1,
89
- marks: [{
90
- value: 1,
91
- label: t('blocklet.config.session.day', {
92
- day: 1
93
- })
94
- }, {
95
- value: 7,
96
- label: t('blocklet.config.session.days', {
97
- day: 7
98
- })
99
- }, {
100
- value: 14,
101
- label: t('blocklet.config.session.days', {
102
- day: 14
103
- })
104
- }, {
105
- value: 21,
106
- label: t('blocklet.config.session.days', {
107
- day: 21
108
- })
109
- }, {
110
- value: 30,
111
- label: t('blocklet.config.session.days', {
112
- day: 30
113
- })
114
- }],
115
- min: 1,
116
- max: 30,
117
- valueLabelDisplay: "auto",
118
- style: {
119
- maxWidth: '360px'
120
- }
121
225
  })]
226
+ })]
227
+ })]
228
+ }), /*#__PURE__*/_jsxs(Stack, {
229
+ direction: "column",
230
+ spacing: 2,
231
+ children: [/*#__PURE__*/_jsx(Typography, {
232
+ variant: "body1",
233
+ children: t('blocklet.config.session.period')
234
+ }), /*#__PURE__*/_jsx(Controller, {
235
+ name: "ttl",
236
+ control: control,
237
+ rules: {
238
+ min: 1,
239
+ max: 30
240
+ },
241
+ render: ({
242
+ field
243
+ }) => /*#__PURE__*/_jsx(FormControl, {
244
+ fullWidth: true,
245
+ sx: {
246
+ mb: 2
247
+ },
248
+ children: /*#__PURE__*/_jsxs(Stack, {
249
+ px: 3,
250
+ children: [/*#__PURE__*/_jsx(Box, {
251
+ mx: -3,
252
+ children: t('blocklet.config.session.ttl', {
253
+ day: field.value
254
+ })
255
+ }), /*#__PURE__*/_jsx(Slider, {
256
+ ...field,
257
+ defaultValue: 7,
258
+ step: 1,
259
+ marks: [{
260
+ value: 1,
261
+ label: t('blocklet.config.session.day', {
262
+ day: 1
263
+ })
264
+ }, {
265
+ value: 7,
266
+ label: t('blocklet.config.session.days', {
267
+ day: 7
268
+ })
269
+ }, {
270
+ value: 14,
271
+ label: t('blocklet.config.session.days', {
272
+ day: 14
273
+ })
274
+ }, {
275
+ value: 21,
276
+ label: t('blocklet.config.session.days', {
277
+ day: 21
278
+ })
279
+ }, {
280
+ value: 30,
281
+ label: t('blocklet.config.session.days', {
282
+ day: 30
283
+ })
284
+ }],
285
+ min: 1,
286
+ max: 30,
287
+ valueLabelDisplay: "auto",
288
+ style: {
289
+ maxWidth: '360px'
290
+ }
291
+ })]
292
+ })
122
293
  })
294
+ })]
295
+ }), /*#__PURE__*/_jsx(Box, {
296
+ children: /*#__PURE__*/_jsx(Button, {
297
+ type: "submit",
298
+ variant: "contained",
299
+ disabled: !formState.isDirty,
300
+ children: t('oauth.save')
123
301
  })
124
- }), /*#__PURE__*/_jsx(Button, {
125
- type: "submit",
126
- variant: "contained",
127
- onSubmit: handleSubmit(onSubmit),
128
- disabled: !formState.isDirty,
129
- children: t('oauth.save')
130
302
  })]
131
303
  })
132
304
  });
@@ -260,7 +260,7 @@ function FederatedSiteList({
260
260
  });
261
261
  const customButtons = [];
262
262
  if (mode !== 'master') {
263
- customButtons.push( /*#__PURE__*/_jsx(Button, {
263
+ customButtons.push(/*#__PURE__*/_jsx(Button, {
264
264
  size: "small",
265
265
  variant: "contained",
266
266
  color: "error",
@@ -271,7 +271,7 @@ function FederatedSiteList({
271
271
  children: t('federated.quitFederatedLogin')
272
272
  }, "quitFederatedLogin"));
273
273
  } else {
274
- customButtons.push( /*#__PURE__*/_jsx(Button, {
274
+ customButtons.push(/*#__PURE__*/_jsx(Button, {
275
275
  size: "small",
276
276
  variant: "contained",
277
277
  onClick: showInvite,
@@ -280,7 +280,7 @@ function FederatedSiteList({
280
280
  },
281
281
  children: t('federated.inviteJoinFederatedLogin')
282
282
  }, "inviteJoinFederatedLogin"));
283
- customButtons.push( /*#__PURE__*/_jsx(Button, {
283
+ customButtons.push(/*#__PURE__*/_jsx(Button, {
284
284
  color: "error",
285
285
  size: "small",
286
286
  variant: "contained",
@@ -123,7 +123,7 @@ function ConfigNavigation() {
123
123
  await saveNavigationList(navigationState.rawNavigation);
124
124
  Toast.success(t('common.succeeded'));
125
125
  } catch (e) {
126
- Toast.error( /*#__PURE__*/_jsxs(Box, {
126
+ Toast.error(/*#__PURE__*/_jsxs(Box, {
127
127
  children: [/*#__PURE__*/_jsx(Typography, {
128
128
  variant: "subtitle2",
129
129
  children: t('navigation.actionFailed')
@@ -144,7 +144,7 @@ function ConfigNavigation() {
144
144
  variant: 'success'
145
145
  });
146
146
  } catch (e) {
147
- Toast.error( /*#__PURE__*/_jsxs(Box, {
147
+ Toast.error(/*#__PURE__*/_jsxs(Box, {
148
148
  children: [/*#__PURE__*/_jsx(Typography, {
149
149
  variant: "subtitle2",
150
150
  children: t('navigation.actionFailed')
@@ -225,7 +225,7 @@ function Header({
225
225
  type: releaseType
226
226
  }
227
227
  });
228
- Toast.success( /*#__PURE__*/_jsx(UploadedToast, {
228
+ Toast.success(/*#__PURE__*/_jsx(UploadedToast, {
229
229
  storeName: store.storeName,
230
230
  storeUrl: store.storeUrl,
231
231
  developerDid: store.developerDid,
package/lib/locales/ar.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'تحديث مفتاح سر تطبيق',
489
489
  sharedToAllComponents: 'سيتم مشاركته مع جميع المكونات',
490
490
  session: {
491
- ttl: 'فترة صلاحية جلسة تسجيل الدخول (سيُطلب من المستخدم تسجيل الدخول مرة أخرى إذا لم يكن لديه نشاط على هذا الموقع لمدة {day} أيام)',
491
+ ttl: 'سيُطلب من المستخدم تسجيل الدخول مرة أخرى إذا لم يكن لديهم أي نشاط على هذا الموقع لمدة {day} يومًا.',
492
492
  day: '{day} يوم',
493
- days: '{day} أيام'
493
+ days: '{day} أيام',
494
+ period: 'فترة صلاحية الجلسة',
495
+ profile: 'متطلبات ملف تعريف المستخدم',
496
+ cacheTtl: 'مدة ذاكرة التخزين المؤقت لبيانات جلسة المستخدم (بالثواني)',
497
+ fullNameEnabled: 'طلب اسم المستخدم عند تسجيل الدخول (ممكّن بشكل افتراضي)',
498
+ avatarEnabled: 'اطلب صورة المستخدم عند تسجيل الدخول (مفعل افتراضيًا)',
499
+ emailEnabled: 'طلب بريد المستخدم عند تسجيل الدخول',
500
+ emailRequireVerified: 'يجب التحقق من بريد المستخدم الإلكتروني قبل تسجيل الدخول',
501
+ emailRequireUnique: 'طلب بريد المستخدم ليكون فريدًا عبر جميع المستخدمين',
502
+ phoneEnabled: 'طلب رقم هاتف المستخدم عند تسجيل الدخول (غير مدعوم بعد)',
503
+ phoneRequireVerified: 'يجب التحقق من رقم هاتف المستخدم قبل تسجيل الدخول',
504
+ phoneRequireUnique: 'تتطلب رقم هاتف المستخدم أن يكون فريدًا عبر جميع المستخدمين',
505
+ emailTrustOauthProviders: 'ثق بمزودي OAuth لحالة التحقق من البريد الإلكتروني'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'إدارة التخزين المؤقت',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'يعمل الحاوية على blocklet',
906
918
  switchTips: 'بعد تمكين هذا الخيار، سيتم تشغيل البلوكلتس باستخدام حاويات، مما يمكن أن يحسن الأمان العام للخادم.',
907
919
  notInstalled: 'تعذر تنشيط تشغيل الحاوية لأن Docker غير مثبت أو يفتقر إلى الصلاحيات اللازمة للتنفيذ',
908
- needCloseFileSystemIsolation: 'لا يمكن تمكين عزل نظام الملفات وتشغيل الحاوية في نفس الوقت'
920
+ needCloseFileSystemIsolation: 'لا يمكن تمكين عزل نظام الملفات ووضع تشغيل حاوية Docker في نفس الوقت'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/de.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Aktualisiere Anwendungsgeheimnis',
489
489
  sharedToAllComponents: 'Wird an alle Komponenten geteilt werden',
490
490
  session: {
491
- ttl: 'Gültigkeitsdauer der Anmeldesitzung (Der Benutzer wird gebeten, sich erneut anzumelden, wenn keine Aktivität auf dieser Seite für {day} Tage festgestellt wird)',
491
+ ttl: 'Der Benutzer wird aufgefordert, sich erneut anzumelden, wenn er {day} Tage lang keine Aktivität auf dieser Website hat.',
492
492
  day: '{day} Tag',
493
- days: '{day} Tage'
493
+ days: '{day} Tage',
494
+ period: 'Sitzung Gültigkeitsdauer',
495
+ profile: 'Benutzerprofilanforderungen',
496
+ cacheTtl: 'Cache-Dauer für Benutzersitzungsdaten (in Sekunden)',
497
+ fullNameEnabled: 'Benutzernamen bei der Anmeldung anfordern (standardmäßig aktiviert)',
498
+ avatarEnabled: 'Benutzerfoto beim Anmelden anfordern (standardmäßig aktiviert)',
499
+ emailEnabled: 'Benutzer-E-Mail bei Anmeldung anfordern',
500
+ emailRequireVerified: 'Benutzer-E-Mail muss vor dem Login verifiziert werden',
501
+ emailRequireUnique: 'Benötigen Sie die E-Mail des Benutzers, um eindeutig über alle Benutzer hinweg zu sein',
502
+ phoneEnabled: 'Benutzer-Telefonnummer bei der Anmeldung anfordern (noch nicht unterstützt)',
503
+ phoneRequireVerified: 'Benutzerhandynummer muss vor der Anmeldung überprüft werden',
504
+ phoneRequireUnique: 'Benötigen Sie eine eindeutige Telefonnummer für Benutzer in der gesamten Benutzerbasis',
505
+ emailTrustOauthProviders: 'Vertraue OAuth-Anbietern für den E-Mail-Verifizierungsstatus'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Cache-Verwaltung',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'Container führt Blocklet aus',
906
918
  switchTips: 'Nachdem Sie diese Option aktiviert haben, werden die Blocklets unter Verwendung von Containern ausgeführt, was die Gesamtsicherheit des Servers verbessern kann.',
907
919
  notInstalled: 'Containerausführung kann nicht aktiviert werden, da Docker nicht installiert ist oder über die erforderlichen Berechtigungen zur Ausführung verfügt',
908
- needCloseFileSystemIsolation: 'Dateisystemisolierung und Container-Runtime können nicht gleichzeitig aktiviert werden'
920
+ needCloseFileSystemIsolation: 'Dateisystemisolierung und Docker-Container-Modus-Laufzeit können nicht gleichzeitig aktiviert werden'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/en.js CHANGED
@@ -496,9 +496,21 @@ export default {
496
496
  appSkTitle: 'Update Application Secret Key',
497
497
  sharedToAllComponents: 'Will be shared to all components',
498
498
  session: {
499
- ttl: 'Login session validity period (user will be asked to login again if they have no activity on this site for {day} days)',
499
+ period: 'Session validity period',
500
+ profile: 'User profile requirements',
501
+ ttl: 'User will be asked to login again if they have no activity on this site for {day} days',
500
502
  day: '{day} day',
501
- days: '{day} days'
503
+ days: '{day} days',
504
+ cacheTtl: 'Cache duration for user session data (in seconds)',
505
+ fullNameEnabled: 'Request user name on login (enabled by default)',
506
+ avatarEnabled: 'Request user avatar on login (enabled by default)',
507
+ emailEnabled: 'Request user email on login',
508
+ emailRequireVerified: 'Require user email to be verified before login',
509
+ emailRequireUnique: 'Require user email to be unique across all users',
510
+ phoneEnabled: 'Request user phone number on login (not supported yet)',
511
+ phoneRequireVerified: 'Require user phone number to be verified before login',
512
+ phoneRequireUnique: 'Require user phone number to be unique across all users',
513
+ emailTrustOauthProviders: 'Trust OAuth providers for email verification status'
502
514
  },
503
515
  clearCache: {
504
516
  name: 'Cache Management',
package/lib/locales/es.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Actualizar Clave Secreta de la Aplicación',
489
489
  sharedToAllComponents: 'Se compartirá con todos los componentes',
490
490
  session: {
491
- ttl: 'Período de validez de la sesión de inicio de sesión (se le pedirá al usuario que inicie sesión nuevamente si no hay actividad en este sitio durante {day} días)',
491
+ ttl: 'Se pedirá al usuario que vuelva a iniciar sesión si no tiene actividad en este sitio durante {day} días',
492
492
  day: '{day} día',
493
- days: '{day} días'
493
+ days: '{day} días',
494
+ period: 'Periodo de validez de sesión',
495
+ profile: 'Requisitos del perfil de usuario',
496
+ cacheTtl: 'Duración de caché para datos de sesión de usuario (en segundos)',
497
+ fullNameEnabled: 'Solicitar nombre de usuario al iniciar sesión (habilitado de forma predeterminada)',
498
+ avatarEnabled: 'Solicitar avatar de usuario al iniciar sesión (habilitado por defecto)',
499
+ emailEnabled: 'Solicitar correo electrónico del usuario al iniciar sesión',
500
+ emailRequireVerified: 'Requiere que el correo electrónico del usuario sea verificado antes de iniciar sesión',
501
+ emailRequireUnique: 'Requerir que el correo electrónico del usuario sea único en todos los usuarios',
502
+ phoneEnabled: 'Solicitar número de teléfono del usuario al iniciar sesión (aún no compatible)',
503
+ phoneRequireVerified: 'Requerir verificación del número de teléfono del usuario antes de iniciar sesión',
504
+ phoneRequireUnique: 'Requerir que el número de teléfono del usuario sea único entre todos los usuarios',
505
+ emailTrustOauthProviders: 'Confíe en los proveedores de OAuth para verificar el estado del correo electrónico'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Gestión de la Caché',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'El contenedor ejecuta el Bloquelete',
906
918
  switchTips: 'Después de habilitar esta opción, los blocklets se ejecutarán utilizando contenedores, lo que puede mejorar la seguridad general del servidor.',
907
919
  notInstalled: 'No se puede activar el contenedor de ejecución porque Docker no está instalado o no tiene los permisos necesarios para ejecutar',
908
- needCloseFileSystemIsolation: 'El aislamiento del sistema de archivos y la ejecución de contenedores no se pueden habilitar al mismo tiempo'
920
+ needCloseFileSystemIsolation: 'El aislamiento del sistema de archivos y el modo de contenedor Docker no se pueden habilitar al mismo tiempo'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/fr.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: "Mettre à jour la clé secrète de l'application",
489
489
  sharedToAllComponents: 'Sera partagé à tous les composants',
490
490
  session: {
491
- ttl: "Durée de validité de la session de connexion (l'utilisateur devra se connecter à nouveau s'il n'a aucune activité sur ce site pendant {day} jours)",
491
+ ttl: "L'utilisateur sera invité à se connecter à nouveau s'ils n'ont aucune activité sur ce site pendant {day} jours.",
492
492
  day: '{day} jour',
493
- days: '{day} jours'
493
+ days: '{day} jours',
494
+ period: 'Durée de validité de la session',
495
+ profile: 'Exigences du profil utilisateur',
496
+ cacheTtl: 'Durée du cache pour les données de session utilisateur (en secondes)',
497
+ fullNameEnabled: "Demander le nom d'utilisateur à la connexion (activé par défaut)",
498
+ avatarEnabled: "Demander l'avatar de l'utilisateur à la connexion (activé par défaut)",
499
+ emailEnabled: "Demander l'e-mail de l'utilisateur lors de la connexion",
500
+ emailRequireVerified: "Exiger la vérification de l'e-mail de l'utilisateur avant la connexion",
501
+ emailRequireUnique: "Exiger que l'e-mail de l'utilisateur soit unique pour tous les utilisateurs",
502
+ phoneEnabled: "Demander le numéro de téléphone de l'utilisateur lors de la connexion (non pris en charge pour le moment)",
503
+ phoneRequireVerified: "Le numéro de téléphone de l'utilisateur doit être vérifié avant de se connecter",
504
+ phoneRequireUnique: "Exiger un numéro de téléphone unique pour l'ensemble des utilisateurs",
505
+ emailTrustOauthProviders: "Faites confiance aux fournisseurs OAuth pour le statut de vérification de l'email"
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Gestion du cache',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'Le conteneur exécute le blocklet',
906
918
  switchTips: "Après avoir activé cette option, les blocs seront exécutés à l'aide de conteneurs, ce qui peut améliorer la sécurité globale du serveur.",
907
919
  notInstalled: "Impossible d'activer l'exécution du conteneur car Docker n'est pas installé ou manque des autorisations nécessaires pour s'exécuter",
908
- needCloseFileSystemIsolation: "L'isolation du système de fichiers et le runtime du conteneur ne peuvent pas être activés en même temps"
920
+ needCloseFileSystemIsolation: "L'isolation du système de fichiers et le mode d'exécution du conteneur docker ne peuvent pas être activés en même temps"
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/hi.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'अनुप्रयोग सीक्रेट कुंजी को अद्यतित करें',
489
489
  sharedToAllComponents: 'सभी कॉम्पोनेंट्स के साथ साझा किया जाएगा',
490
490
  session: {
491
- ttl: 'लॉगिन सत्यापन सत्र की मान्यता अवधि (यदि उपयोगकर्ता {day} दिनों तक इस साइट पर कोई गतिविधि नहीं होती है तो उनसे फिर से लॉगिन करने के लिए कहा जाएगा)',
491
+ ttl: 'उपयोगकर्ता से पुनः लॉगिन करने के लिए कहा जाएगा अगर उनके पास इस साइट पर {day} दिनों तक कोई गतिविधि नहीं है।',
492
492
  day: '{day} दिन',
493
- days: '{day} दिन'
493
+ days: '{day} दिन',
494
+ period: 'सत्र मान्यता अवधि',
495
+ profile: 'उपयोगकर्ता प्रोफ़ाइल आवश्यकताएँ',
496
+ cacheTtl: 'उपयोगकर्ता सत्र डेटा के लिए कैश समयावधि (सेकंड में)',
497
+ fullNameEnabled: 'लॉगिन पर उपयोगकर्ता का नाम अनुरोध करें (डिफ़ॉल्ट तरीके से सक्षम)',
498
+ avatarEnabled: 'लॉगिन पर उपयोगकर्ता अवतार का अनुरोध करें (डिफ़ॉल्ट रूप से सक्षम)',
499
+ emailEnabled: 'लॉगिन पर उपयोगकर्ता ईमेल का अनुरोध करें',
500
+ emailRequireVerified: 'लॉगिन से पहले उपयोगकर्ता ईमेल को सत्यापित करना आवश्यक है',
501
+ emailRequireUnique: 'सभी उपयोगकर्ताओं के बीच उपयोगकर्ता ईमेल को अद्वितीय होने की आवश्यकता होती है',
502
+ phoneEnabled: 'लॉगिन पर उपयोगकर्ता का फोन नंबर अनुरोध करें (अभी तक समर्थित नहीं है)',
503
+ phoneRequireVerified: 'लॉगिन से पहले उपयोगकर्ता का फ़ोन नंबर सत्यापित करना आवश्यक है',
504
+ phoneRequireUnique: 'सभी उपयोगकर्ताओं के लिए उपयोगकर्ता फ़ोन नंबर को अद्वितीय बनाना आवश्यक है',
505
+ emailTrustOauthProviders: 'ईमेल सत्यापन स्थिति के लिए OAuth प्रदाताओं पर भरोसा करें'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'कैश प्रबंधन',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'कंटेनर ब्लॉकलेट चलाता है',
906
918
  switchTips: 'इस विकल्प को सक्रिय करने के बाद, ब्लॉकलेट कंटेनर का उपयोग करके चलाए जाएंगे, जो सर्वर की कुल सुरक्षा को बेहतर बना सकता है।',
907
919
  notInstalled: 'कॉन्टेनर रन को सक्रिय नहीं कर सकता क्योंकि डॉकर स्थापित नहीं है या आवश्यक अनुमतियों की कमी है',
908
- needCloseFileSystemIsolation: 'फ़ाइल सिस्टम आइसोलेशन और कंटेनर रनटाइम को एक साथ सक्षम नहीं किया जा सकता'
920
+ needCloseFileSystemIsolation: 'फाइल सिस्टम विभाजन और डॉकर कंटेनर मोड रनटाइम को एक साथ सक्रिय नहीं किया जा सकता'
909
921
  }
910
922
  },
911
923
  accessKey: {
Binary file
package/lib/locales/id.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Perbarui Kunci Rahasia Aplikasi',
489
489
  sharedToAllComponents: 'Akan dibagikan ke semua komponen',
490
490
  session: {
491
- ttl: 'Periode validitas sesi login (pengguna akan diminta untuk login kembali jika tidak ada aktivitas di situs ini selama {day} hari)',
491
+ ttl: 'Pengguna akan diminta untuk login lagi jika tidak ada aktivitas di situs ini selama {hari} hari',
492
492
  day: '{day} hari',
493
- days: '{day} hari'
493
+ days: '{day} hari',
494
+ period: 'Periode validitas sesi',
495
+ profile: 'Persyaratan profil pengguna',
496
+ cacheTtl: 'Durasi cache untuk data sesi pengguna (dalam detik)',
497
+ fullNameEnabled: 'Meminta nama pengguna saat login (diaktifkan secara default)',
498
+ avatarEnabled: 'Minta avatar pengguna saat login (diaktifkan secara default)',
499
+ emailEnabled: 'Meminta email pengguna saat login',
500
+ emailRequireVerified: 'Memerlukan email pengguna untuk diverifikasi sebelum login',
501
+ emailRequireUnique: 'Memerlukan email pengguna untuk menjadi unik di antara semua pengguna',
502
+ phoneEnabled: 'Meminta nomor telepon pengguna saat login (belum didukung)',
503
+ phoneRequireVerified: 'Memerlukan nomor telepon pengguna untuk diverifikasi sebelum login',
504
+ phoneRequireUnique: 'Haruslah nomor telepon pengguna unik di antara semua pengguna',
505
+ emailTrustOauthProviders: 'Percayai penyedia OAuth untuk status verifikasi email'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Manajemen Cache',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'Container menjalankan blocklet',
906
918
  switchTips: 'Setelah mengaktifkan opsi ini, blocklets akan dijalankan menggunakan kontainer, yang dapat meningkatkan keamanan keseluruhan server.',
907
919
  notInstalled: 'Tidak dapat mengaktifkan jalankan kontainer karena Docker tidak terinstal atau tidak memiliki izin yang diperlukan untuk mengeksekusi.',
908
- needCloseFileSystemIsolation: 'Isolasi sistem file dan runtime kontainer tidak dapat diaktifkan secara bersamaan'
920
+ needCloseFileSystemIsolation: 'Isolasi sistem file dan mode kontainer docker tidak dapat diaktifkan secara bersamaan'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/ja.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'アプリケーションシークレットキーの更新',
489
489
  sharedToAllComponents: 'すべてのコンポーネントで共有されます',
490
490
  session: {
491
- ttl: 'ログインセッションの有効期限(このサイトで {day} 日間アクティビティがない場合、ユーザーに再ログインを求めます)',
491
+ ttl: 'ユーザーがこのサイトで {day} 日間活動がない場合、再ログインを求められます',
492
492
  day: '{day}日',
493
- days: '{day} 日間'
493
+ days: '{day} 日間',
494
+ period: 'セッション有効期間',
495
+ profile: 'ユーザープロフィール要件',
496
+ cacheTtl: 'ユーザーセッションデータのキャッシュ期間(秒単位)',
497
+ fullNameEnabled: 'ログイン時にユーザー名をリクエストする(デフォルトで有効)',
498
+ avatarEnabled: 'ログイン時にユーザーのアバターを要求します(デフォルトで有効)',
499
+ emailEnabled: 'ログイン時にユーザーの電子メールをリクエストする',
500
+ emailRequireVerified: 'ログイン前にユーザーの電子メールを確認する必要があります',
501
+ emailRequireUnique: 'すべてのユーザー全体でユーザーの電子メールが一意であることを要求する',
502
+ phoneEnabled: 'ログイン時にユーザーの電話番号をリクエストする(まだサポートされていません)',
503
+ phoneRequireVerified: 'ログイン前にユーザーの電話番号を確認する必要があります',
504
+ phoneRequireUnique: 'すべてのユーザー全体でユーザーの電話番号が一意であることを要求する',
505
+ emailTrustOauthProviders: 'メール確認ステータスのOAuthプロバイダーを信頼する'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'キャッシュ管理',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'コンテナがブロックレットを実行します',
906
918
  switchTips: 'このオプションを有効にすると、ブロックレットがコンテナを使用して実行されるため、サーバーの全体的なセキュリティが向上します。',
907
919
  notInstalled: 'Dockerがインストールされていないか、必要な権限がないため、コンテナランをアクティブ化できません',
908
- needCloseFileSystemIsolation: 'ファイルシステムの分離とコンテナランタイムを同時に有効にすることはできません'
920
+ needCloseFileSystemIsolation: 'ファイルシステムの分離とDockerコンテナモードの実行は同時に有効にすることはできません'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/ko.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: '애플리케이션 시크릿 키 업데이트',
489
489
  sharedToAllComponents: '모든 구성 요소와 공유될 예정입니다',
490
490
  session: {
491
- ttl: '로그인 세션 유효 기간 (사용자가이 사이트에서 {day} 일 동안 활동이 없는 경우 다시 로그인하도록 요청됩니다)',
491
+ ttl: '{day} 일 동안 이 사이트에서 활동이 없는 경우 사용자에게 다시 로그인하라는 안내가 표시됩니다',
492
492
  day: '{day}일',
493
- days: '{day} 일'
493
+ days: '{day} 일',
494
+ period: '세션 유효 기간',
495
+ profile: '사용자 프로필 요구 사항',
496
+ cacheTtl: '사용자 세션 데이터의 캐시 기간 (초 단위)',
497
+ fullNameEnabled: '로그인 시 사용자 이름 요청 (기본 설정으로 활성화)',
498
+ avatarEnabled: '로그인시 사용자 아바타 요청 (기본으로 활성화)',
499
+ emailEnabled: '로그인시 사용자 이메일 요청',
500
+ emailRequireVerified: '사용자 이메일이 로그인하기 전에 확인되어야 함',
501
+ emailRequireUnique: '모든 사용자 전체에서 사용자 이메일이 고유해야 함',
502
+ phoneEnabled: '로그인시 사용자 전화번호 요청 (아직 지원되지 않음)',
503
+ phoneRequireVerified: '로그인 전에 사용자 전화번호를 확인해야 합니다',
504
+ phoneRequireUnique: '모든 사용자를 통틀어 사용자 전화번호가 고유해야 함',
505
+ emailTrustOauthProviders: '이메일 확인 상태를 위한 OAuth 제공 업체 신뢰'
494
506
  },
495
507
  clearCache: {
496
508
  name: '캐시 관리',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: '컨테이너가 블록릿을 실행합니다',
906
918
  switchTips: '이 옵션을 활성화 한 후에는 블록이 컨테이너를 사용하여 실행되어 서버의 전반적인 보안이 향상될 수 있습니다.',
907
919
  notInstalled: '도커가 설치되어 있지 않거나 실행에 필요한 권한이 부족하여 컨테이너 실행을 활성화할 수 없습니다',
908
- needCloseFileSystemIsolation: '파일 시스템 분리 및 컨테이너 런타임을 동시에 활성화할 수 없습니다'
920
+ needCloseFileSystemIsolation: '파일 시스템 격리도커 컨테이너 모드런타임은 동시에 활성화될 수 없습니다'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/pt.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Atualizar Chave Secreta do Aplicativo',
489
489
  sharedToAllComponents: 'Será compartilhado com todos os componentes',
490
490
  session: {
491
- ttl: 'Período de validade da sessão de login (o usuário será solicitado a fazer login novamente se não tiver atividade neste site por {day} dias)',
491
+ ttl: 'O usuário será solicitado a fazer login novamente se não tiver atividade neste site por {dia} dias',
492
492
  day: '{day} dia',
493
- days: '{day} dias'
493
+ days: '{day} dias',
494
+ period: 'Período de validade da sessão',
495
+ profile: 'Requisitos do perfil do usuário',
496
+ cacheTtl: 'Duração do cache para dados da sessão do usuário (em segundos)',
497
+ fullNameEnabled: 'Solicitar nome do usuário ao fazer o login (ativado por padrão)',
498
+ avatarEnabled: 'Solicitar avatar do usuário no login (ativado por padrão)',
499
+ emailEnabled: 'Solicitar e-mail do usuário no login',
500
+ emailRequireVerified: 'Exigir que o email do usuário seja verificado antes do login',
501
+ emailRequireUnique: 'Exigir que o e-mail do usuário seja único entre todos os usuários',
502
+ phoneEnabled: 'Solicitar número de telefone do usuário no login (ainda não suportado)',
503
+ phoneRequireVerified: 'Exigir que o número de telefone do usuário seja verificado antes de fazer login',
504
+ phoneRequireUnique: 'O número de telefone do usuário deve ser exclusivo entre todos os usuários',
505
+ emailTrustOauthProviders: 'Confie nos provedores OAuth para o status de verificação de email'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Gerenciamento de Cache',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'O contêiner executa o blocklet',
906
918
  switchTips: 'Após ativar esta opção, os blocklets serão executados usando contêineres, o que pode melhorar a segurança geral do servidor.',
907
919
  notInstalled: 'Não é possível ativar a execução do contêiner porque o Docker não está instalado ou não possui as permissões necessárias para executar.',
908
- needCloseFileSystemIsolation: 'Isolamento de sistema de arquivos e tempo de execução do contêiner não podem ser ativados ao mesmo tempo'
920
+ needCloseFileSystemIsolation: 'O isolamento do sistema de arquivos e o modo de contêiner docker não podem ser ativados ao mesmo tempo'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/ru.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Обновить секретный ключ приложения',
489
489
  sharedToAllComponents: 'Будет разделено на все компоненты',
490
490
  session: {
491
- ttl: 'Срок действия сеанса входа (пользователю будет предложено войти снова, если он неактивен на этом сайте в течение {day} дней)',
491
+ ttl: 'Пользователя попросят войти в систему еще раз, если на этом сайте у них не было активности в течение {day} дней.',
492
492
  day: '{day} день',
493
- days: '{day} дней'
493
+ days: '{day} дней',
494
+ period: 'Срок действия сессии',
495
+ profile: 'Требования к профилю пользователя',
496
+ cacheTtl: 'Время кэширования для данных сеанса пользователя (в секундах)',
497
+ fullNameEnabled: 'Запросить имя пользователя при входе (включено по умолчанию)',
498
+ avatarEnabled: 'Запросить аватар пользователя при входе (включено по умолчанию)',
499
+ emailEnabled: 'Запросить адрес электронной почты пользователя при входе',
500
+ emailRequireVerified: 'Требовать подтверждения электронной почты пользователя перед входом',
501
+ emailRequireUnique: 'Требуется сделать адрес электронной почты пользователя уникальным по всем пользователям',
502
+ phoneEnabled: 'Запросить номер телефона пользователя при входе (пока не поддерживается)',
503
+ phoneRequireVerified: 'Требуется подтверждение номера телефона пользователя перед входом',
504
+ phoneRequireUnique: 'Требуется, чтобы номер телефона пользователя был уникальным для всех пользователей',
505
+ emailTrustOauthProviders: 'Доверьте поставщикам OAuth статус проверки электронной почты'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Управление кэшем',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'Контейнер запускает блоклет',
906
918
  switchTips: 'После включения этой опции, блоклеты будут запускаться с использованием контейнеров, что может улучшить общую безопасность сервера.',
907
919
  notInstalled: 'Невозможно активировать запуск контейнера, потому что Docker не установлен или не имеет необходимых разрешений для выполнения',
908
- needCloseFileSystemIsolation: 'Изоляция файловой системы и контейнерное исполнение не могут быть включены одновременно'
920
+ needCloseFileSystemIsolation: 'Изоляция файловой системы и режим выполнения контейнера docker не могут быть включены одновременно'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/th.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'อัปเดตคีย์ลับแอปพลิเคชัน',
489
489
  sharedToAllComponents: 'จะถูกแบ่งปันให้กับองค์ประกอบทั้งหมด',
490
490
  session: {
491
- ttl: 'ระยะเวลาใช้งานของเซสชั่นล็อกอิน (ผู้ใช้จะถูกต้องให้เข้าสู่ระบบอีกครั้งหากไม่มีกิจกรรมในเว็บไซต์นี้เป็นเวลา {day} วัน)',
491
+ ttl: 'ผู้ใช้จะถูกขอให้เข้าสู่ระบบอีกครั้งหากไม่มีกิจกรรมบนเว็บไซต์นี้เป็นเวลา {วัน} วัน',
492
492
  day: '{day} วัน',
493
- days: '{day} วัน'
493
+ days: '{day} วัน',
494
+ period: 'ระยะเวลาความถูกต้องของเซสชัน',
495
+ profile: 'ความต้องการของโปรไฟล์ผู้ใข้',
496
+ cacheTtl: 'ระยะเวลาแคชสำหรับข้อมูลเซสชันของผู้ใช้ (เป็นวินาที)',
497
+ fullNameEnabled: 'ขอชื่อผู้ใช้เมื่อเข้าสู่ระบบ (เปิดใช้งานตามค่าเริ่มต้น)',
498
+ avatarEnabled: 'ขออวาตาร์ผู้ใช้เมื่อเข้าสู่ระบบ (เปิดใช้งานโดยค่าเริ่มต้น)',
499
+ emailEnabled: 'ขออีเมลของผู้ใช้เมื่อเข้าสู่ระบบ',
500
+ emailRequireVerified: 'ต้องการให้ที่อยู่อีเมลของผู้ใช้ได้รับการตรวจสอบก่อนการเข้าสู่ระบบ',
501
+ emailRequireUnique: 'ต้องการให้อีเมลผู้ใช้เป็นที่แตกต่างกันในทุกผู้ใช้',
502
+ phoneEnabled: 'ขอหมายเลขโทรศัพท์ผู้ใช้เมื่อเข้าสู่ระบบ (ยังไม่รองรับ)',
503
+ phoneRequireVerified: 'ต้องการให้หมายเลขโทรศัพท์ของผู้ใช้ได้รับการยืนยันก่อนการเข้าสู่ระบบ',
504
+ phoneRequireUnique: 'ต้องการหมายเลขโทรศัพท์ของผู้ใช้เพื่อเป็นเอกลักษณ์ในทุกผู้ใช้',
505
+ emailTrustOauthProviders: '信任 OAuth ในสถานะการตรวจสอบอีเมล'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'การจัดการแคช',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'คอนเทนเนอร์ทำงานบล็อกเลต',
906
918
  switchTips: 'หลังจากเปิดใช้งานตัวเลือกนี้ blocklets จะทำงานโดยใช้คอนเทนเนอร์ซึ่งสามารถเพิ่มความปลอดภัยของเซิร์ฟเวอร์โดยรวม',
907
919
  notInstalled: 'ไม่สามารถเปิดใช้งานคอนเทนเนอร์เนื่องจาก Docker ไม่ได้ติดตั้งหรือขาดสิทธิ์ที่จำเป็นในการดำเนินการ',
908
- needCloseFileSystemIsolation: 'การแยกระบบไฟล์และรันไทม์คอนเทนเนอร์ไม่สามารถเปิดใช้งานพร้อมกัน'
920
+ needCloseFileSystemIsolation: 'การแยกระบบไฟล์และโหมดคอนเทนเนอร์ด็อกเกอร์ไม่สามารถเปิดใช้งานได้พร้อมกัน'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/vi.js CHANGED
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: 'Cập nhật Khoá Bí Mật Ứng Dụng',
489
489
  sharedToAllComponents: 'Sẽ được chia sẻ cho tất cả các thành phần',
490
490
  session: {
491
- ttl: 'Thời gian hiệu lực phiên đăng nhập (người dùng sẽ được yêu cầu đăng nhập lại nếu không hoạt động trên trang web này trong {day} ngày)',
491
+ ttl: 'Người dùng sẽ được yêu cầu đăng nhập lại nếu không hoạt động trên trang web này trong {ngày} ngày',
492
492
  day: '{day} ngày',
493
- days: '{day} ngày'
493
+ days: '{day} ngày',
494
+ period: 'Thời gian hiệu lực phiên',
495
+ profile: 'Yêu cầu hồ sơ người dùng',
496
+ cacheTtl: 'Thời gian lưu trữ cache cho dữ liệu phiên người dùng (theo giây)',
497
+ fullNameEnabled: 'Yêu cầu tên người dùng khi đăng nhập (được bật mặc định)',
498
+ avatarEnabled: 'Yêu cầu avatar người dùng khi đăng nhập (được kích hoạt mặc định)',
499
+ emailEnabled: 'Yêu cầu email người dùng khi đăng nhập',
500
+ emailRequireVerified: 'Yêu cầu xác minh email người dùng trước khi đăng nhập',
501
+ emailRequireUnique: 'Yêu cầu email người dùng là duy nhất trong tất cả người dùng',
502
+ phoneEnabled: 'Yêu cầu số điện thoại người dùng khi đăng nhập (chưa được hỗ trợ)',
503
+ phoneRequireVerified: 'Yêu cầu xác minh số điện thoại người dùng trước khi đăng nhập',
504
+ phoneRequireUnique: 'Yêu cầu số điện thoại người dùng phải duy nhất trong tất cả người dùng',
505
+ emailTrustOauthProviders: 'Tin tưởng các nhà cung cấp OAuth để kiểm tra trạng thái xác minh email'
494
506
  },
495
507
  clearCache: {
496
508
  name: 'Quản lý Cache',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: 'Container chạy blocklet',
906
918
  switchTips: 'Sau khi kích hoạt tùy chọn này, các blocklet sẽ chạy bằng cách sử dụng container, có thể cải thiện bảo mật tổng thể của máy chủ.',
907
919
  notInstalled: 'Không thể kích hoạt chạy container vì Docker chưa được cài đặt hoặc thiếu quyền cần thiết để thực thi.',
908
- needCloseFileSystemIsolation: 'Cách ly hệ thống tập tin thời gian chạy của container không thể được kích hoạt cùng một lúc'
920
+ needCloseFileSystemIsolation: 'Cách ly hệ thống tệpchế độ thùng chứa docker không thể được kích hoạt cùng một lúc'
909
921
  }
910
922
  },
911
923
  accessKey: {
@@ -488,9 +488,21 @@ export default {
488
488
  appSkTitle: '更新應用程式秘鑰',
489
489
  sharedToAllComponents: '將分享給所有組件',
490
490
  session: {
491
- ttl: '登錄會話有效期(如果使用者在此站點上 {day} 天無任何活動,將再次要求登入)',
491
+ ttl: '如果使用者在此網站上沒有任何活動 {day} 天,將被要求重新登錄',
492
492
  day: '{day}天',
493
- days: '{day} 天'
493
+ days: '{day} 天',
494
+ period: '會話有效期',
495
+ profile: '使用者個人檔案需求',
496
+ cacheTtl: '用戶會話數據的快取持續時間(以秒為單位)',
497
+ fullNameEnabled: '登錄時請求使用者名稱(預設啟用)',
498
+ avatarEnabled: '登錄時請求使用者頭像(默認啟用)',
499
+ emailEnabled: '在登錄時請求使用者電子郵件',
500
+ emailRequireVerified: '要求使用者在登入前驗證電子郵件',
501
+ emailRequireUnique: '要求使用者電子郵件在所有使用者中是唯一的',
502
+ phoneEnabled: '在登錄時請求使用者電話號碼(目前不支援)',
503
+ phoneRequireVerified: '在登錄前要求用戶驗證電話號碼',
504
+ phoneRequireUnique: '要求使用者電話號碼在所有用戶中是唯一的',
505
+ emailTrustOauthProviders: '信任OAuth提供商進行電子郵件驗證狀態'
494
506
  },
495
507
  clearCache: {
496
508
  name: '快取管理',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: '容器運行區塊',
906
918
  switchTips: '啟用此選項後,區塊將使用容器運行,可提高伺服器的整體安全性。',
907
919
  notInstalled: '無法啟用容器運行,因為未安裝Docker或缺少執行所需的權限',
908
- needCloseFileSystemIsolation: '檔案系統隔離和容器執行時不能同時啟用'
920
+ needCloseFileSystemIsolation: '檔案系統隔離和Docker容器模式運行時不能同時啟用'
909
921
  }
910
922
  },
911
923
  accessKey: {
package/lib/locales/zh.js CHANGED
@@ -489,9 +489,21 @@ export default {
489
489
  appSkTitle: '修改应用私钥',
490
490
  sharedToAllComponents: '将共享给所有组件',
491
491
  session: {
492
- ttl: '登录会话有效期(如果用户 {day} 天内在此站点没有任何活动,将被要求重新登录)',
492
+ ttl: '如果用户在此网站上没有任何活动 {day} 天,将被要求重新登录',
493
493
  day: '{day} 天',
494
- days: '{day} 天'
494
+ days: '{day} 天',
495
+ period: '会话有效期',
496
+ profile: '用户个人资料要求',
497
+ cacheTtl: '用户会话数据的缓存持续时间(以秒为单位)',
498
+ fullNameEnabled: '登录时请求用户名(默认启用)',
499
+ avatarEnabled: '登录时请求用户头像(默认启用)',
500
+ emailEnabled: '在登录时请求用户电子邮件',
501
+ emailRequireVerified: '要求用户在登录前验证电子邮件',
502
+ emailRequireUnique: '要求用户电子邮件在所有用户中是唯一的',
503
+ phoneEnabled: '在登录时请求用户电话号码(目前不支持)',
504
+ phoneRequireVerified: '在登录前要求用户验证电话号码',
505
+ phoneRequireUnique: '要求用户电话号码在所有用户中是唯一的',
506
+ emailTrustOauthProviders: '信任OAuth提供商进行电子邮件验证状态'
495
507
  },
496
508
  clearCache: {
497
509
  name: '缓存管理',
@@ -905,7 +917,7 @@ export default {
905
917
  switchLabel: '容器运行区块',
906
918
  switchTips: '启用此选项后,块将使用容器运行,可以提高服务器的整体安全性。',
907
919
  notInstalled: '无法激活容器运行,因为未安装Docker或缺少执行所需的权限',
908
- needCloseFileSystemIsolation: '文件系统隔离和容器运行时不能同时启用'
920
+ needCloseFileSystemIsolation: '文件系统隔离和Docker容器模式运行时不能同时启用'
909
921
  }
910
922
  },
911
923
  accessKey: {
@@ -24,16 +24,10 @@ import CardSelector from './card-selector';
24
24
  import DidAddress from './did-address';
25
25
  import wrapLocale from './wrap-locale';
26
26
  import usePassportId from './hooks/use-passport-id';
27
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
28
- const isFromWallet = () => {
29
- const {
30
- searchParams
31
- } = new URL(window.location.href);
32
- // NOTICE: 这个参数由钱包中拼接得来,用于判断是否来源于钱包客户端(可以走不同的处理逻辑)
33
- return searchParams.get('fromWallet') === '1';
34
- };
27
+ import { isFromWallet } from './util';
35
28
 
36
29
  // eslint-disable-next-line react/prop-types
30
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
37
31
  function ColorStepIcon({
38
32
  icon,
39
33
  active,
@@ -232,13 +226,19 @@ function LostPassport({
232
226
  list: pageState.user.passportTypes.map(x => {
233
227
  return {
234
228
  src: createPassportSvg({
235
- title: x.title,
229
+ scope: x.scope,
230
+ role: x.role,
231
+ title: x.scope === 'passport' ? x.title : x.name,
236
232
  issuer: x.issuer.name,
237
233
  issuerDid: x.issuer.id,
238
234
  ownerDid: pageState.user.did,
239
235
  ownerName: pageState.user.fullName,
240
236
  ownerAvatarUrl: pageState.user.avatar,
241
- preferredColor: passportColor || 'auto'
237
+ preferredColor: passportColor || 'auto',
238
+ extra: x.scope === 'kyc' ? {
239
+ key: 'Email',
240
+ value: x.name
241
+ } : undefined
242
242
  }),
243
243
  name: x.title,
244
244
  id: x.id
@@ -246,7 +246,7 @@ function LostPassport({
246
246
  }),
247
247
  onSelect: index => handleChangePassport({
248
248
  target: {
249
- value: pageState.user.passportTypes[index].name
249
+ value: pageState.user.passportTypes[index].id
250
250
  }
251
251
  }),
252
252
  defaultIndex: 0
@@ -268,7 +268,7 @@ function LostPassport({
268
268
  content: () => {
269
269
  const extraParams = {
270
270
  receiverDid: pageState.user.did,
271
- passportName: pageState.passport,
271
+ passportId: pageState.passport,
272
272
  teamDid: window?.blocklet?.did || ''
273
273
  };
274
274
  return /*#__PURE__*/_jsx(DidConnect, {
package/lib/store/item.js CHANGED
@@ -191,7 +191,7 @@ export default function StoreItem({
191
191
  type: releaseType
192
192
  }
193
193
  }).then(res => {
194
- Toast.success( /*#__PURE__*/_jsx(UploadedToast, {
194
+ Toast.success(/*#__PURE__*/_jsx(UploadedToast, {
195
195
  storeName: connectedStore.storeName,
196
196
  storeUrl: connectedStore.storeUrl,
197
197
  developerDid: connectedStore.developerDid,
@@ -457,7 +457,7 @@ export default function MemberList({
457
457
  }].filter(Boolean);
458
458
  const customButtons = [];
459
459
  if (isInvitationEnabled) {
460
- customButtons.push( /*#__PURE__*/_jsxs(Button, {
460
+ customButtons.push(/*#__PURE__*/_jsxs(Button, {
461
461
  variant: "outlined",
462
462
  style: {
463
463
  flexShrink: 0,
@@ -497,7 +497,7 @@ export default function MemberList({
497
497
  })
498
498
  }));
499
499
  if (type === 'server') {
500
- customButtons.push( /*#__PURE__*/_jsx(Permission, {
500
+ customButtons.push(/*#__PURE__*/_jsx(Permission, {
501
501
  role: "owner",
502
502
  children: /*#__PURE__*/_jsxs(Button, {
503
503
  style: {
@@ -9,6 +9,7 @@ import Box from '@mui/material/Box';
9
9
  import Avatar from '@mui/material/Avatar';
10
10
  import Tabs from '@arcblock/ux/lib/Tabs';
11
11
  import InfoRow from '@arcblock/ux/lib/InfoRow';
12
+ import VerifiedIcon from '@mui/icons-material/Verified';
12
13
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
13
14
  import ForbidLoginIcon from '@arcblock/icons/lib/ForbidLoginIcon';
14
15
  import AllowLoginIcon from '@arcblock/icons/lib/AllowLoginIcon';
@@ -30,7 +31,25 @@ import ToggleUserApproval from './toggle-user-approval';
30
31
  import { parseAvatar } from './util';
31
32
  import blockletSdk from '../../util/sdk';
32
33
  import UserConnections from './connections';
34
+
35
+ // eslint-disable-next-line react/prop-types
33
36
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
37
+ function VerifiedInfo({
38
+ info,
39
+ verified
40
+ }) {
41
+ return /*#__PURE__*/_jsxs(Box, {
42
+ display: "flex",
43
+ alignItems: "center",
44
+ children: [info, verified && /*#__PURE__*/_jsx(VerifiedIcon, {
45
+ color: "success",
46
+ style: {
47
+ fontSize: 16,
48
+ marginLeft: 4
49
+ }
50
+ })]
51
+ });
52
+ }
34
53
  function LinkUser({
35
54
  name,
36
55
  ...rest
@@ -148,10 +167,16 @@ export default function Member({
148
167
  value: pageState.user.fullName
149
168
  }, {
150
169
  name: t('common.email'),
151
- value: pageState.user.email || '-'
170
+ value: pageState.user.email ? /*#__PURE__*/_jsx(VerifiedInfo, {
171
+ info: pageState.user.email,
172
+ verified: pageState.user.emailVerified
173
+ }) : '-'
152
174
  }, {
153
175
  name: t('common.phone'),
154
- value: pageState.user.phone || '-'
176
+ value: pageState.user.phone ? /*#__PURE__*/_jsx(VerifiedInfo, {
177
+ info: pageState.user.phone,
178
+ verified: pageState.user.phoneVerified
179
+ }) : '-'
155
180
  }, {
156
181
  name: t('team.member.source'),
157
182
  value: /*#__PURE__*/_jsx(Box, {
@@ -28,7 +28,9 @@ export default function PassportItem({
28
28
  // eslint-disable-next-line react/no-danger
29
29
  dangerouslySetInnerHTML: {
30
30
  __html: createPassportSvg({
31
- title: passport.title || passport.name,
31
+ scope: passport.scope,
32
+ role: passport.role,
33
+ title: passport.scope === 'passport' ? passport.title : passport.name,
32
34
  issuer: passport.issuer && passport.issuer.name,
33
35
  issuerDid: passport.issuer && passport.issuer.id,
34
36
  ownerName: user.fullName,
@@ -36,7 +38,11 @@ export default function PassportItem({
36
38
  ownerAvatarUrl: user.avatar,
37
39
  revoked: passport.revoked,
38
40
  preferredColor: color,
39
- width
41
+ width,
42
+ extra: passport.scope === 'kyc' ? {
43
+ key: 'Email',
44
+ value: passport.name
45
+ } : undefined
40
46
  })
41
47
  }
42
48
  }), /*#__PURE__*/_jsxs("div", {
@@ -91,6 +91,8 @@ function PassportColor({
91
91
  },
92
92
  dangerouslySetInnerHTML: {
93
93
  __html: createPassportSvg({
94
+ scope: 'passport',
95
+ role: 'owner',
94
96
  title: 'Owner',
95
97
  issuer: getDisplayName(blocklet),
96
98
  issuerDid: blocklet.appDid,
package/lib/util/index.js CHANGED
@@ -676,4 +676,11 @@ export const getLogoHash = logo => encodeURIComponent((logo || '').split('/').sl
676
676
  const hasRequiredEnvironments = meta => (meta.environments || []).some(x => x.required);
677
677
  export const hasRequiredSteps = meta => {
678
678
  return !!meta.requirements?.fuels?.length || hasRequiredEnvironments(meta);
679
+ };
680
+ export const isFromWallet = () => {
681
+ const {
682
+ searchParams
683
+ } = new URL(window.location.href);
684
+ // NOTICE: 这个参数由钱包中拼接得来,用于判断是否来源于钱包客户端(可以走不同的处理逻辑)
685
+ return searchParams.get('fromWallet') === '1';
679
686
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.32-beta-4d47ae7f",
3
+ "version": "1.16.32-beta-17be26d7",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,25 +25,25 @@
25
25
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
26
26
  "license": "Apache-2.0",
27
27
  "dependencies": {
28
- "@abtnode/auth": "1.16.32-beta-4d47ae7f",
29
- "@abtnode/constant": "1.16.32-beta-4d47ae7f",
30
- "@abtnode/util": "1.16.32-beta-4d47ae7f",
28
+ "@abtnode/auth": "1.16.32-beta-17be26d7",
29
+ "@abtnode/constant": "1.16.32-beta-17be26d7",
30
+ "@abtnode/util": "1.16.32-beta-17be26d7",
31
31
  "@ahooksjs/use-url-state": "^3.5.1",
32
32
  "@arcblock/did": "^1.18.135",
33
- "@arcblock/did-connect": "^2.10.30",
33
+ "@arcblock/did-connect": "^2.10.33",
34
34
  "@arcblock/did-motif": "^1.1.13",
35
- "@arcblock/icons": "^2.10.30",
36
- "@arcblock/nft-display": "2.10.30",
37
- "@arcblock/react-hooks": "^2.10.30",
38
- "@arcblock/terminal": "^2.10.30",
39
- "@arcblock/ux": "^2.10.30",
40
- "@blocklet/constant": "1.16.32-beta-4d47ae7f",
41
- "@blocklet/js-sdk": "1.16.32-beta-4d47ae7f",
42
- "@blocklet/launcher-layout": "2.10.30",
43
- "@blocklet/list": "^0.13.23",
44
- "@blocklet/meta": "1.16.32-beta-4d47ae7f",
45
- "@blocklet/ui-react": "^2.10.30",
46
- "@blocklet/uploader": "0.1.31",
35
+ "@arcblock/icons": "^2.10.33",
36
+ "@arcblock/nft-display": "2.10.33",
37
+ "@arcblock/react-hooks": "^2.10.33",
38
+ "@arcblock/terminal": "^2.10.33",
39
+ "@arcblock/ux": "^2.10.33",
40
+ "@blocklet/constant": "1.16.32-beta-17be26d7",
41
+ "@blocklet/js-sdk": "1.16.32-beta-17be26d7",
42
+ "@blocklet/launcher-layout": "2.10.33",
43
+ "@blocklet/list": "^0.13.25",
44
+ "@blocklet/meta": "1.16.32-beta-17be26d7",
45
+ "@blocklet/ui-react": "^2.10.33",
46
+ "@blocklet/uploader": "0.1.34",
47
47
  "@emotion/react": "^11.10.4",
48
48
  "@emotion/styled": "^11.10.4",
49
49
  "@iconify-icons/logos": "^1.2.36",
@@ -108,5 +108,5 @@
108
108
  "jest": "^29.7.0",
109
109
  "jest-environment-jsdom": "^29.7.0"
110
110
  },
111
- "gitHead": "740b8032aa02e19b888bf6a257840089696613ef"
111
+ "gitHead": "9fa42d5a545aea6d57d2e1c51849fe227c8acb5e"
112
112
  }