@webiny/cognito 6.4.4-beta.2 → 6.4.4-beta.4

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.
Files changed (72) hide show
  1. package/Cognito.d.ts +51 -0
  2. package/Cognito.js +75 -4
  3. package/Cognito.js.map +1 -1
  4. package/admin/DefaultCognitoSignInConfig.d.ts +23 -0
  5. package/admin/DefaultCognitoSignInConfig.js +51 -0
  6. package/admin/DefaultCognitoSignInConfig.js.map +1 -0
  7. package/admin/Extension.js +3 -0
  8. package/admin/Extension.js.map +1 -1
  9. package/admin/index.d.ts +2 -0
  10. package/admin/index.js +2 -0
  11. package/admin/presentation/Cognito/CognitoLoginScreen.js +9 -0
  12. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -1
  13. package/admin/presentation/Cognito/CognitoPresenter.d.ts +25 -1
  14. package/admin/presentation/Cognito/CognitoPresenter.js +122 -10
  15. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
  16. package/admin/presentation/Cognito/CognitoSignInConfig.d.ts +31 -0
  17. package/admin/presentation/Cognito/CognitoSignInConfig.js +5 -0
  18. package/admin/presentation/Cognito/CognitoSignInConfig.js.map +1 -0
  19. package/admin/presentation/Cognito/abstractions.d.ts +20 -1
  20. package/admin/presentation/Cognito/abstractions.js.map +1 -1
  21. package/admin/presentation/Cognito/components/ConfirmTotpCode.d.ts +26 -0
  22. package/admin/presentation/Cognito/components/ConfirmTotpCode.js +45 -0
  23. package/admin/presentation/Cognito/components/ConfirmTotpCode.js.map +1 -0
  24. package/admin/presentation/Cognito/components/Divider.d.ts +19 -1
  25. package/admin/presentation/Cognito/components/Divider.js +3 -2
  26. package/admin/presentation/Cognito/components/Divider.js.map +1 -1
  27. package/admin/presentation/Cognito/components/FederatedLogin.d.ts +22 -5
  28. package/admin/presentation/Cognito/components/FederatedLogin.js +19 -6
  29. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
  30. package/admin/presentation/Cognito/components/FooterSignIn.d.ts +20 -3
  31. package/admin/presentation/Cognito/components/FooterSignIn.js +3 -2
  32. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -1
  33. package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +19 -1
  34. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +3 -2
  35. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -1
  36. package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +19 -1
  37. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +3 -2
  38. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -1
  39. package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +19 -1
  40. package/admin/presentation/Cognito/components/RequireNewPassword.js +3 -2
  41. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -1
  42. package/admin/presentation/Cognito/components/SetNewPassword.d.ts +19 -1
  43. package/admin/presentation/Cognito/components/SetNewPassword.js +3 -2
  44. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -1
  45. package/admin/presentation/Cognito/components/SetupTotp.d.ts +25 -0
  46. package/admin/presentation/Cognito/components/SetupTotp.js +60 -0
  47. package/admin/presentation/Cognito/components/SetupTotp.js.map +1 -0
  48. package/admin/presentation/Cognito/components/SignIn.d.ts +19 -3
  49. package/admin/presentation/Cognito/components/SignIn.js +14 -7
  50. package/admin/presentation/Cognito/components/SignIn.js.map +1 -1
  51. package/admin/presentation/Cognito/components/index.d.ts +292 -0
  52. package/admin/presentation/Cognito/components/index.js +29 -0
  53. package/admin/presentation/Cognito/components/index.js.map +1 -0
  54. package/admin/presentation/Cognito/signInFeature.d.ts +1 -0
  55. package/admin/presentation/Cognito/signInFeature.js +11 -0
  56. package/admin/presentation/Cognito/signInFeature.js.map +1 -0
  57. package/admin/ui/views/Users/UsersForm.js +21 -15
  58. package/admin/ui/views/Users/UsersForm.js.map +1 -1
  59. package/admin/ui/views/Users/hooks/useUserForm.js +3 -1
  60. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -1
  61. package/api/features/CognitoIdp/CognitoIdentityProvider.js +15 -11
  62. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -1
  63. package/api/features/CognitoIdp/abstractions.d.ts +1 -1
  64. package/api/features/CognitoIdp/abstractions.js.map +1 -1
  65. package/api/index.d.ts +1 -0
  66. package/api/index.js +1 -0
  67. package/index.d.ts +0 -1
  68. package/index.js +0 -1
  69. package/infra/CognitoFederationPulumi.d.ts +8 -0
  70. package/infra/CognitoFederationPulumi.js +17 -0
  71. package/infra/CognitoFederationPulumi.js.map +1 -0
  72. package/package.json +19 -17
