@digitaldefiance/express-suite-react-components 2.9.11 → 2.9.13
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/package.json +3 -3
- package/src/components/ApiAccess.d.ts.map +1 -1
- package/src/components/ApiAccess.js +16 -9
- package/src/components/BackupCodeLoginForm.d.ts +2 -2
- package/src/components/BackupCodeLoginForm.d.ts.map +1 -1
- package/src/components/BackupCodeLoginForm.js +62 -29
- package/src/components/BackupCodesForm.d.ts.map +1 -1
- package/src/components/BackupCodesForm.js +29 -17
- package/src/components/ChangePasswordForm.d.ts.map +1 -1
- package/src/components/ChangePasswordForm.js +29 -17
- package/src/components/ExpirationSecondsSelector.d.ts +3 -3
- package/src/components/ExpirationSecondsSelector.d.ts.map +1 -1
- package/src/components/ExpirationSecondsSelector.js +1 -1
- package/src/components/Flag.d.ts.map +1 -1
- package/src/components/ForgotPasswordForm.d.ts.map +1 -1
- package/src/components/ForgotPasswordForm.js +16 -9
- package/src/components/LoginForm.d.ts +2 -2
- package/src/components/LoginForm.d.ts.map +1 -1
- package/src/components/LoginForm.js +52 -29
- package/src/components/RegisterForm.d.ts +5 -3
- package/src/components/RegisterForm.d.ts.map +1 -1
- package/src/components/RegisterForm.js +62 -27
- package/src/components/ResetPasswordForm.d.ts.map +1 -1
- package/src/components/ResetPasswordForm.js +25 -15
- package/src/components/TopMenu.d.ts.map +1 -1
- package/src/components/TopMenu.js +3 -10
- package/src/components/TranslatedTitle.d.ts +1 -1
- package/src/components/TranslatedTitle.d.ts.map +1 -1
- package/src/components/TranslatedTitle.js +1 -1
- package/src/components/UserSettingsForm.d.ts +4 -3
- package/src/components/UserSettingsForm.d.ts.map +1 -1
- package/src/components/UserSettingsForm.js +58 -25
- package/src/components/VerifyEmailPage.d.ts.map +1 -1
- package/src/components/VerifyEmailPage.js +20 -11
- package/src/contexts/AuthProvider.d.ts +4 -4
- package/src/contexts/AuthProvider.d.ts.map +1 -1
- package/src/contexts/AuthProvider.js +82 -27
- package/src/contexts/I18nProvider.d.ts.map +1 -1
- package/src/contexts/MenuContext.d.ts +2 -2
- package/src/contexts/MenuContext.d.ts.map +1 -1
- package/src/contexts/MenuContext.js +72 -43
- package/src/hooks/useBackupCodes.d.ts.map +1 -1
- package/src/hooks/useBackupCodes.js +8 -4
- package/src/hooks/useEmailVerification.d.ts.map +1 -1
- package/src/hooks/useEmailVerification.js +8 -4
- package/src/hooks/useUserSettings.d.ts +4 -2
- package/src/hooks/useUserSettings.d.ts.map +1 -1
- package/src/hooks/useUserSettings.js +30 -13
- package/src/services/authService.d.ts.map +1 -1
- package/src/services/authService.js +45 -63
- package/src/wrappers/BackupCodeLoginWrapper.d.ts.map +1 -1
- package/src/wrappers/BackupCodeLoginWrapper.js +0 -1
- package/src/wrappers/ChangePasswordFormWrapper.d.ts.map +1 -1
- package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -1
- package/src/wrappers/RegisterFormWrapper.js +7 -2
|
@@ -34,14 +34,13 @@ class AuthService {
|
|
|
34
34
|
...(password ? { password } : {}),
|
|
35
35
|
});
|
|
36
36
|
if (response.status !== 201) {
|
|
37
|
+
const errorData = response.data;
|
|
37
38
|
return {
|
|
38
|
-
error:
|
|
39
|
-
?
|
|
39
|
+
error: errorData.message
|
|
40
|
+
? errorData.message
|
|
40
41
|
: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Error),
|
|
41
|
-
...(
|
|
42
|
-
|
|
43
|
-
: {}),
|
|
44
|
-
...(response.data.errors ? { errors: response.data.errors } : {}),
|
|
42
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
43
|
+
...(errorData.errors ? { errors: errorData.errors } : {}),
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
46
|
return {
|
|
@@ -50,25 +49,20 @@ class AuthService {
|
|
|
50
49
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Registration_Success, {
|
|
51
50
|
MNEMONIC: response.data.mnemonic,
|
|
52
51
|
}),
|
|
53
|
-
mnemonic: response.data.mnemonic,
|
|
52
|
+
mnemonic: response.data.mnemonic ?? '',
|
|
54
53
|
};
|
|
55
54
|
}
|
|
56
55
|
catch (error) {
|
|
57
56
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
57
|
+
const errorData = error.response.data;
|
|
58
58
|
return {
|
|
59
|
-
error:
|
|
60
|
-
|
|
59
|
+
error: errorData.error ??
|
|
60
|
+
errorData.message ??
|
|
61
61
|
error.message ??
|
|
62
62
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
63
|
-
...(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
...(error.response.data.error?.field
|
|
67
|
-
? { field: error.response.data.error.field }
|
|
68
|
-
: {}),
|
|
69
|
-
...(error.response.data.errors
|
|
70
|
-
? { errors: error.response.data.errors }
|
|
71
|
-
: {}),
|
|
63
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
64
|
+
...(errorData.error ? { field: 'general' } : {}),
|
|
65
|
+
...(errorData.errors ? { errors: errorData.errors } : {}),
|
|
72
66
|
};
|
|
73
67
|
}
|
|
74
68
|
else {
|
|
@@ -88,9 +82,6 @@ class AuthService {
|
|
|
88
82
|
const loginRequest = await this.apiClient.post('/user/request-direct-login');
|
|
89
83
|
if (loginRequest.data.challenge) {
|
|
90
84
|
const { wallet } = this.cryptoCore.walletAndSeedFromMnemonic(mnemonic);
|
|
91
|
-
const privateKey = wallet.getPrivateKey();
|
|
92
|
-
// Get compressed public key (already includes prefix)
|
|
93
|
-
const publicKeyWithPrefix = this.cryptoCore.getPublicKey(privateKey);
|
|
94
85
|
const challengeBuffer = (0, ecies_lib_1.hexToUint8Array)(loginRequest.data.challenge);
|
|
95
86
|
const privateKeyBuffer = wallet.getPrivateKey();
|
|
96
87
|
const signature = this.eciesService.signMessage(privateKeyBuffer, challengeBuffer);
|
|
@@ -103,7 +94,7 @@ class AuthService {
|
|
|
103
94
|
});
|
|
104
95
|
if (loginResponse.data.token && loginResponse.data.user) {
|
|
105
96
|
return {
|
|
106
|
-
message: loginResponse.data.message,
|
|
97
|
+
message: loginResponse.data.message ?? '',
|
|
107
98
|
token: loginResponse.data.token,
|
|
108
99
|
user: loginResponse.data.user,
|
|
109
100
|
wallet,
|
|
@@ -129,14 +120,13 @@ class AuthService {
|
|
|
129
120
|
errorType: 'PasswordLoginNotEnabled',
|
|
130
121
|
};
|
|
131
122
|
}
|
|
123
|
+
const errorData = error.response.data;
|
|
132
124
|
return {
|
|
133
|
-
error:
|
|
134
|
-
|
|
125
|
+
error: errorData.error ??
|
|
126
|
+
errorData.message ??
|
|
135
127
|
error.message ??
|
|
136
128
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
137
|
-
...(
|
|
138
|
-
? { errorType: error.response.data.errorType }
|
|
139
|
-
: {}),
|
|
129
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
140
130
|
};
|
|
141
131
|
}
|
|
142
132
|
console.error('directLogin: non-axios error:', error);
|
|
@@ -162,14 +152,13 @@ class AuthService {
|
|
|
162
152
|
}
|
|
163
153
|
catch (error) {
|
|
164
154
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
155
|
+
const errorData = error.response.data;
|
|
165
156
|
return {
|
|
166
|
-
error:
|
|
167
|
-
|
|
157
|
+
error: errorData.error ??
|
|
158
|
+
errorData.message ??
|
|
168
159
|
error.message ??
|
|
169
160
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
170
|
-
...(
|
|
171
|
-
? { errorType: error.response.data.errorType }
|
|
172
|
-
: {}),
|
|
161
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
173
162
|
};
|
|
174
163
|
}
|
|
175
164
|
}
|
|
@@ -197,7 +186,7 @@ class AuthService {
|
|
|
197
186
|
});
|
|
198
187
|
if (response.data.token && response.data.user) {
|
|
199
188
|
return {
|
|
200
|
-
message: response.data.message,
|
|
189
|
+
message: response.data.message ?? '',
|
|
201
190
|
token: response.data.token,
|
|
202
191
|
user: response.data.user,
|
|
203
192
|
wallet,
|
|
@@ -206,14 +195,13 @@ class AuthService {
|
|
|
206
195
|
}
|
|
207
196
|
catch (error) {
|
|
208
197
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
198
|
+
const errorData = error.response.data;
|
|
209
199
|
return {
|
|
210
|
-
error:
|
|
211
|
-
|
|
200
|
+
error: errorData.error ??
|
|
201
|
+
errorData.message ??
|
|
212
202
|
error.message ??
|
|
213
203
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
214
|
-
...(
|
|
215
|
-
? { errorType: error.response.data.errorType }
|
|
216
|
-
: {}),
|
|
204
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
217
205
|
};
|
|
218
206
|
}
|
|
219
207
|
}
|
|
@@ -230,15 +218,14 @@ class AuthService {
|
|
|
230
218
|
}
|
|
231
219
|
catch (error) {
|
|
232
220
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
221
|
+
const errorData = error.response.data;
|
|
233
222
|
return {
|
|
234
|
-
error:
|
|
235
|
-
?
|
|
223
|
+
error: errorData.message
|
|
224
|
+
? errorData.message
|
|
236
225
|
: error.message
|
|
237
226
|
? error.message
|
|
238
227
|
: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
239
|
-
...(
|
|
240
|
-
? { errorType: error.response.data.errorType }
|
|
241
|
-
: {}),
|
|
228
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
242
229
|
};
|
|
243
230
|
}
|
|
244
231
|
else {
|
|
@@ -255,7 +242,9 @@ class AuthService {
|
|
|
255
242
|
const newToken = refreshResponse.headers['authorization'];
|
|
256
243
|
let token = undefined;
|
|
257
244
|
let user = undefined;
|
|
258
|
-
if (newToken
|
|
245
|
+
if (newToken &&
|
|
246
|
+
typeof newToken === 'string' &&
|
|
247
|
+
newToken.startsWith('Bearer ')) {
|
|
259
248
|
token = newToken.slice(7);
|
|
260
249
|
}
|
|
261
250
|
if (refreshResponse.data.user) {
|
|
@@ -268,10 +257,6 @@ class AuthService {
|
|
|
268
257
|
}
|
|
269
258
|
catch (error) {
|
|
270
259
|
console.error('Token refresh error:', error);
|
|
271
|
-
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
272
|
-
console.error('Error response:', error.response.data);
|
|
273
|
-
console.error('Error status:', error.response.status);
|
|
274
|
-
}
|
|
275
260
|
}
|
|
276
261
|
throw new suite_core_lib_1.TranslatableSuiteError(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError);
|
|
277
262
|
}
|
|
@@ -285,14 +270,13 @@ class AuthService {
|
|
|
285
270
|
}
|
|
286
271
|
catch (error) {
|
|
287
272
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
273
|
+
const errorData = error.response.data;
|
|
288
274
|
return {
|
|
289
|
-
error:
|
|
290
|
-
|
|
275
|
+
error: errorData.error ??
|
|
276
|
+
errorData.message ??
|
|
291
277
|
error.message ??
|
|
292
278
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
293
|
-
...(
|
|
294
|
-
? { errorType: error.response.data.errorType }
|
|
295
|
-
: {}),
|
|
279
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
296
280
|
};
|
|
297
281
|
}
|
|
298
282
|
return {
|
|
@@ -319,26 +303,24 @@ class AuthService {
|
|
|
319
303
|
...(response.data.message ? { message: response.data.message } : {}),
|
|
320
304
|
};
|
|
321
305
|
}
|
|
306
|
+
const errorData = response.data;
|
|
322
307
|
return {
|
|
323
|
-
error:
|
|
324
|
-
?
|
|
308
|
+
error: errorData.message
|
|
309
|
+
? errorData.message
|
|
325
310
|
: (0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidToken),
|
|
326
|
-
...(
|
|
327
|
-
? { errorType: response.data.errorType }
|
|
328
|
-
: {}),
|
|
311
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
329
312
|
};
|
|
330
313
|
}
|
|
331
314
|
catch (error) {
|
|
332
315
|
console.error('Backup code login error:', error);
|
|
333
316
|
if ((0, axios_1.isAxiosError)(error) && error.response) {
|
|
317
|
+
const errorData = error.response.data;
|
|
334
318
|
return {
|
|
335
|
-
error:
|
|
336
|
-
|
|
319
|
+
error: errorData.error ??
|
|
320
|
+
errorData.message ??
|
|
337
321
|
error.message ??
|
|
338
322
|
(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_UnexpectedError),
|
|
339
|
-
...(
|
|
340
|
-
? { errorType: error.response.data.errorType }
|
|
341
|
-
: {}),
|
|
323
|
+
...(errorData.errorType ? { errorType: errorData.errorType } : {}),
|
|
342
324
|
status: error.response.status,
|
|
343
325
|
};
|
|
344
326
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupCodeLoginWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodeLoginWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,
|
|
1
|
+
{"version":3,"file":"BackupCodeLoginWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/BackupCodeLoginWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAuBlE,CAAC"}
|
|
@@ -8,7 +8,6 @@ const contexts_1 = require("../contexts");
|
|
|
8
8
|
const BackupCodeLoginWrapper = ({ onSuccess, componentProps = {}, }) => {
|
|
9
9
|
const { backupCodeLogin, isAuthenticated } = (0, contexts_1.useAuth)();
|
|
10
10
|
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
11
|
-
const { routes } = (0, contexts_1.useSuiteConfig)();
|
|
12
11
|
const handleSubmit = async (...args) => {
|
|
13
12
|
const result = await backupCodeLogin(...args);
|
|
14
13
|
if ('token' in result && onSuccess) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangePasswordFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/ChangePasswordFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"ChangePasswordFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/ChangePasswordFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC3E;AAED,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,8BAA8B,CAwBxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,
|
|
1
|
+
{"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAEL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CACtB,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,CAAC,CACzE,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CA2C5D,CAAC"}
|
|
@@ -9,7 +9,7 @@ const RegisterFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, }) =>
|
|
|
9
9
|
const { register } = (0, contexts_1.useAuth)();
|
|
10
10
|
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
11
11
|
const { routes, timezones } = (0, contexts_1.useSuiteConfig)();
|
|
12
|
-
const handleSubmit = async (values
|
|
12
|
+
const handleSubmit = async (values) => {
|
|
13
13
|
const result = await register(values.username, values.email, values.timezone || 'UTC', values.password);
|
|
14
14
|
if ('error' in result) {
|
|
15
15
|
throw new Error(result.error);
|
|
@@ -20,7 +20,12 @@ const RegisterFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, }) =>
|
|
|
20
20
|
navigate(redirectTo || routes.verifyEmail || '/verify-email');
|
|
21
21
|
return result;
|
|
22
22
|
};
|
|
23
|
-
const defaultTimezones = timezones || [
|
|
23
|
+
const defaultTimezones = timezones || [
|
|
24
|
+
'UTC',
|
|
25
|
+
'America/New_York',
|
|
26
|
+
'America/Los_Angeles',
|
|
27
|
+
'Europe/London',
|
|
28
|
+
];
|
|
24
29
|
return ((0, jsx_runtime_1.jsx)(RegisterForm_1.RegisterForm, { onSubmit: handleSubmit, timezones: defaultTimezones, getInitialTimezone: () => Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC', ...componentProps }));
|
|
25
30
|
};
|
|
26
31
|
exports.RegisterFormWrapper = RegisterFormWrapper;
|