@webiny/cognito 6.6.0-alpha.0 → 6.6.0-alpha.1
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/Cognito.d.ts +51 -0
- package/Cognito.js +78 -4
- package/Cognito.js.map +1 -1
- package/admin/Cognito.js +8 -2
- package/admin/Cognito.js.map +1 -1
- package/admin/DefaultCognitoSignInConfig.d.ts +23 -0
- package/admin/DefaultCognitoSignInConfig.js +51 -0
- package/admin/DefaultCognitoSignInConfig.js.map +1 -0
- package/admin/SignInExtension.d.ts +2 -0
- package/admin/SignInExtension.js +9 -0
- package/admin/SignInExtension.js.map +1 -0
- package/admin/index.d.ts +2 -0
- package/admin/index.js +2 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +2 -2
- package/admin/presentation/Cognito/CognitoLoginScreen.js +9 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -1
- package/admin/presentation/Cognito/CognitoPresenter.d.ts +25 -1
- package/admin/presentation/Cognito/CognitoPresenter.js +122 -10
- package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
- package/admin/presentation/Cognito/CognitoSignInConfig.d.ts +31 -0
- package/admin/presentation/Cognito/CognitoSignInConfig.js +5 -0
- package/admin/presentation/Cognito/CognitoSignInConfig.js.map +1 -0
- package/admin/presentation/Cognito/abstractions.d.ts +20 -1
- package/admin/presentation/Cognito/abstractions.js.map +1 -1
- package/admin/presentation/Cognito/components/ConfirmTotpCode.d.ts +26 -0
- package/admin/presentation/Cognito/components/ConfirmTotpCode.js +45 -0
- package/admin/presentation/Cognito/components/ConfirmTotpCode.js.map +1 -0
- package/admin/presentation/Cognito/components/Divider.d.ts +19 -1
- package/admin/presentation/Cognito/components/Divider.js +3 -2
- package/admin/presentation/Cognito/components/Divider.js.map +1 -1
- package/admin/presentation/Cognito/components/FederatedLogin.d.ts +22 -5
- package/admin/presentation/Cognito/components/FederatedLogin.js +19 -6
- package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
- package/admin/presentation/Cognito/components/FooterSignIn.d.ts +20 -3
- package/admin/presentation/Cognito/components/FooterSignIn.js +3 -2
- package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -1
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +19 -1
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +3 -2
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -1
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +19 -1
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +3 -2
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -1
- package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +19 -1
- package/admin/presentation/Cognito/components/RequireNewPassword.js +3 -2
- package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -1
- package/admin/presentation/Cognito/components/SetNewPassword.d.ts +19 -1
- package/admin/presentation/Cognito/components/SetNewPassword.js +3 -2
- package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -1
- package/admin/presentation/Cognito/components/SetupTotp.d.ts +25 -0
- package/admin/presentation/Cognito/components/SetupTotp.js +60 -0
- package/admin/presentation/Cognito/components/SetupTotp.js.map +1 -0
- package/admin/presentation/Cognito/components/SignIn.d.ts +19 -3
- package/admin/presentation/Cognito/components/SignIn.js +14 -7
- package/admin/presentation/Cognito/components/SignIn.js.map +1 -1
- package/admin/presentation/Cognito/components/index.d.ts +292 -0
- package/admin/presentation/Cognito/components/index.js +29 -0
- package/admin/presentation/Cognito/components/index.js.map +1 -0
- package/admin/presentation/Cognito/signInFeature.d.ts +1 -0
- package/admin/presentation/Cognito/signInFeature.js +11 -0
- package/admin/presentation/Cognito/signInFeature.js.map +1 -0
- package/admin/ui/views/Account/Account.js.map +1 -1
- package/admin/ui/views/Users/UsersForm.js +21 -15
- package/admin/ui/views/Users/UsersForm.js.map +1 -1
- package/admin/ui/views/Users/UsersView.js +3 -3
- package/admin/ui/views/Users/UsersView.js.map +1 -1
- package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -1
- package/api/features/CognitoIdp/CognitoIdentityProvider.js +15 -11
- package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -1
- package/api/features/CognitoIdp/abstractions.d.ts +1 -1
- package/api/features/CognitoIdp/abstractions.js.map +1 -1
- package/api/index.d.ts +1 -0
- package/api/index.js +1 -0
- package/index.d.ts +0 -1
- package/index.js +0 -1
- package/infra/CognitoFederationPulumi.d.ts +8 -0
- package/infra/CognitoFederationPulumi.js +17 -0
- package/infra/CognitoFederationPulumi.js.map +1 -0
- package/package.json +23 -21
|
@@ -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: typeof import("./View.js").Error;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/ui/views/Account/Account.js","sources":["../../../../../src/admin/ui/views/Account/Account.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport omit from \"lodash/omit.js\";\nimport { useFeature } from \"@webiny/app\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { AvatarImage } from \"../../components/AvatarImage/index.js\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\nimport { GetCurrentUserFeature } from \"~/admin/features/account/getCurrentUser/index.js\";\nimport { UpdateCurrentUserFeature } from \"~/admin/features/account/updateCurrentUser/index.js\";\n\nimport {\n SimpleForm,\n SimpleFormHeader,\n SimpleFormFooter,\n SimpleFormContent,\n useIdentity\n} from \"@webiny/app-admin\";\nimport { CenteredView } from \"@webiny/app-admin\";\nimport { usePasswordValidator } from \"~/admin/presentation/shared/usePasswordValidator.js\";\nimport { Alert, Button, Grid, Input, OverlayLoader, useToast } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-security-admin-users/account-form\");\n\ninterface UserAccountFormData {\n id?: boolean;\n firstName: string;\n lastName: string;\n email: string;\n password?: string;\n external?: boolean;\n avatar: {\n src?: string;\n };\n}\n\nexport const UserAccountForm = () => {\n const [isSaving, setSaving] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [user, setUser] = useState<Record<string, any>>({});\n const toast = useToast();\n const { identity } = useIdentity();\n const passwordValidator = usePasswordValidator();\n const { useCase: getCurrentUser } = useFeature(GetCurrentUserFeature);\n const { useCase: updateCurrentUser } = useFeature(UpdateCurrentUserFeature);\n\n useEffect(() => {\n getCurrentUser.execute().then(data => {\n setUser(data);\n setIsLoading(false);\n });\n }, []);\n\n const isFormLoading = isSaving || isLoading;\n const loaderMessage = isSaving ? \"Saving account...\" : \"Loading account...\";\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 isExternal = user?.external === true;\n\n const onSubmit = async (formData: UserAccountFormData) => {\n setSaving(true);\n\n try {\n await updateCurrentUser.execute(omit(formData, [\"id\", \"external\"]));\n\n identity.update({\n displayName: `${formData.firstName} ${formData.lastName}`,\n profile: {\n ...(identity.profile || {}),\n firstName: formData.firstName,\n lastName: formData.lastName,\n avatar: formData.avatar\n }\n });\n\n toast.showSuccessToast({ title: \"Account updated successfully!\" });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unknown error\";\n toast.showWarningToast({\n title: \"Error updating user account\",\n description: message,\n duration: Infinity\n });\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <CenteredView maxWidth={600}>\n <Form<UserAccountFormData> data={user} onSubmit={onSubmit}>\n {({ data, form, Bind }) => (\n <SimpleForm>\n {isFormLoading && <OverlayLoader text={loaderMessage} />}\n <SimpleFormHeader title={\"Account\"} />\n <SimpleFormContent>\n {isExternal && (\n <Grid>\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 <Grid>\n <Grid.Column span={12} data-testid={\"avatar\"}>\n <Bind name=\"avatar\">\n <AvatarImage round disabled={isExternal} />\n </Bind>\n </Grid.Column>\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={isExternal}\n data-testid=\"account.firstname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n {\" \"}\n <Bind\n name=\"lastName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Last Name`}\n disabled={isExternal}\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 || isExternal}\n data-testid=\"account.email\"\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=\"off\"\n disabled={data.external}\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 </SimpleFormContent>\n <SimpleFormFooter data-testid={\"form-footer\"}>\n <Button\n disabled={isExternal}\n data-testid=\"account.updatebutton\"\n onClick={form.submit}\n >{t`Update account`}</Button>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n};\n"],"names":["t","i18n","UserAccountForm","isSaving","setSaving","useState","isLoading","setIsLoading","user","setUser","toast","useToast","identity","useIdentity","passwordValidator","usePasswordValidator","getCurrentUser","useFeature","GetCurrentUserFeature","updateCurrentUser","UpdateCurrentUserFeature","useEffect","data","isFormLoading","loaderMessage","emailIsDisabled","appConfig","process","isExternal","onSubmit","formData","omit","error","message","Error","Infinity","CenteredView","Form","form","Bind","SimpleForm","OverlayLoader","SimpleFormHeader","SimpleFormContent","Grid","Alert","AvatarImage","validation","Input","SimpleFormFooter","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin/ui/views/Account/Account.js","sources":["../../../../../src/admin/ui/views/Account/Account.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport omit from \"lodash/omit.js\";\nimport { useFeature } from \"@webiny/app\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { Form } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { AvatarImage } from \"../../components/AvatarImage/index.js\";\nimport { config as appConfig } from \"@webiny/app/config.js\";\nimport { GetCurrentUserFeature } from \"~/admin/features/account/getCurrentUser/index.js\";\nimport { UpdateCurrentUserFeature } from \"~/admin/features/account/updateCurrentUser/index.js\";\n\nimport {\n SimpleForm,\n SimpleFormHeader,\n SimpleFormFooter,\n SimpleFormContent,\n useIdentity\n} from \"@webiny/app-admin\";\nimport { CenteredView } from \"@webiny/app-admin\";\nimport { usePasswordValidator } from \"~/admin/presentation/shared/usePasswordValidator.js\";\nimport { Alert, Button, Grid, Input, OverlayLoader, useToast } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-security-admin-users/account-form\");\n\ninterface UserAccountFormData {\n id?: boolean;\n firstName: string;\n lastName: string;\n email: string;\n password?: string;\n external?: boolean;\n avatar: {\n src?: string;\n };\n}\n\nexport const UserAccountForm = () => {\n const [isSaving, setSaving] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [user, setUser] = useState<Record<string, any>>({});\n const toast = useToast();\n const { identity } = useIdentity();\n const passwordValidator = usePasswordValidator();\n const { useCase: getCurrentUser } = useFeature(GetCurrentUserFeature);\n const { useCase: updateCurrentUser } = useFeature(UpdateCurrentUserFeature);\n\n useEffect(() => {\n getCurrentUser.execute().then(data => {\n setUser(data);\n setIsLoading(false);\n });\n }, []);\n\n const isFormLoading = isSaving || isLoading;\n const loaderMessage = isSaving ? \"Saving account...\" : \"Loading account...\";\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 isExternal = user?.external === true;\n\n const onSubmit = async (formData: UserAccountFormData) => {\n setSaving(true);\n\n try {\n await updateCurrentUser.execute(omit(formData, [\"id\", \"external\"]));\n\n identity.update({\n displayName: `${formData.firstName} ${formData.lastName}`,\n profile: {\n ...(identity.profile || {}),\n firstName: formData.firstName,\n lastName: formData.lastName,\n avatar: formData.avatar\n }\n });\n\n toast.showSuccessToast({ title: \"Account updated successfully!\" });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unknown error\";\n toast.showWarningToast({\n title: \"Error updating user account\",\n description: message,\n duration: Infinity\n });\n } finally {\n setSaving(false);\n }\n };\n\n return (\n <CenteredView maxWidth={600}>\n <Form<UserAccountFormData> data={user} onSubmit={onSubmit}>\n {({ data, form, Bind }) => (\n <SimpleForm>\n {isFormLoading && <OverlayLoader text={loaderMessage} />}\n <SimpleFormHeader title={\"Account\"} />\n <SimpleFormContent>\n {isExternal && (\n <Grid>\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 <Grid>\n <Grid.Column span={12} data-testid={\"avatar\"}>\n <Bind name=\"avatar\">\n <AvatarImage round disabled={isExternal} />\n </Bind>\n </Grid.Column>\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={isExternal}\n data-testid=\"account.firstname\"\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n {\" \"}\n <Bind\n name=\"lastName\"\n validators={validation.create(\"required\")}\n >\n <Input\n label={t`Last Name`}\n disabled={isExternal}\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 || isExternal}\n data-testid=\"account.email\"\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=\"off\"\n disabled={data.external}\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 </SimpleFormContent>\n <SimpleFormFooter data-testid={\"form-footer\"}>\n <Button\n disabled={isExternal}\n data-testid=\"account.updatebutton\"\n onClick={form.submit}\n >{t`Update account`}</Button>\n </SimpleFormFooter>\n </SimpleForm>\n )}\n </Form>\n </CenteredView>\n );\n};\n"],"names":["t","i18n","UserAccountForm","isSaving","setSaving","useState","isLoading","setIsLoading","user","setUser","toast","useToast","identity","useIdentity","passwordValidator","usePasswordValidator","getCurrentUser","useFeature","GetCurrentUserFeature","updateCurrentUser","UpdateCurrentUserFeature","useEffect","data","isFormLoading","loaderMessage","emailIsDisabled","appConfig","process","isExternal","onSubmit","formData","omit","error","message","Error","Infinity","CenteredView","Form","form","Bind","SimpleForm","OverlayLoader","SimpleFormHeader","SimpleFormContent","Grid","Alert","AvatarImage","validation","Input","SimpleFormFooter","Button"],"mappings":"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"}
|
|
@@ -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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
},
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
},
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import react from "react";
|
|
2
|
-
import { LeftPanel, RightPanel, SplitView,
|
|
2
|
+
import { LeftPanel, RightPanel, SplitView, useFeatureFlags } from "@webiny/app-admin";
|
|
3
3
|
import UsersDataList from "./UsersDataList.js";
|
|
4
4
|
import { UserForm } from "./UsersForm.js";
|
|
5
5
|
const UsersView = ()=>{
|
|
6
|
-
const
|
|
7
|
-
const teams =
|
|
6
|
+
const featureFlags = useFeatureFlags();
|
|
7
|
+
const teams = featureFlags.isEnabled("advancedAccessControlLayer.teams");
|
|
8
8
|
return /*#__PURE__*/ react.createElement(SplitView, null, /*#__PURE__*/ react.createElement(LeftPanel, null, /*#__PURE__*/ react.createElement(UsersDataList, null)), /*#__PURE__*/ react.createElement(RightPanel, null, /*#__PURE__*/ react.createElement(UserForm, {
|
|
9
9
|
teams: teams
|
|
10
10
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/ui/views/Users/UsersView.js","sources":["../../../../../src/admin/ui/views/Users/UsersView.tsx"],"sourcesContent":["import React from \"react\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin\";\nimport UsersDataList from \"~/admin/ui/views/Users/UsersDataList.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"admin/ui/views/Users/UsersView.js","sources":["../../../../../src/admin/ui/views/Users/UsersView.tsx"],"sourcesContent":["import React from \"react\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin\";\nimport UsersDataList from \"~/admin/ui/views/Users/UsersDataList.js\";\nimport { useFeatureFlags } from \"@webiny/app-admin\";\nimport { UserForm } from \"./UsersForm.js\";\n\nexport const UsersView = () => {\n const featureFlags = useFeatureFlags();\n\n const teams = featureFlags.isEnabled(\"advancedAccessControlLayer.teams\");\n\n return (\n <SplitView>\n <LeftPanel>\n <UsersDataList />\n </LeftPanel>\n <RightPanel>\n <UserForm teams={teams} />\n </RightPanel>\n </SplitView>\n );\n};\n"],"names":["UsersView","featureFlags","useFeatureFlags","teams","SplitView","LeftPanel","UsersDataList","RightPanel","UserForm"],"mappings":";;;;AAMO,MAAMA,YAAY;IACrB,MAAMC,eAAeC;IAErB,MAAMC,QAAQF,aAAa,SAAS,CAAC;IAErC,OAAO,WAAP,GACI,oBAACG,WAASA,MAAAA,WAAAA,GACN,oBAACC,WAASA,MAAAA,WAAAA,GACN,oBAACC,eAAaA,QAAAA,WAAAA,GAElB,oBAACC,YAAUA,MAAAA,WAAAA,GACP,oBAACC,UAAQA;QAAC,OAAOL;;AAIjC"}
|