@@ -0,0 +1,292 @@
1
+ export declare const Components: {
2
+ SignIn: ((props: import("./SignIn.js").SignInProps) => import("react").JSX.Element) & {
3
+ original: (props: import("./SignIn.js").SignInProps) => import("react").JSX.Element;
4
+ originalName: string;
5
+ displayName: string;
6
+ } & {
7
+ original: ((props: import("./SignIn.js").SignInProps) => import("react").JSX.Element) & {
8
+ original: (props: import("./SignIn.js").SignInProps) => import("react").JSX.Element;
9
+ originalName: string;
10
+ displayName: string;
11
+ };
12
+ originalName: string;
13
+ displayName: string;
14
+ } & {
15
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./SignIn.js").SignInProps) => import("react").JSX.Element) & {
16
+ original: (props: import("./SignIn.js").SignInProps) => import("react").JSX.Element;
17
+ originalName: string;
18
+ displayName: string;
19
+ }>) => (props: unknown) => React.JSX.Element;
20
+ };
21
+ ConfirmTotpCode: ((props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element) & {
22
+ original: (props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element;
23
+ originalName: string;
24
+ displayName: string;
25
+ } & {
26
+ original: ((props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element) & {
27
+ original: (props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element;
28
+ originalName: string;
29
+ displayName: string;
30
+ };
31
+ originalName: string;
32
+ displayName: string;
33
+ } & {
34
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element) & {
35
+ original: (props: import("./ConfirmTotpCode.js").ConfirmTotpCodeProps) => import("react").JSX.Element;
36
+ originalName: string;
37
+ displayName: string;
38
+ }>) => (props: unknown) => React.JSX.Element;
39
+ };
40
+ SetupTotp: ((props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element) & {
41
+ original: (props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element;
42
+ originalName: string;
43
+ displayName: string;
44
+ } & {
45
+ original: ((props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element) & {
46
+ original: (props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element;
47
+ originalName: string;
48
+ displayName: string;
49
+ };
50
+ originalName: string;
51
+ displayName: string;
52
+ } & {
53
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element) & {
54
+ original: (props: import("./SetupTotp.js").SetupTotpProps) => import("react").JSX.Element;
55
+ originalName: string;
56
+ displayName: string;
57
+ }>) => (props: unknown) => React.JSX.Element;
58
+ };
59
+ RequireNewPassword: ((props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element) & {
60
+ original: (props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element;
61
+ originalName: string;
62
+ displayName: string;
63
+ } & {
64
+ original: ((props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element) & {
65
+ original: (props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element;
66
+ originalName: string;
67
+ displayName: string;
68
+ };
69
+ originalName: string;
70
+ displayName: string;
71
+ } & {
72
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element) & {
73
+ original: (props: import("./RequireNewPassword.js").RequireNewPasswordProps) => import("react").JSX.Element;
74
+ originalName: string;
75
+ displayName: string;
76
+ }>) => (props: unknown) => React.JSX.Element;
77
+ };
78
+ RequestPasswordResetCode: ((props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element) & {
79
+ original: (props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element;
80
+ originalName: string;
81
+ displayName: string;
82
+ } & {
83
+ original: ((props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element) & {
84
+ original: (props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element;
85
+ originalName: string;
86
+ displayName: string;
87
+ };
88
+ originalName: string;
89
+ displayName: string;
90
+ } & {
91
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element) & {
92
+ original: (props: import("./RequestPasswordResetCode.js").ForgotPasswordProps) => import("react").JSX.Element;
93
+ originalName: string;
94
+ displayName: string;
95
+ }>) => (props: unknown) => React.JSX.Element;
96
+ };
97
+ PasswordResetCodeSent: ((props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element) & {
98
+ original: (props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element;
99
+ originalName: string;
100
+ displayName: string;
101
+ } & {
102
+ original: ((props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element) & {
103
+ original: (props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element;
104
+ originalName: string;
105
+ displayName: string;
106
+ };
107
+ originalName: string;
108
+ displayName: string;
109
+ } & {
110
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element) & {
111
+ original: (props: import("./PasswordResetCodeSent.js").PasswordResetCodeSentProps) => import("react").JSX.Element;
112
+ originalName: string;
113
+ displayName: string;
114
+ }>) => (props: unknown) => React.JSX.Element;
115
+ };
116
+ SetNewPassword: ((props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element) & {
117
+ original: (props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element;
118
+ originalName: string;
119
+ displayName: string;
120
+ } & {
121
+ original: ((props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element) & {
122
+ original: (props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element;
123
+ originalName: string;
124
+ displayName: string;
125
+ };
126
+ originalName: string;
127
+ displayName: string;
128
+ } & {
129
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<((props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element) & {
130
+ original: (props: import("./SetNewPassword.js").SetNewPasswordProps) => import("react").JSX.Element;
131
+ originalName: string;
132
+ displayName: string;
133
+ }>) => (props: unknown) => React.JSX.Element;
134
+ };
135
+ FederatedLogin: (({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element) & {
136
+ original: ({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element;
137
+ originalName: string;
138
+ displayName: string;
139
+ } & {
140
+ original: (({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element) & {
141
+ original: ({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element;
142
+ originalName: string;
143
+ displayName: string;
144
+ };
145
+ originalName: string;
146
+ displayName: string;
147
+ } & {
148
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element) & {
149
+ original: ({ providers }: import("./FederatedLogin.js").FederatedLoginProps) => import("react").JSX.Element;
150
+ originalName: string;
151
+ displayName: string;
152
+ }>) => (props: unknown) => React.JSX.Element;
153
+ };
154
+ FederatedProviders: {
155
+ Container: (({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element) & {
156
+ original: ({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element;
157
+ originalName: string;
158
+ displayName: string;
159
+ } & {
160
+ original: (({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element) & {
161
+ original: ({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element;
162
+ originalName: string;
163
+ displayName: string;
164
+ };
165
+ originalName: string;
166
+ displayName: string;
167
+ } & {
168
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element) & {
169
+ original: ({ children }: import("./FederatedProviders.js").ContainerProps) => import("react").JSX.Element;
170
+ originalName: string;
171
+ displayName: string;
172
+ }>) => (props: unknown) => React.JSX.Element;
173
+ };
174
+ };
175
+ Divider: (() => import("react").JSX.Element) & {
176
+ original: () => import("react").JSX.Element;
177
+ originalName: string;
178
+ displayName: string;
179
+ } & {
180
+ original: (() => import("react").JSX.Element) & {
181
+ original: () => import("react").JSX.Element;
182
+ originalName: string;
183
+ displayName: string;
184
+ };
185
+ originalName: string;
186
+ displayName: string;
187
+ } & {
188
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(() => import("react").JSX.Element) & {
189
+ original: () => import("react").JSX.Element;
190
+ originalName: string;
191
+ displayName: string;
192
+ }>) => (props: unknown) => React.JSX.Element;
193
+ };
194
+ FooterSignIn: (({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element) & {
195
+ original: ({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element;
196
+ originalName: string;
197
+ displayName: string;
198
+ } & {
199
+ original: (({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element) & {
200
+ original: ({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element;
201
+ originalName: string;
202
+ displayName: string;
203
+ };
204
+ originalName: string;
205
+ displayName: string;
206
+ } & {
207
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element) & {
208
+ original: ({ onSignIn }: import("./FooterSignIn.js").FooterSignInProps) => import("react").JSX.Element;
209
+ originalName: string;
210
+ displayName: string;
211
+ }>) => (props: unknown) => React.JSX.Element;
212
+ };
213
+ View: {
214
+ Container: (({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element) & {
215
+ original: ({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element;
216
+ originalName: string;
217
+ displayName: string;
218
+ } & {
219
+ original: (({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element) & {
220
+ original: ({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element;
221
+ originalName: string;
222
+ displayName: string;
223
+ };
224
+ originalName: string;
225
+ displayName: string;
226
+ } & {
227
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element) & {
228
+ original: ({ children }: import("./View.js").ContainerProps) => import("react").JSX.Element;
229
+ originalName: string;
230
+ displayName: string;
231
+ }>) => (props: unknown) => React.JSX.Element;
232
+ };
233
+ Content: (({ children }: import("./View.js").ContentProps) => import("react").JSX.Element) & {
234
+ original: ({ children }: import("./View.js").ContentProps) => import("react").JSX.Element;
235
+ originalName: string;
236
+ displayName: string;
237
+ } & {
238
+ original: (({ children }: import("./View.js").ContentProps) => import("react").JSX.Element) & {
239
+ original: ({ children }: import("./View.js").ContentProps) => import("react").JSX.Element;
240
+ originalName: string;
241
+ displayName: string;
242
+ };
243
+ originalName: string;
244
+ displayName: string;
245
+ } & {
246
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ children }: import("./View.js").ContentProps) => import("react").JSX.Element) & {
247
+ original: ({ children }: import("./View.js").ContentProps) => import("react").JSX.Element;
248
+ originalName: string;
249
+ displayName: string;
250
+ }>) => (props: unknown) => React.JSX.Element;
251
+ };
252
+ Title: (({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element) & {
253
+ original: ({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element;
254
+ originalName: string;
255
+ displayName: string;
256
+ } & {
257
+ original: (({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element) & {
258
+ original: ({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element;
259
+ originalName: string;
260
+ displayName: string;
261
+ };
262
+ originalName: string;
263
+ displayName: string;
264
+ } & {
265
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element) & {
266
+ original: ({ title, description }: import("./View.js").TitleProps) => import("react").JSX.Element;
267
+ originalName: string;
268
+ displayName: string;
269
+ }>) => (props: unknown) => React.JSX.Element;
270
+ };
271
+ Footer: (({ children }: import("./View.js").FooterProps) => import("react").JSX.Element) & {
272
+ original: ({ children }: import("./View.js").FooterProps) => import("react").JSX.Element;
273
+ originalName: string;
274
+ displayName: string;
275
+ } & {
276
+ original: (({ children }: import("./View.js").FooterProps) => import("react").JSX.Element) & {
277
+ original: ({ children }: import("./View.js").FooterProps) => import("react").JSX.Element;
278
+ originalName: string;
279
+ displayName: string;
280
+ };
281
+ originalName: string;
282
+ displayName: string;
283
+ } & {
284
+ createDecorator: (decorator: import("@webiny/app/index.js").ComponentDecorator<(({ children }: import("./View.js").FooterProps) => import("react").JSX.Element) & {
285
+ original: ({ children }: import("./View.js").FooterProps) => import("react").JSX.Element;
286
+ originalName: string;
287
+ displayName: string;
288
+ }>) => (props: unknown) => React.JSX.Element;
289
+ };
290
+ Error: ({ title, description }: import("./View.js").ErrorProps) => import("react").JSX.Element | null;
291
+ };
292
+ };
@@ -0,0 +1,29 @@
1
+ import { SignIn } from "./SignIn.js";
2
+ import { ConfirmTotpCode } from "./ConfirmTotpCode.js";
3
+ import { SetupTotp } from "./SetupTotp.js";
4
+ import { RequireNewPassword } from "./RequireNewPassword.js";
5
+ import { RequestPasswordResetCode } from "./RequestPasswordResetCode.js";
6
+ import { PasswordResetCodeSent } from "./PasswordResetCodeSent.js";
7
+ import { SetNewPassword } from "./SetNewPassword.js";
8
+ import { FederatedLogin } from "./FederatedLogin.js";
9
+ import { FederatedProviders } from "./FederatedProviders.js";
10
+ import { Divider } from "./Divider.js";
11
+ import { FooterSignIn } from "./FooterSignIn.js";
12
+ import { View } from "./View.js";
13
+ const Components = {
14
+ SignIn: SignIn,
15
+ ConfirmTotpCode: ConfirmTotpCode,
16
+ SetupTotp: SetupTotp,
17
+ RequireNewPassword: RequireNewPassword,
18
+ RequestPasswordResetCode: RequestPasswordResetCode,
19
+ PasswordResetCodeSent: PasswordResetCodeSent,
20
+ SetNewPassword: SetNewPassword,
21
+ FederatedLogin: FederatedLogin,
22
+ FederatedProviders: FederatedProviders,
23
+ Divider: Divider,
24
+ FooterSignIn: FooterSignIn,
25
+ View: View
26
+ };
27
+ export { Components };
28
+
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/Cognito/components/index.js","sources":["../../../../../src/admin/presentation/Cognito/components/index.ts"],"sourcesContent":["import { SignIn } from \"./SignIn.js\";\nimport { ConfirmTotpCode } from \"./ConfirmTotpCode.js\";\nimport { SetupTotp } from \"./SetupTotp.js\";\nimport { RequireNewPassword } from \"./RequireNewPassword.js\";\nimport { RequestPasswordResetCode } from \"./RequestPasswordResetCode.js\";\nimport { PasswordResetCodeSent } from \"./PasswordResetCodeSent.js\";\nimport { SetNewPassword } from \"./SetNewPassword.js\";\nimport { FederatedLogin } from \"./FederatedLogin.js\";\nimport { FederatedProviders } from \"./FederatedProviders.js\";\nimport { Divider } from \"./Divider.js\";\nimport { FooterSignIn } from \"./FooterSignIn.js\";\nimport { View } from \"./View.js\";\n\nexport const Components = {\n SignIn,\n ConfirmTotpCode,\n SetupTotp,\n RequireNewPassword,\n RequestPasswordResetCode,\n PasswordResetCodeSent,\n SetNewPassword,\n FederatedLogin,\n FederatedProviders,\n Divider,\n FooterSignIn,\n View\n};\n"],"names":["Components","SignIn","ConfirmTotpCode","SetupTotp","RequireNewPassword","RequestPasswordResetCode","PasswordResetCodeSent","SetNewPassword","FederatedLogin","FederatedProviders","Divider","FooterSignIn","View"],"mappings":";;;;;;;;;;;;AAaO,MAAMA,aAAa;IACtBC,QAAMA;IACNC,iBAAeA;IACfC,WAASA;IACTC,oBAAkBA;IAClBC,0BAAwBA;IACxBC,uBAAqBA;IACrBC,gBAAcA;IACdC,gBAAcA;IACdC,oBAAkBA;IAClBC,SAAOA;IACPC,cAAYA;IACZC,MAAIA;AACR"}
@@ -0,0 +1 @@
1
+ export declare const CognitoSignInFeature: import("@webiny/feature/admin").FeatureDefinition<any, []>;
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/admin";
2
+ import { DefaultCognitoSignInConfig } from "../../DefaultCognitoSignInConfig.js";
3
+ const CognitoSignInFeature = createFeature({
4
+ name: "CognitoSignIn",
5
+ register (container) {
6
+ container.register(DefaultCognitoSignInConfig).inSingletonScope();
7
+ }
8
+ });
9
+ export { CognitoSignInFeature };
10
+
11
+ //# sourceMappingURL=signInFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/presentation/Cognito/signInFeature.js","sources":["../../../../src/admin/presentation/Cognito/signInFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { DefaultCognitoSignInConfig } from \"~/admin/DefaultCognitoSignInConfig.js\";\n\nexport const CognitoSignInFeature = createFeature({\n name: \"CognitoSignIn\",\n register(container) {\n container.register(DefaultCognitoSignInConfig).inSingletonScope();\n }\n});\n"],"names":["CognitoSignInFeature","createFeature","container","DefaultCognitoSignInConfig"],"mappings":";;AAGO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,4BAA4B,gBAAgB;IACnE;AACJ"}
@@ -1,7 +1,7 @@
1
1
  import react, { useMemo } from "react";
2
2
  import { i18n } from "@webiny/app/i18n/index.js";
3
3
  import { Form } from "@webiny/form";
4
- import { validation } from "@webiny/validation";
4
+ import { validation as validation_validation } from "@webiny/validation";
5
5
  import { EmptyView, RolesMultiAutocomplete, SimpleForm, SimpleFormContent, SimpleFormFooter, SimpleFormHeader, TeamsMultiAutocomplete, useAuthentication, useRouter } from "@webiny/app-admin";
6
6
  import { ReactComponent } from "@webiny/icons/add.svg";
7
7
  import { ReactComponent as gpp_maybe_svg_ReactComponent } from "@webiny/icons/gpp_maybe.svg";
@@ -24,7 +24,7 @@ const UserForm = ({ teams })=>{
24
24
  const isNewUser = userForm.isNewUser;
25
25
  const emailIsDisabled = config.getKey("ADMIN_USER_CAN_CHANGE_EMAIL", "false" === process.env.REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL);
26
26
  const groupValidators = useMemo(()=>teams ? [] : [
27
- validation.create("required")
27
+ validation_validation.create("required")
28
28
  ], [
29
29
  teams
30
30
  ]);
@@ -82,7 +82,7 @@ const UserForm = ({ teams })=>{
82
82
  span: 12
83
83
  }, /*#__PURE__*/ react.createElement(Bind, {
84
84
  name: "firstName",
85
- validators: validation.create("required")
85
+ validators: validation_validation.create("required")
86
86
  }, /*#__PURE__*/ react.createElement(Input, {
87
87
  label: t`First Name`,
88
88
  disabled: isDisabled,
@@ -91,7 +91,7 @@ const UserForm = ({ teams })=>{
91
91
  span: 12
92
92
  }, /*#__PURE__*/ react.createElement(Bind, {
93
93
  name: "lastName",
94
- validators: validation.create("required")
94
+ validators: validation_validation.create("required")
95
95
  }, /*#__PURE__*/ react.createElement(Input, {
96
96
  label: t`Last Name`,
97
97
  disabled: isDisabled,
@@ -100,7 +100,7 @@ const UserForm = ({ teams })=>{
100
100
  span: 12
101
101
  }, /*#__PURE__*/ react.createElement(Bind, {
102
102
  name: "email",
103
- validators: validation.create("required,email")
103
+ validators: validation_validation.create("required,email")
104
104
  }, /*#__PURE__*/ react.createElement(Input, {
105
105
  value: data.email,
106
106
  label: t`Email`,
@@ -129,11 +129,14 @@ const UserForm = ({ teams })=>{
129
129
  }, /*#__PURE__*/ react.createElement(Bind, {
130
130
  name: "roles",
131
131
  validators: groupValidators
132
- }, /*#__PURE__*/ react.createElement(RolesMultiAutocomplete, {
133
- label: "Roles",
134
- "data-testid": "roles-autocomplete",
135
- disabled: isDisabled
136
- }))))), teams ? /*#__PURE__*/ react.createElement(Accordion.Item, {
132
+ }, ({ value, onChange, validation })=>/*#__PURE__*/ react.createElement(RolesMultiAutocomplete, {
133
+ values: value,
134
+ onChange: onChange,
135
+ validation: validation,
136
+ label: "Roles",
137
+ "data-testid": "roles-autocomplete",
138
+ disabled: isDisabled
139
+ }))))), teams ? /*#__PURE__*/ react.createElement(Accordion.Item, {
137
140
  title: "Teams",
138
141
  description: "Assign to teams",
139
142
  icon: /*#__PURE__*/ react.createElement(admin_panel_settings_svg_ReactComponent, null)
@@ -141,11 +144,14 @@ const UserForm = ({ teams })=>{
141
144
  span: 12
142
145
  }, /*#__PURE__*/ react.createElement(Bind, {
143
146
  name: "teams"
144
- }, /*#__PURE__*/ react.createElement(TeamsMultiAutocomplete, {
145
- label: "Teams",
146
- "data-testid": "teams-autocomplete",
147
- disabled: isDisabled
148
- }))))) : null)), /*#__PURE__*/ react.createElement(SimpleFormFooter, {
147
+ }, ({ value, onChange, validation })=>/*#__PURE__*/ react.createElement(TeamsMultiAutocomplete, {
148
+ values: value,
149
+ onChange: onChange,
150
+ validation: validation,
151
+ label: "Teams",
152
+ "data-testid": "teams-autocomplete",
153
+ disabled: isDisabled
154
+ }))))) : null)), /*#__PURE__*/ react.createElement(SimpleFormFooter, {
149
155
  "data-testid": "form-footer"
150
156
  }, /*#__PURE__*/ react.createElement(Button, {
151
157
  variant: "secondary",
@@ -1 +1 @@
1
- {"version":3,"file":"admin/ui/views/Users/UsersForm.js","sources":["../../../../../src/admin/ui/views/Users/UsersForm.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormHeader,\n SimpleFormFooter,\n SimpleFormContent,\n EmptyView,\n RolesMultiAutocomplete,\n TeamsMultiAutocomplete,\n useAuthentication,\n useRouter\n} from \"@webiny/app-admin\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/icons/gpp_maybe.svg\";\nimport { ReactComponent as SecurityTeamsIcon } from \"@webiny/icons/admin_panel_settings.svg\";\nimport { ReactComponent as SettingsIcon } from \"@webiny/icons/settings.svg\";\nimport { Accordion, Alert, OverlayLoader, Button, Input, Grid, Link } from \"@webiny/admin-ui\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\nimport { AvatarImage } from \"../../components/AvatarImage/index.js\";\nimport { useUserForm } from \"~/admin/ui/views/Users/hooks/useUserForm.js\";\nimport { usePasswordValidator } from \"~/admin/presentation/shared/usePasswordValidator.js\";\nimport { Routes } from \"~/admin/routes.js\";\n\nconst t = i18n.ns(\"app-security-admin-users/account-form\");\n\nexport interface UserFormProps {\n teams: boolean;\n}\n\nexport const UserForm = ({ teams }: UserFormProps) => {\n const { identity } = useAuthentication();\n const userForm = useUserForm();\n const passwordValidator = usePasswordValidator();\n const { getLink } = useRouter();\n\n const isExternal = userForm.user?.external === true;\n const formTitle = userForm.isNewUser ? \"New User\" : userForm.fullName;\n const isNewUser = userForm.isNewUser;\n\n const emailIsDisabled = appConfig.getKey(\n \"ADMIN_USER_CAN_CHANGE_EMAIL\",\n process.env.REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL === \"false\"\n );\n\n const groupValidators = useMemo(() => {\n return teams ? [] : [validation.create(\"required\")];\n }, [teams]);\n\n const accountLink = getLink(Routes.Users.Account);\n\n // Render \"No content\" selected view.\n if (userForm.showEmptyView) {\n return (\n <EmptyView\n icon={<SettingsIcon />}\n title={t`Click on the left side list to display user details or create a...`}\n action={\n <Button\n icon={<AddIcon />}\n text={t`New User`}\n data-testid=\"new-record-button\"\n onClick={userForm.createUser}\n />\n }\n />\n );\n }\n\n const isSelf = userForm.user.id === identity.id;\n const isDisabled = isExternal || isSelf;\n\n return (\n <Form data={userForm.user} onSubmit={userForm.onSubmit}>\n {({ data, form, Bind }) => (\n <SimpleForm size={\"lg\"}>\n {userForm.loading && <OverlayLoader />}\n <div className={\"mb-xl\"}>\n <Bind name=\"avatar\">\n <AvatarImage round disabled={isDisabled} />\n </Bind>\n </div>\n <SimpleFormHeader title={formTitle} />\n <SimpleFormContent>\n {isExternal && (\n <Grid className={\"mb-lg\"}>\n <Grid.Column span={12}>\n <Alert type={\"info\"} title={\"External User\"}>\n This user is an external user and cannot be edited.\n </Alert>\n </Grid.Column>\n </Grid>\n )}\n {isSelf && (\n <Grid className={\"mb-lg\"}>\n <Grid.Column span={12}>\n <Alert type={\"info\"} title={\"Own Profile\"}>\n You cannot edit your own profile using this form. Please use\n the <Link to={accountLink}>account settings</Link> instead.\n </Alert>\n </Grid.Column>\n </Grid>\n )}\n <Accordion variant={\"underline\"}>\n <Accordion.Item\n title={\"Bio\"}\n description={\"Account information\"}\n icon={<SettingsIcon />}\n defaultOpen={true}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind\n name=\"firstName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`First Name`}\n disabled={isDisabled}\n data-testid=\"account.firstname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"lastName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Last Name`}\n disabled={isDisabled}\n data-testid=\"account.lastname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"email\"\n validators={validation.create(\"required,email\")}\n >\n <Input\n value={data.email}\n label={t`Email`}\n disabled={emailIsDisabled || isDisabled}\n data-testid=\"account.email\"\n autoComplete=\"new-password\"\n description={\n \"Email is your unique identifier used to login!\"\n }\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name=\"password\" validators={passwordValidator}>\n <Input\n autoComplete=\"new-password\"\n disabled={isDisabled}\n description={\n data.id && \"Type a new password to reset it.\"\n }\n type=\"password\"\n label={\"Password\"}\n data-testid=\"account.password\"\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n <Accordion.Item\n title={\"Roles\"}\n description={\"Assign to security roles\"}\n icon={<SecurityIcon />}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name={\"roles\"} validators={groupValidators}>\n <RolesMultiAutocomplete\n label={\"Roles\"}\n data-testid=\"roles-autocomplete\"\n disabled={isDisabled}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n {teams ? (\n <Accordion.Item\n title={\"Teams\"}\n description={\"Assign to teams\"}\n icon={<SecurityTeamsIcon />}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name={\"teams\"}>\n <TeamsMultiAutocomplete\n label={\"Teams\"}\n data-testid=\"teams-autocomplete\"\n disabled={isDisabled}\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n ) : null}\n </Accordion>\n </SimpleFormContent>\n <SimpleFormFooter data-testid={\"form-footer\"}>\n <Button\n variant={\"secondary\"}\n text={t`Cancel`}\n onClick={userForm.cancelEditing}\n />\n <Button\n variant={\"primary\"}\n text={isNewUser ? t`Create user` : t`Update user`}\n disabled={isDisabled}\n onClick={form.submit}\n />\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n );\n};\n"],"names":["t","i18n","UserForm","teams","identity","useAuthentication","userForm","useUserForm","passwordValidator","usePasswordValidator","getLink","useRouter","isExternal","formTitle","isNewUser","emailIsDisabled","appConfig","process","groupValidators","useMemo","validation","accountLink","Routes","EmptyView","SettingsIcon","Button","AddIcon","isSelf","isDisabled","Form","data","form","Bind","SimpleForm","OverlayLoader","AvatarImage","SimpleFormHeader","SimpleFormContent","Grid","Alert","Link","Accordion","Input","SecurityIcon","RolesMultiAutocomplete","SecurityTeamsIcon","TeamsMultiAutocomplete","SimpleFormFooter"],"mappings":"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"}
1
+ {"version":3,"file":"admin/ui/views/Users/UsersForm.js","sources":["../../../../../src/admin/ui/views/Users/UsersForm.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport {\n SimpleForm,\n SimpleFormHeader,\n SimpleFormFooter,\n SimpleFormContent,\n EmptyView,\n RolesMultiAutocomplete,\n TeamsMultiAutocomplete,\n useAuthentication,\n useRouter\n} from \"@webiny/app-admin\";\nimport { ReactComponent as AddIcon } from \"@webiny/icons/add.svg\";\nimport { ReactComponent as SecurityIcon } from \"@webiny/icons/gpp_maybe.svg\";\nimport { ReactComponent as SecurityTeamsIcon } from \"@webiny/icons/admin_panel_settings.svg\";\nimport { ReactComponent as SettingsIcon } from \"@webiny/icons/settings.svg\";\nimport { Accordion, Alert, OverlayLoader, Button, Input, Grid, Link } from \"@webiny/admin-ui\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\nimport { AvatarImage } from \"../../components/AvatarImage/index.js\";\nimport { useUserForm } from \"~/admin/ui/views/Users/hooks/useUserForm.js\";\nimport { usePasswordValidator } from \"~/admin/presentation/shared/usePasswordValidator.js\";\nimport { Routes } from \"~/admin/routes.js\";\n\nconst t = i18n.ns(\"app-security-admin-users/account-form\");\n\nexport interface UserFormProps {\n teams: boolean;\n}\n\nexport const UserForm = ({ teams }: UserFormProps) => {\n const { identity } = useAuthentication();\n const userForm = useUserForm();\n const passwordValidator = usePasswordValidator();\n const { getLink } = useRouter();\n\n const isExternal = userForm.user?.external === true;\n const formTitle = userForm.isNewUser ? \"New User\" : userForm.fullName;\n const isNewUser = userForm.isNewUser;\n\n const emailIsDisabled = appConfig.getKey(\n \"ADMIN_USER_CAN_CHANGE_EMAIL\",\n process.env.REACT_APP_ADMIN_USER_CAN_CHANGE_EMAIL === \"false\"\n );\n\n const groupValidators = useMemo(() => {\n return teams ? [] : [validation.create(\"required\")];\n }, [teams]);\n\n const accountLink = getLink(Routes.Users.Account);\n\n // Render \"No content\" selected view.\n if (userForm.showEmptyView) {\n return (\n <EmptyView\n icon={<SettingsIcon />}\n title={t`Click on the left side list to display user details or create a...`}\n action={\n <Button\n icon={<AddIcon />}\n text={t`New User`}\n data-testid=\"new-record-button\"\n onClick={userForm.createUser}\n />\n }\n />\n );\n }\n\n const isSelf = userForm.user.id === identity.id;\n const isDisabled = isExternal || isSelf;\n\n return (\n <Form data={userForm.user} onSubmit={userForm.onSubmit}>\n {({ data, form, Bind }) => (\n <SimpleForm size={\"lg\"}>\n {userForm.loading && <OverlayLoader />}\n <div className={\"mb-xl\"}>\n <Bind name=\"avatar\">\n <AvatarImage round disabled={isDisabled} />\n </Bind>\n </div>\n <SimpleFormHeader title={formTitle} />\n <SimpleFormContent>\n {isExternal && (\n <Grid className={\"mb-lg\"}>\n <Grid.Column span={12}>\n <Alert type={\"info\"} title={\"External User\"}>\n This user is an external user and cannot be edited.\n </Alert>\n </Grid.Column>\n </Grid>\n )}\n {isSelf && (\n <Grid className={\"mb-lg\"}>\n <Grid.Column span={12}>\n <Alert type={\"info\"} title={\"Own Profile\"}>\n You cannot edit your own profile using this form. Please use\n the <Link to={accountLink}>account settings</Link> instead.\n </Alert>\n </Grid.Column>\n </Grid>\n )}\n <Accordion variant={\"underline\"}>\n <Accordion.Item\n title={\"Bio\"}\n description={\"Account information\"}\n icon={<SettingsIcon />}\n defaultOpen={true}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind\n name=\"firstName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`First Name`}\n disabled={isDisabled}\n data-testid=\"account.firstname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"lastName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Last Name`}\n disabled={isDisabled}\n data-testid=\"account.lastname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind\n name=\"email\"\n validators={validation.create(\"required,email\")}\n >\n <Input\n value={data.email}\n label={t`Email`}\n disabled={emailIsDisabled || isDisabled}\n data-testid=\"account.email\"\n autoComplete=\"new-password\"\n description={\n \"Email is your unique identifier used to login!\"\n }\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <Bind name=\"password\" validators={passwordValidator}>\n <Input\n autoComplete=\"new-password\"\n disabled={isDisabled}\n description={\n data.id && \"Type a new password to reset it.\"\n }\n type=\"password\"\n label={\"Password\"}\n data-testid=\"account.password\"\n />\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n <Accordion.Item\n title={\"Roles\"}\n description={\"Assign to security roles\"}\n icon={<SecurityIcon />}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name={\"roles\"} validators={groupValidators}>\n {({ value, onChange, validation }) => (\n <RolesMultiAutocomplete\n values={value}\n onChange={onChange}\n validation={validation}\n label={\"Roles\"}\n data-testid=\"roles-autocomplete\"\n disabled={isDisabled}\n />\n )}\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n {teams ? (\n <Accordion.Item\n title={\"Teams\"}\n description={\"Assign to teams\"}\n icon={<SecurityTeamsIcon />}\n >\n <Grid>\n <Grid.Column span={12}>\n <Bind name={\"teams\"}>\n {({ value, onChange, validation }) => (\n <TeamsMultiAutocomplete\n values={value}\n onChange={onChange}\n validation={validation}\n label={\"Teams\"}\n data-testid=\"teams-autocomplete\"\n disabled={isDisabled}\n />\n )}\n </Bind>\n </Grid.Column>\n </Grid>\n </Accordion.Item>\n ) : null}\n </Accordion>\n </SimpleFormContent>\n <SimpleFormFooter data-testid={\"form-footer\"}>\n <Button\n variant={\"secondary\"}\n text={t`Cancel`}\n onClick={userForm.cancelEditing}\n />\n <Button\n variant={\"primary\"}\n text={isNewUser ? t`Create user` : t`Update user`}\n disabled={isDisabled}\n onClick={form.submit}\n />\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n );\n};\n"],"names":["t","i18n","UserForm","teams","identity","useAuthentication","userForm","useUserForm","passwordValidator","usePasswordValidator","getLink","useRouter","isExternal","formTitle","isNewUser","emailIsDisabled","appConfig","process","groupValidators","useMemo","validation","accountLink","Routes","EmptyView","SettingsIcon","Button","AddIcon","isSelf","isDisabled","Form","data","form","Bind","SimpleForm","OverlayLoader","AvatarImage","SimpleFormHeader","SimpleFormContent","Grid","Alert","Link","Accordion","Input","SecurityIcon","value","onChange","RolesMultiAutocomplete","SecurityTeamsIcon","TeamsMultiAutocomplete","SimpleFormFooter"],"mappings":"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"}
@@ -96,7 +96,9 @@ function useUserForm() {
96
96
  user: {
97
97
  ...user,
98
98
  group: user.group ? user.group.id : void 0,
99
- team: user.team ? user.team.id : void 0
99
+ team: user.team ? user.team.id : void 0,
100
+ roles: user.roles ? user.roles.map((r)=>r.id) : [],
101
+ teams: user.teams ? user.teams.map((t)=>t.id) : []
100
102
  },
101
103
  onSubmit,
102
104
  isNewUser: newUser,
@@ -1 +1 @@
1
- {"version":3,"file":"admin/ui/views/Users/hooks/useUserForm.js","sources":["../../../../../../src/admin/ui/views/Users/hooks/useUserForm.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport isEmpty from \"lodash/isEmpty.js\";\nimport { useRoute, useRouter, useWcp } from \"@webiny/app-admin\";\nimport { CREATE_USER, LIST_USERS, READ_USER, UPDATE_USER } from \"~/admin/ui/views/Users/graphql.js\";\nimport omit from \"lodash/omit.js\";\nimport { Routes } from \"~/admin/routes.js\";\nimport { useToast } from \"@webiny/admin-ui\";\n\nexport type UseUserForm = ReturnType<typeof useUserForm>;\n\ninterface SubmitUserCallableParams {\n id?: string;\n firstName: string;\n lastName: string;\n email: string;\n password?: string;\n avatar: {\n src?: string;\n };\n external?: boolean;\n}\n\ninterface SubmitUserCallable {\n (data: SubmitUserCallableParams): Promise<void>;\n}\n\nexport function useUserForm() {\n const { goToRoute } = useRouter();\n const { route } = useRoute(Routes.Users.List);\n const toast = useToast();\n\n const wcp = useWcp();\n const teams = wcp.canUseTeams();\n\n const id = route.params.id;\n const newUser = route.params.new === true;\n\n const { data, loading: userLoading } = useQuery(READ_USER({ teams }), {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.adminUsers.user;\n if (error) {\n goToRoute(Routes.Users.List);\n toast.showWarningToast({\n title: \"Error loading user profile\",\n description: error.message,\n duration: Infinity\n });\n }\n }\n });\n\n const [create, { loading: createLoading }] = useMutation(CREATE_USER, {\n refetchQueries: [{ query: LIST_USERS }]\n });\n\n const [update, { loading: updateLoading }] = useMutation(UPDATE_USER({ teams }), {\n refetchQueries: [{ query: LIST_USERS }]\n });\n\n const loading = userLoading || createLoading || updateLoading;\n\n const onSubmit = useCallback<SubmitUserCallable>(\n async data => {\n const { id, ...rest } = data;\n const [operation, args] = !newUser\n ? [update, { variables: { id, data: omit(rest, [\"external\"]) } }]\n : [create, { variables: { data } }];\n\n const result = await operation(args);\n\n const { data: user, error } = result.data.adminUsers.user;\n\n if (error) {\n toast.showWarningToast({\n title: \"Error updating user profile\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n if (newUser) {\n goToRoute(Routes.Users.List, { id: user.id });\n }\n toast.showSuccessToast({\n title: \"User saved successfully.\"\n });\n },\n [id, newUser]\n );\n\n const user = userLoading ? {} : data ? data.adminUsers.user.data : {};\n\n const showEmptyView = !newUser && !userLoading && isEmpty(user);\n\n return {\n id,\n loading,\n user: {\n ...user,\n group: user.group ? user.group.id : undefined,\n team: user.team ? user.team.id : undefined\n },\n onSubmit,\n isNewUser: newUser,\n fullName: `${user.firstName || \"\"} ${user.lastName || \"\"}`.trim(),\n showEmptyView,\n createUser() {\n goToRoute(Routes.Users.List, { new: true });\n },\n cancelEditing() {\n goToRoute(Routes.Users.List);\n }\n };\n}\n"],"names":["useUserForm","goToRoute","useRouter","route","useRoute","Routes","toast","useToast","wcp","useWcp","teams","id","newUser","data","userLoading","useQuery","READ_USER","error","Infinity","create","createLoading","useMutation","CREATE_USER","LIST_USERS","update","updateLoading","UPDATE_USER","loading","onSubmit","useCallback","rest","operation","args","omit","result","user","showEmptyView","isEmpty","undefined"],"mappings":";;;;;;;;AA2BO,SAASA;IACZ,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,KAAK,CAAC,IAAI;IAC5C,MAAMC,QAAQC;IAEd,MAAMC,MAAMC;IACZ,MAAMC,QAAQF,IAAI,WAAW;IAE7B,MAAMG,KAAKR,MAAM,MAAM,CAAC,EAAE;IAC1B,MAAMS,UAAUT,AAAqB,SAArBA,MAAM,MAAM,CAAC,GAAG;IAEhC,MAAM,EAAEU,IAAI,EAAE,SAASC,WAAW,EAAE,GAAGC,SAASC,UAAU;QAAEN;IAAM,IAAI;QAClE,WAAW;YAAEC;QAAG;QAChB,MAAM,CAACA;QACP,aAAaE,CAAAA;YACT,IAAI,CAACA,MACD;YAGJ,MAAM,EAAEI,KAAK,EAAE,GAAGJ,KAAK,UAAU,CAAC,IAAI;YACtC,IAAII,OAAO;gBACPhB,UAAUI,OAAO,KAAK,CAAC,IAAI;gBAC3BC,MAAM,gBAAgB,CAAC;oBACnB,OAAO;oBACP,aAAaW,MAAM,OAAO;oBAC1B,UAAUC;gBACd;YACJ;QACJ;IACJ;IAEA,MAAM,CAACC,QAAQ,EAAE,SAASC,aAAa,EAAE,CAAC,GAAGC,YAAYC,aAAa;QAClE,gBAAgB;YAAC;gBAAE,OAAOC;YAAW;SAAE;IAC3C;IAEA,MAAM,CAACC,QAAQ,EAAE,SAASC,aAAa,EAAE,CAAC,GAAGJ,YAAYK,YAAY;QAAEhB;IAAM,IAAI;QAC7E,gBAAgB;YAAC;gBAAE,OAAOa;YAAW;SAAE;IAC3C;IAEA,MAAMI,UAAUb,eAAeM,iBAAiBK;IAEhD,MAAMG,WAAWC,YACb,OAAMhB;QACF,MAAM,EAAEF,EAAE,EAAE,GAAGmB,MAAM,GAAGjB;QACxB,MAAM,CAACkB,WAAWC,KAAK,GAAG,AAACpB,UAErB;YAACO;YAAQ;gBAAE,WAAW;oBAAEN;gBAAK;YAAE;SAAE,GADjC;YAACW;YAAQ;gBAAE,WAAW;oBAAEb;oBAAI,MAAMsB,KAAKH,MAAM;wBAAC;qBAAW;gBAAE;YAAE;SAAE;QAGrE,MAAMI,SAAS,MAAMH,UAAUC;QAE/B,MAAM,EAAE,MAAMG,IAAI,EAAElB,KAAK,EAAE,GAAGiB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;QAEzD,IAAIjB,OAAO,YACPX,MAAM,gBAAgB,CAAC;YACnB,OAAO;YACP,aAAaW,MAAM,OAAO;YAC1B,UAAUC;QACd;QAIJ,IAAIN,SACAX,UAAUI,OAAO,KAAK,CAAC,IAAI,EAAE;YAAE,IAAI8B,KAAK,EAAE;QAAC;QAE/C7B,MAAM,gBAAgB,CAAC;YACnB,OAAO;QACX;IACJ,GACA;QAACK;QAAIC;KAAQ;IAGjB,MAAMuB,OAAOrB,cAAc,CAAC,IAAID,OAAOA,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IAEpE,MAAMuB,gBAAgB,CAACxB,WAAW,CAACE,eAAeuB,QAAQF;IAE1D,OAAO;QACHxB;QACAgB;QACA,MAAM;YACF,GAAGQ,IAAI;YACP,OAAOA,KAAK,KAAK,GAAGA,KAAK,KAAK,CAAC,EAAE,GAAGG;YACpC,MAAMH,KAAK,IAAI,GAAGA,KAAK,IAAI,CAAC,EAAE,GAAGG;QACrC;QACAV;QACA,WAAWhB;QACX,UAAU,GAAGuB,KAAK,SAAS,IAAI,GAAG,CAAC,EAAEA,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI;QAC/DC;QACA;YACInC,UAAUI,OAAO,KAAK,CAAC,IAAI,EAAE;gBAAE,KAAK;YAAK;QAC7C;QACA;YACIJ,UAAUI,OAAO,KAAK,CAAC,IAAI;QAC/B;IACJ;AACJ"}
1
+ {"version":3,"file":"admin/ui/views/Users/hooks/useUserForm.js","sources":["../../../../../../src/admin/ui/views/Users/hooks/useUserForm.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useMutation, useQuery } from \"@apollo/react-hooks\";\nimport isEmpty from \"lodash/isEmpty.js\";\nimport { useRoute, useRouter, useWcp } from \"@webiny/app-admin\";\nimport { CREATE_USER, LIST_USERS, READ_USER, UPDATE_USER } from \"~/admin/ui/views/Users/graphql.js\";\nimport omit from \"lodash/omit.js\";\nimport { Routes } from \"~/admin/routes.js\";\nimport { useToast } from \"@webiny/admin-ui\";\n\nexport type UseUserForm = ReturnType<typeof useUserForm>;\n\ninterface SubmitUserCallableParams {\n id?: string;\n firstName: string;\n lastName: string;\n email: string;\n password?: string;\n avatar: {\n src?: string;\n };\n external?: boolean;\n}\n\ninterface SubmitUserCallable {\n (data: SubmitUserCallableParams): Promise<void>;\n}\n\nexport function useUserForm() {\n const { goToRoute } = useRouter();\n const { route } = useRoute(Routes.Users.List);\n const toast = useToast();\n\n const wcp = useWcp();\n const teams = wcp.canUseTeams();\n\n const id = route.params.id;\n const newUser = route.params.new === true;\n\n const { data, loading: userLoading } = useQuery(READ_USER({ teams }), {\n variables: { id },\n skip: !id,\n onCompleted: data => {\n if (!data) {\n return;\n }\n\n const { error } = data.adminUsers.user;\n if (error) {\n goToRoute(Routes.Users.List);\n toast.showWarningToast({\n title: \"Error loading user profile\",\n description: error.message,\n duration: Infinity\n });\n }\n }\n });\n\n const [create, { loading: createLoading }] = useMutation(CREATE_USER, {\n refetchQueries: [{ query: LIST_USERS }]\n });\n\n const [update, { loading: updateLoading }] = useMutation(UPDATE_USER({ teams }), {\n refetchQueries: [{ query: LIST_USERS }]\n });\n\n const loading = userLoading || createLoading || updateLoading;\n\n const onSubmit = useCallback<SubmitUserCallable>(\n async data => {\n const { id, ...rest } = data;\n const [operation, args] = !newUser\n ? [update, { variables: { id, data: omit(rest, [\"external\"]) } }]\n : [create, { variables: { data } }];\n\n const result = await operation(args);\n\n const { data: user, error } = result.data.adminUsers.user;\n\n if (error) {\n toast.showWarningToast({\n title: \"Error updating user profile\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n if (newUser) {\n goToRoute(Routes.Users.List, { id: user.id });\n }\n toast.showSuccessToast({\n title: \"User saved successfully.\"\n });\n },\n [id, newUser]\n );\n\n const user = userLoading ? {} : data ? data.adminUsers.user.data : {};\n\n const showEmptyView = !newUser && !userLoading && isEmpty(user);\n\n return {\n id,\n loading,\n user: {\n ...user,\n group: user.group ? user.group.id : undefined,\n team: user.team ? user.team.id : undefined,\n roles: user.roles ? user.roles.map((r: any) => r.id) : [],\n teams: user.teams ? user.teams.map((t: any) => t.id) : []\n },\n onSubmit,\n isNewUser: newUser,\n fullName: `${user.firstName || \"\"} ${user.lastName || \"\"}`.trim(),\n showEmptyView,\n createUser() {\n goToRoute(Routes.Users.List, { new: true });\n },\n cancelEditing() {\n goToRoute(Routes.Users.List);\n }\n };\n}\n"],"names":["useUserForm","goToRoute","useRouter","route","useRoute","Routes","toast","useToast","wcp","useWcp","teams","id","newUser","data","userLoading","useQuery","READ_USER","error","Infinity","create","createLoading","useMutation","CREATE_USER","LIST_USERS","update","updateLoading","UPDATE_USER","loading","onSubmit","useCallback","rest","operation","args","omit","result","user","showEmptyView","isEmpty","undefined","r","t"],"mappings":"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"}
@@ -14,20 +14,12 @@ class CognitoIdentityProviderImpl {
14
14
  return issuer === this.issuer;
15
15
  }
16
16
  async getIdentity(token) {
17
- const customIdentity = this.config ? await this.config.getIdentity(token) : null;
18
- if (customIdentity) return {
19
- ...customIdentity,
20
- type: "admin",
21
- profile: {
22
- ...customIdentity,
23
- external: false
24
- }
25
- };
17
+ const isFederated = Array.isArray(token.identities) && token.identities.length > 0;
26
18
  const customId = token["custom:id"];
27
19
  const givenName = token["given_name"];
28
20
  const familyName = token["family_name"];
29
21
  const email = token["email"];
30
- return {
22
+ const defaultIdentity = {
31
23
  id: customId || token.sub || "",
32
24
  displayName: `${givenName || ""} ${familyName || ""}`.trim() || email || "Unknown User",
33
25
  type: "admin",
@@ -35,7 +27,19 @@ class CognitoIdentityProviderImpl {
35
27
  email: email || "",
36
28
  firstName: givenName || "",
37
29
  lastName: familyName || "",
38
- external: false
30
+ external: isFederated
31
+ }
32
+ };
33
+ const customIdentity = this.config ? await this.config.getIdentity(token) : null;
34
+ if (!customIdentity) return defaultIdentity;
35
+ return {
36
+ ...defaultIdentity,
37
+ ...customIdentity,
38
+ type: "admin",
39
+ profile: {
40
+ ...defaultIdentity.profile,
41
+ ...customIdentity.profile,
42
+ external: isFederated
39
43
  }
40
44
  };
41
45
  }