@webiny/cognito 6.4.5-beta.0 → 6.6.0-alpha.0

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 (225) hide show
  1. package/Cognito.d.ts +0 -51
  2. package/Cognito.js +4 -78
  3. package/Cognito.js.map +1 -1
  4. package/admin/Cognito.d.ts +3 -1
  5. package/admin/Extension.js +21 -0
  6. package/admin/Extension.js.map +1 -1
  7. package/admin/features/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
  8. package/admin/features/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
  9. package/admin/features/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
  10. package/admin/features/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
  11. package/admin/features/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
  12. package/admin/features/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
  13. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
  14. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
  15. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
  16. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
  17. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
  18. package/admin/features/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
  19. package/admin/features/account/getCurrentUser/abstractions/index.d.ts +6 -0
  20. package/admin/features/account/getCurrentUser/abstractions/index.js +2 -0
  21. package/admin/features/account/getCurrentUser/feature.d.ts +3 -0
  22. package/admin/features/account/getCurrentUser/feature.js +19 -0
  23. package/admin/features/account/getCurrentUser/feature.js.map +1 -0
  24. package/admin/features/account/getCurrentUser/index.d.ts +1 -0
  25. package/admin/features/account/getCurrentUser/index.js +1 -0
  26. package/admin/features/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
  27. package/admin/features/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
  28. package/admin/features/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
  29. package/admin/features/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
  30. package/admin/features/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
  31. package/admin/features/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
  32. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
  33. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
  34. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
  35. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
  36. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
  37. package/admin/features/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
  38. package/admin/features/account/updateCurrentUser/abstractions/index.d.ts +8 -0
  39. package/admin/features/account/updateCurrentUser/abstractions/index.js +2 -0
  40. package/admin/features/account/updateCurrentUser/feature.d.ts +3 -0
  41. package/admin/features/account/updateCurrentUser/feature.js +19 -0
  42. package/admin/features/account/updateCurrentUser/feature.js.map +1 -0
  43. package/admin/features/account/updateCurrentUser/index.d.ts +1 -0
  44. package/admin/features/account/updateCurrentUser/index.js +1 -0
  45. package/admin/features/permissions/feature.d.ts +1 -1
  46. package/admin/features/users/createUser/CreateUserGateway.d.ts +11 -0
  47. package/admin/features/users/createUser/CreateUserGateway.js +49 -0
  48. package/admin/features/users/createUser/CreateUserGateway.js.map +1 -0
  49. package/admin/features/users/createUser/CreateUserUseCase.d.ts +10 -0
  50. package/admin/features/users/createUser/CreateUserUseCase.js +18 -0
  51. package/admin/features/users/createUser/CreateUserUseCase.js.map +1 -0
  52. package/admin/features/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
  53. package/admin/features/users/createUser/abstractions/CreateUserGateway.js +5 -0
  54. package/admin/features/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
  55. package/admin/features/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
  56. package/admin/features/users/createUser/abstractions/CreateUserUseCase.js +5 -0
  57. package/admin/features/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
  58. package/admin/features/users/createUser/abstractions/index.d.ts +2 -0
  59. package/admin/features/users/createUser/abstractions/index.js +2 -0
  60. package/admin/features/users/createUser/feature.d.ts +3 -0
  61. package/admin/features/users/createUser/feature.js +19 -0
  62. package/admin/features/users/createUser/feature.js.map +1 -0
  63. package/admin/features/users/createUser/index.d.ts +2 -0
  64. package/admin/features/users/createUser/index.js +2 -0
  65. package/admin/features/users/deleteUser/DeleteUserGateway.d.ts +11 -0
  66. package/admin/features/users/deleteUser/DeleteUserGateway.js +40 -0
  67. package/admin/features/users/deleteUser/DeleteUserGateway.js.map +1 -0
  68. package/admin/features/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
  69. package/admin/features/users/deleteUser/DeleteUserUseCase.js +18 -0
  70. package/admin/features/users/deleteUser/DeleteUserUseCase.js.map +1 -0
  71. package/admin/features/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
  72. package/admin/features/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
  73. package/admin/features/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
  74. package/admin/features/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
  75. package/admin/features/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
  76. package/admin/features/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
  77. package/admin/features/users/deleteUser/abstractions/index.d.ts +2 -0
  78. package/admin/features/users/deleteUser/abstractions/index.js +2 -0
  79. package/admin/features/users/deleteUser/feature.d.ts +3 -0
  80. package/admin/features/users/deleteUser/feature.js +19 -0
  81. package/admin/features/users/deleteUser/feature.js.map +1 -0
  82. package/admin/features/users/deleteUser/index.d.ts +2 -0
  83. package/admin/features/users/deleteUser/index.js +2 -0
  84. package/admin/features/users/getUser/GetUserGateway.d.ts +11 -0
  85. package/admin/features/users/getUser/GetUserGateway.js +57 -0
  86. package/admin/features/users/getUser/GetUserGateway.js.map +1 -0
  87. package/admin/features/users/getUser/GetUserUseCase.d.ts +10 -0
  88. package/admin/features/users/getUser/GetUserUseCase.js +18 -0
  89. package/admin/features/users/getUser/GetUserUseCase.js.map +1 -0
  90. package/admin/features/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
  91. package/admin/features/users/getUser/abstractions/GetUserGateway.js +5 -0
  92. package/admin/features/users/getUser/abstractions/GetUserGateway.js.map +1 -0
  93. package/admin/features/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
  94. package/admin/features/users/getUser/abstractions/GetUserUseCase.js +5 -0
  95. package/admin/features/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
  96. package/admin/features/users/getUser/abstractions/index.d.ts +2 -0
  97. package/admin/features/users/getUser/abstractions/index.js +2 -0
  98. package/admin/features/users/getUser/feature.d.ts +3 -0
  99. package/admin/features/users/getUser/feature.js +19 -0
  100. package/admin/features/users/getUser/feature.js.map +1 -0
  101. package/admin/features/users/getUser/index.d.ts +2 -0
  102. package/admin/features/users/getUser/index.js +2 -0
  103. package/admin/features/users/listUsers/ListUsersGateway.d.ts +11 -0
  104. package/admin/features/users/listUsers/ListUsersGateway.js +39 -0
  105. package/admin/features/users/listUsers/ListUsersGateway.js.map +1 -0
  106. package/admin/features/users/listUsers/ListUsersUseCase.d.ts +10 -0
  107. package/admin/features/users/listUsers/ListUsersUseCase.js +18 -0
  108. package/admin/features/users/listUsers/ListUsersUseCase.js.map +1 -0
  109. package/admin/features/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
  110. package/admin/features/users/listUsers/abstractions/ListUsersGateway.js +5 -0
  111. package/admin/features/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
  112. package/admin/features/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
  113. package/admin/features/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
  114. package/admin/features/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
  115. package/admin/features/users/listUsers/abstractions/index.d.ts +2 -0
  116. package/admin/features/users/listUsers/abstractions/index.js +2 -0
  117. package/admin/features/users/listUsers/feature.d.ts +3 -0
  118. package/admin/features/users/listUsers/feature.js +19 -0
  119. package/admin/features/users/listUsers/feature.js.map +1 -0
  120. package/admin/features/users/listUsers/index.d.ts +2 -0
  121. package/admin/features/users/listUsers/index.js +2 -0
  122. package/admin/features/users/updateUser/UpdateUserGateway.d.ts +11 -0
  123. package/admin/features/users/updateUser/UpdateUserGateway.js +59 -0
  124. package/admin/features/users/updateUser/UpdateUserGateway.js.map +1 -0
  125. package/admin/features/users/updateUser/UpdateUserUseCase.d.ts +10 -0
  126. package/admin/features/users/updateUser/UpdateUserUseCase.js +18 -0
  127. package/admin/features/users/updateUser/UpdateUserUseCase.js.map +1 -0
  128. package/admin/features/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
  129. package/admin/features/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
  130. package/admin/features/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
  131. package/admin/features/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
  132. package/admin/features/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
  133. package/admin/features/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
  134. package/admin/features/users/updateUser/abstractions/index.d.ts +2 -0
  135. package/admin/features/users/updateUser/abstractions/index.js +2 -0
  136. package/admin/features/users/updateUser/feature.d.ts +3 -0
  137. package/admin/features/users/updateUser/feature.js +19 -0
  138. package/admin/features/users/updateUser/feature.js.map +1 -0
  139. package/admin/features/users/updateUser/index.d.ts +2 -0
  140. package/admin/features/users/updateUser/index.js +2 -0
  141. package/admin/presentation/Cognito/CognitoLoginScreen.js +0 -9
  142. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -1
  143. package/admin/presentation/Cognito/CognitoPresenter.d.ts +1 -25
  144. package/admin/presentation/Cognito/CognitoPresenter.js +10 -122
  145. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
  146. package/admin/presentation/Cognito/abstractions.d.ts +1 -20
  147. package/admin/presentation/Cognito/abstractions.js.map +1 -1
  148. package/admin/presentation/Cognito/components/Divider.d.ts +1 -19
  149. package/admin/presentation/Cognito/components/Divider.js +2 -3
  150. package/admin/presentation/Cognito/components/Divider.js.map +1 -1
  151. package/admin/presentation/Cognito/components/FederatedLogin.d.ts +5 -22
  152. package/admin/presentation/Cognito/components/FederatedLogin.js +6 -19
  153. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
  154. package/admin/presentation/Cognito/components/FooterSignIn.d.ts +3 -20
  155. package/admin/presentation/Cognito/components/FooterSignIn.js +2 -3
  156. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -1
  157. package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +1 -19
  158. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +2 -3
  159. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -1
  160. package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +1 -19
  161. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +2 -3
  162. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -1
  163. package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +1 -19
  164. package/admin/presentation/Cognito/components/RequireNewPassword.js +2 -3
  165. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -1
  166. package/admin/presentation/Cognito/components/SetNewPassword.d.ts +1 -19
  167. package/admin/presentation/Cognito/components/SetNewPassword.js +2 -3
  168. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -1
  169. package/admin/presentation/Cognito/components/SignIn.d.ts +3 -19
  170. package/admin/presentation/Cognito/components/SignIn.js +7 -14
  171. package/admin/presentation/Cognito/components/SignIn.js.map +1 -1
  172. package/admin/presentation/Cognito/components/View.d.ts +1 -1
  173. package/admin/ui/views/Account/Account.js +42 -34
  174. package/admin/ui/views/Account/Account.js.map +1 -1
  175. package/admin/ui/views/Users/UsersDataList.js +44 -26
  176. package/admin/ui/views/Users/UsersDataList.js.map +1 -1
  177. package/admin/ui/views/Users/UsersForm.js +16 -22
  178. package/admin/ui/views/Users/UsersForm.js.map +1 -1
  179. package/admin/ui/views/Users/hooks/useUserForm.d.ts +2 -2
  180. package/admin/ui/views/Users/hooks/useUserForm.js +60 -78
  181. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -1
  182. package/api/features/CognitoIdp/CognitoIdentityProvider.js +11 -15
  183. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -1
  184. package/api/features/CognitoIdp/abstractions.d.ts +1 -1
  185. package/api/features/CognitoIdp/abstractions.js.map +1 -1
  186. package/api/graphql/user.gql.d.ts +2 -2
  187. package/api/graphql/user.gql.js +2 -2
  188. package/api/graphql/user.gql.js.map +1 -1
  189. package/index.d.ts +1 -0
  190. package/index.js +1 -0
  191. package/package.json +18 -23
  192. package/admin/DefaultCognitoSignInConfig.d.ts +0 -23
  193. package/admin/DefaultCognitoSignInConfig.js +0 -51
  194. package/admin/DefaultCognitoSignInConfig.js.map +0 -1
  195. package/admin/SignInExtension.d.ts +0 -2
  196. package/admin/SignInExtension.js +0 -9
  197. package/admin/SignInExtension.js.map +0 -1
  198. package/admin/index.d.ts +0 -2
  199. package/admin/index.js +0 -2
  200. package/admin/presentation/Cognito/CognitoSignInConfig.d.ts +0 -31
  201. package/admin/presentation/Cognito/CognitoSignInConfig.js +0 -5
  202. package/admin/presentation/Cognito/CognitoSignInConfig.js.map +0 -1
  203. package/admin/presentation/Cognito/components/ConfirmTotpCode.d.ts +0 -26
  204. package/admin/presentation/Cognito/components/ConfirmTotpCode.js +0 -45
  205. package/admin/presentation/Cognito/components/ConfirmTotpCode.js.map +0 -1
  206. package/admin/presentation/Cognito/components/SetupTotp.d.ts +0 -25
  207. package/admin/presentation/Cognito/components/SetupTotp.js +0 -60
  208. package/admin/presentation/Cognito/components/SetupTotp.js.map +0 -1
  209. package/admin/presentation/Cognito/components/index.d.ts +0 -292
  210. package/admin/presentation/Cognito/components/index.js +0 -29
  211. package/admin/presentation/Cognito/components/index.js.map +0 -1
  212. package/admin/presentation/Cognito/signInFeature.d.ts +0 -1
  213. package/admin/presentation/Cognito/signInFeature.js +0 -11
  214. package/admin/presentation/Cognito/signInFeature.js.map +0 -1
  215. package/admin/ui/views/Account/graphql.d.ts +0 -2
  216. package/admin/ui/views/Account/graphql.js +0 -41
  217. package/admin/ui/views/Account/graphql.js.map +0 -1
  218. package/admin/ui/views/Users/graphql.d.ts +0 -5
  219. package/admin/ui/views/Users/graphql.js +0 -98
  220. package/admin/ui/views/Users/graphql.js.map +0 -1
  221. package/api/index.d.ts +0 -1
  222. package/api/index.js +0 -1
  223. package/infra/CognitoFederationPulumi.d.ts +0 -8
  224. package/infra/CognitoFederationPulumi.js +0 -17
  225. package/infra/CognitoFederationPulumi.js.map +0 -1
@@ -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 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":";;;;;;;;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;YACjC,OAAOH,KAAK,KAAK,GAAGA,KAAK,KAAK,CAAC,GAAG,CAAC,CAACI,IAAWA,EAAE,EAAE,IAAI,EAAE;YACzD,OAAOJ,KAAK,KAAK,GAAGA,KAAK,KAAK,CAAC,GAAG,CAAC,CAACK,IAAWA,EAAE,EAAE,IAAI,EAAE;QAC7D;QACAZ;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, useEffect, useState } from \"react\";\nimport isEmpty from \"lodash/isEmpty.js\";\nimport omit from \"lodash/omit.js\";\nimport { useFeature } from \"@webiny/app\";\nimport { useRoute, useRouter } from \"@webiny/app-admin\";\nimport { GetUserFeature } from \"~/admin/features/users/getUser/index.js\";\nimport type { IGetUserGatewayResult } from \"~/admin/features/users/getUser/abstractions/GetUserGateway.js\";\nimport { CreateUserFeature } from \"~/admin/features/users/createUser/index.js\";\nimport { UpdateUserFeature } from \"~/admin/features/users/updateUser/index.js\";\nimport { Routes } from \"~/admin/routes.js\";\nimport { useToast } from \"@webiny/admin-ui\";\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 { useCase: getUser } = useFeature(GetUserFeature);\n const { useCase: createUser } = useFeature(CreateUserFeature);\n const { useCase: updateUser } = useFeature(UpdateUserFeature);\n\n const id = route.params.id;\n const newUser = route.params.new === true;\n\n const [user, setUser] = useState<IGetUserGatewayResult | undefined>(undefined);\n const [userLoading, setUserLoading] = useState(false);\n const [mutationLoading, setMutationLoading] = useState(false);\n\n useEffect(() => {\n if (!id) {\n return;\n }\n setUserLoading(true);\n getUser\n .execute({ id })\n .then(data => {\n setUser(data);\n setUserLoading(false);\n })\n .catch(error => {\n goToRoute(Routes.Users.List);\n toast.showWarningToast({\n title: \"Error loading user profile\",\n description: error.message,\n duration: Infinity\n });\n setUserLoading(false);\n });\n }, [id]);\n\n const loading = userLoading || mutationLoading;\n\n const onSubmit = useCallback<SubmitUserCallable>(\n async data => {\n setMutationLoading(true);\n\n try {\n if (newUser) {\n const resultUser = await createUser.execute({ data });\n goToRoute(Routes.Users.List, { id: resultUser.id });\n } else {\n const { id: userId, ...rest } = data;\n await updateUser.execute({\n id: userId as string,\n data: omit(rest, [\"external\"])\n });\n }\n\n toast.showSuccessToast({\n title: \"User saved successfully.\"\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unknown error\";\n toast.showWarningToast({\n title: \"Error updating user profile\",\n description: message,\n duration: Infinity\n });\n } finally {\n setMutationLoading(false);\n }\n },\n [id, newUser]\n );\n\n const showEmptyView = !newUser && !userLoading && isEmpty(user);\n\n return {\n id,\n loading,\n user,\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","getUser","useFeature","GetUserFeature","createUser","CreateUserFeature","updateUser","UpdateUserFeature","id","newUser","user","setUser","useState","undefined","userLoading","setUserLoading","mutationLoading","setMutationLoading","useEffect","data","error","Infinity","loading","onSubmit","useCallback","resultUser","userId","rest","omit","message","Error","showEmptyView","isEmpty"],"mappings":";;;;;;;;;;AA4BO,SAASA;IACZ,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAM,EAAEC,KAAK,EAAE,GAAGC,SAASC,OAAO,KAAK,CAAC,IAAI;IAC5C,MAAMC,QAAQC;IAEd,MAAM,EAAE,SAASC,OAAO,EAAE,GAAGC,WAAWC;IACxC,MAAM,EAAE,SAASC,UAAU,EAAE,GAAGF,WAAWG;IAC3C,MAAM,EAAE,SAASC,UAAU,EAAE,GAAGJ,WAAWK;IAE3C,MAAMC,KAAKZ,MAAM,MAAM,CAAC,EAAE;IAC1B,MAAMa,UAAUb,AAAqB,SAArBA,MAAM,MAAM,CAAC,GAAG;IAEhC,MAAM,CAACc,MAAMC,QAAQ,GAAGC,SAA4CC;IACpE,MAAM,CAACC,aAAaC,eAAe,GAAGH,SAAS;IAC/C,MAAM,CAACI,iBAAiBC,mBAAmB,GAAGL,SAAS;IAEvDM,UAAU;QACN,IAAI,CAACV,IACD;QAEJO,eAAe;QACfd,QACK,OAAO,CAAC;YAAEO;QAAG,GACb,IAAI,CAACW,CAAAA;YACFR,QAAQQ;YACRJ,eAAe;QACnB,GACC,KAAK,CAACK,CAAAA;YACH1B,UAAUI,OAAO,KAAK,CAAC,IAAI;YAC3BC,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaqB,MAAM,OAAO;gBAC1B,UAAUC;YACd;YACAN,eAAe;QACnB;IACR,GAAG;QAACP;KAAG;IAEP,MAAMc,UAAUR,eAAeE;IAE/B,MAAMO,WAAWC,YACb,OAAML;QACFF,mBAAmB;QAEnB,IAAI;YACA,IAAIR,SAAS;gBACT,MAAMgB,aAAa,MAAMrB,WAAW,OAAO,CAAC;oBAAEe;gBAAK;gBACnDzB,UAAUI,OAAO,KAAK,CAAC,IAAI,EAAE;oBAAE,IAAI2B,WAAW,EAAE;gBAAC;YACrD,OAAO;gBACH,MAAM,EAAE,IAAIC,MAAM,EAAE,GAAGC,MAAM,GAAGR;gBAChC,MAAMb,WAAW,OAAO,CAAC;oBACrB,IAAIoB;oBACJ,MAAME,KAAKD,MAAM;wBAAC;qBAAW;gBACjC;YACJ;YAEA5B,MAAM,gBAAgB,CAAC;gBACnB,OAAO;YACX;QACJ,EAAE,OAAOqB,OAAO;YACZ,MAAMS,UAAUT,iBAAiBU,QAAQV,MAAM,OAAO,GAAG;YACzDrB,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAa8B;gBACb,UAAUR;YACd;QACJ,SAAU;YACNJ,mBAAmB;QACvB;IACJ,GACA;QAACT;QAAIC;KAAQ;IAGjB,MAAMsB,gBAAgB,CAACtB,WAAW,CAACK,eAAekB,QAAQtB;IAE1D,OAAO;QACHF;QACAc;QACAZ;QACAa;QACA,WAAWd;QACX,UAAU,GAAGC,MAAM,aAAa,GAAG,CAAC,EAAEA,MAAM,YAAY,IAAI,CAAC,IAAI;QACjEqB;QACA;YACIrC,UAAUI,OAAO,KAAK,CAAC,IAAI,EAAE;gBAAE,KAAK;YAAK;QAC7C;QACA;YACIJ,UAAUI,OAAO,KAAK,CAAC,IAAI;QAC/B;IACJ;AACJ"}
@@ -14,12 +14,20 @@ class CognitoIdentityProviderImpl {
14
14
  return issuer === this.issuer;
15
15
  }
16
16
  async getIdentity(token) {
17
- const isFederated = Array.isArray(token.identities) && token.identities.length > 0;
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
+ };
18
26
  const customId = token["custom:id"];
19
27
  const givenName = token["given_name"];
20
28
  const familyName = token["family_name"];
21
29
  const email = token["email"];
22
- const defaultIdentity = {
30
+ return {
23
31
  id: customId || token.sub || "",
24
32
  displayName: `${givenName || ""} ${familyName || ""}`.trim() || email || "Unknown User",
25
33
  type: "admin",
@@ -27,19 +35,7 @@ class CognitoIdentityProviderImpl {
27
35
  email: email || "",
28
36
  firstName: givenName || "",
29
37
  lastName: familyName || "",
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
38
+ external: false
43
39
  }
44
40
  };
45
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/CognitoIdp/CognitoIdentityProvider.js","sources":["../../../../src/api/features/CognitoIdp/CognitoIdentityProvider.ts"],"sourcesContent":["import { OidcIdentityProvider } from \"@webiny/api-core/idp\";\nimport { CognitoIdpConfig } from \"./abstractions.js\";\n\nclass CognitoIdentityProviderImpl implements OidcIdentityProvider.Interface {\n public clientId: string;\n public issuer: string;\n\n constructor(private config: CognitoIdpConfig.Interface | undefined) {\n const region = String(process.env.COGNITO_REGION);\n const userPoolId = String(process.env.COGNITO_USER_POOL_ID);\n this.clientId = String(process.env.COGNITO_CLIENT_ID);\n this.issuer = `https://cognito-idp.${region}.amazonaws.com/${userPoolId}`;\n }\n\n isApplicable(token: OidcIdentityProvider.JwtPayload) {\n const issuer = token.iss as string;\n if (!issuer) {\n return false;\n }\n\n return issuer === this.issuer;\n }\n\n async getIdentity(\n token: OidcIdentityProvider.JwtPayload\n ): Promise<OidcIdentityProvider.IdentityData> {\n const isFederated = Array.isArray(token.identities) && token.identities.length > 0;\n\n const customId = token[\"custom:id\"] as string | undefined;\n const givenName = token[\"given_name\"] as string | undefined;\n const familyName = token[\"family_name\"] as string | undefined;\n const email = token[\"email\"] as string | undefined;\n\n const defaultIdentity: OidcIdentityProvider.IdentityData = {\n id: customId || token.sub || \"\",\n displayName: `${givenName || \"\"} ${familyName || \"\"}`.trim() || email || \"Unknown User\",\n type: \"admin\",\n profile: {\n email: email || \"\",\n firstName: givenName || \"\",\n lastName: familyName || \"\",\n external: isFederated\n }\n };\n\n const customIdentity = this.config ? await this.config.getIdentity(token) : null;\n\n if (!customIdentity) {\n return defaultIdentity;\n }\n\n return {\n ...defaultIdentity,\n ...customIdentity,\n type: \"admin\",\n profile: {\n ...defaultIdentity.profile,\n ...customIdentity.profile,\n external: isFederated\n }\n };\n }\n\n async verifyTokenClaims(token: OidcIdentityProvider.JwtPayload): Promise<void> {\n if (this.config?.verifyTokenClaims) {\n await this.config.verifyTokenClaims(token);\n }\n }\n}\n\nexport const CognitoIdentityProvider = OidcIdentityProvider.createImplementation({\n implementation: CognitoIdentityProviderImpl,\n dependencies: [[CognitoIdpConfig, { optional: true }]]\n});\n"],"names":["CognitoIdentityProviderImpl","config","region","String","process","userPoolId","token","issuer","isFederated","Array","customId","givenName","familyName","email","defaultIdentity","customIdentity","CognitoIdentityProvider","OidcIdentityProvider","CognitoIdpConfig"],"mappings":";;AAGA,MAAMA;IAIF,YAAoBC,MAA8C,CAAE;aAAhDA,MAAM,GAANA;QAChB,MAAMC,SAASC,OAAOC,QAAQ,GAAG,CAAC,cAAc;QAChD,MAAMC,aAAaF,OAAOC,QAAQ,GAAG,CAAC,oBAAoB;QAC1D,IAAI,CAAC,QAAQ,GAAGD,OAAOC,QAAQ,GAAG,CAAC,iBAAiB;QACpD,IAAI,CAAC,MAAM,GAAG,CAAC,oBAAoB,EAAEF,OAAO,eAAe,EAAEG,YAAY;IAC7E;IAEA,aAAaC,KAAsC,EAAE;QACjD,MAAMC,SAASD,MAAM,GAAG;QACxB,IAAI,CAACC,QACD,OAAO;QAGX,OAAOA,WAAW,IAAI,CAAC,MAAM;IACjC;IAEA,MAAM,YACFD,KAAsC,EACI;QAC1C,MAAME,cAAcC,MAAM,OAAO,CAACH,MAAM,UAAU,KAAKA,MAAM,UAAU,CAAC,MAAM,GAAG;QAEjF,MAAMI,WAAWJ,KAAK,CAAC,YAAY;QACnC,MAAMK,YAAYL,KAAK,CAAC,aAAa;QACrC,MAAMM,aAAaN,KAAK,CAAC,cAAc;QACvC,MAAMO,QAAQP,KAAK,CAAC,QAAQ;QAE5B,MAAMQ,kBAAqD;YACvD,IAAIJ,YAAYJ,MAAM,GAAG,IAAI;YAC7B,aAAa,GAAGK,aAAa,GAAG,CAAC,EAAEC,cAAc,IAAI,CAAC,IAAI,MAAMC,SAAS;YACzE,MAAM;YACN,SAAS;gBACL,OAAOA,SAAS;gBAChB,WAAWF,aAAa;gBACxB,UAAUC,cAAc;gBACxB,UAAUJ;YACd;QACJ;QAEA,MAAMO,iBAAiB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAACT,SAAS;QAE5E,IAAI,CAACS,gBACD,OAAOD;QAGX,OAAO;YACH,GAAGA,eAAe;YAClB,GAAGC,cAAc;YACjB,MAAM;YACN,SAAS;gBACL,GAAGD,gBAAgB,OAAO;gBAC1B,GAAGC,eAAe,OAAO;gBACzB,UAAUP;YACd;QACJ;IACJ;IAEA,MAAM,kBAAkBF,KAAsC,EAAiB;QAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,mBACb,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAACA;IAE5C;AACJ;AAEO,MAAMU,0BAA0BC,qBAAqB,oBAAoB,CAAC;IAC7E,gBAAgBjB;IAChB,cAAc;QAAC;YAACkB;YAAkB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC1D"}
1
+ {"version":3,"file":"api/features/CognitoIdp/CognitoIdentityProvider.js","sources":["../../../../src/api/features/CognitoIdp/CognitoIdentityProvider.ts"],"sourcesContent":["import { OidcIdentityProvider } from \"@webiny/api-core/idp\";\nimport { CognitoIdpConfig } from \"./abstractions.js\";\n\nclass CognitoIdentityProviderImpl implements OidcIdentityProvider.Interface {\n public clientId: string;\n public issuer: string;\n\n constructor(private config: CognitoIdpConfig.Interface | undefined) {\n const region = String(process.env.COGNITO_REGION);\n const userPoolId = String(process.env.COGNITO_USER_POOL_ID);\n this.clientId = String(process.env.COGNITO_CLIENT_ID);\n this.issuer = `https://cognito-idp.${region}.amazonaws.com/${userPoolId}`;\n }\n\n isApplicable(token: OidcIdentityProvider.JwtPayload) {\n const issuer = token.iss as string;\n if (!issuer) {\n return false;\n }\n\n return issuer === this.issuer;\n }\n\n async getIdentity(\n token: OidcIdentityProvider.JwtPayload\n ): Promise<OidcIdentityProvider.IdentityData> {\n const customIdentity = this.config ? await this.config.getIdentity(token) : null;\n\n if (customIdentity) {\n return {\n ...customIdentity,\n type: \"admin\",\n profile: {\n ...customIdentity,\n external: false\n }\n };\n }\n\n // Default identity\n const customId = token[\"custom:id\"] as string | undefined;\n const givenName = token[\"given_name\"] as string | undefined;\n const familyName = token[\"family_name\"] as string | undefined;\n const email = token[\"email\"] as string | undefined;\n\n return {\n id: customId || token.sub || \"\",\n displayName: `${givenName || \"\"} ${familyName || \"\"}`.trim() || email || \"Unknown User\",\n type: \"admin\",\n profile: {\n email: email || \"\",\n firstName: givenName || \"\",\n lastName: familyName || \"\",\n external: false\n }\n };\n }\n\n async verifyTokenClaims(token: OidcIdentityProvider.JwtPayload): Promise<void> {\n if (this.config?.verifyTokenClaims) {\n await this.config.verifyTokenClaims(token);\n }\n }\n}\n\nexport const CognitoIdentityProvider = OidcIdentityProvider.createImplementation({\n implementation: CognitoIdentityProviderImpl,\n dependencies: [[CognitoIdpConfig, { optional: true }]]\n});\n"],"names":["CognitoIdentityProviderImpl","config","region","String","process","userPoolId","token","issuer","customIdentity","customId","givenName","familyName","email","CognitoIdentityProvider","OidcIdentityProvider","CognitoIdpConfig"],"mappings":";;AAGA,MAAMA;IAIF,YAAoBC,MAA8C,CAAE;aAAhDA,MAAM,GAANA;QAChB,MAAMC,SAASC,OAAOC,QAAQ,GAAG,CAAC,cAAc;QAChD,MAAMC,aAAaF,OAAOC,QAAQ,GAAG,CAAC,oBAAoB;QAC1D,IAAI,CAAC,QAAQ,GAAGD,OAAOC,QAAQ,GAAG,CAAC,iBAAiB;QACpD,IAAI,CAAC,MAAM,GAAG,CAAC,oBAAoB,EAAEF,OAAO,eAAe,EAAEG,YAAY;IAC7E;IAEA,aAAaC,KAAsC,EAAE;QACjD,MAAMC,SAASD,MAAM,GAAG;QACxB,IAAI,CAACC,QACD,OAAO;QAGX,OAAOA,WAAW,IAAI,CAAC,MAAM;IACjC;IAEA,MAAM,YACFD,KAAsC,EACI;QAC1C,MAAME,iBAAiB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAACF,SAAS;QAE5E,IAAIE,gBACA,OAAO;YACH,GAAGA,cAAc;YACjB,MAAM;YACN,SAAS;gBACL,GAAGA,cAAc;gBACjB,UAAU;YACd;QACJ;QAIJ,MAAMC,WAAWH,KAAK,CAAC,YAAY;QACnC,MAAMI,YAAYJ,KAAK,CAAC,aAAa;QACrC,MAAMK,aAAaL,KAAK,CAAC,cAAc;QACvC,MAAMM,QAAQN,KAAK,CAAC,QAAQ;QAE5B,OAAO;YACH,IAAIG,YAAYH,MAAM,GAAG,IAAI;YAC7B,aAAa,GAAGI,aAAa,GAAG,CAAC,EAAEC,cAAc,IAAI,CAAC,IAAI,MAAMC,SAAS;YACzE,MAAM;YACN,SAAS;gBACL,OAAOA,SAAS;gBAChB,WAAWF,aAAa;gBACxB,UAAUC,cAAc;gBACxB,UAAU;YACd;QACJ;IACJ;IAEA,MAAM,kBAAkBL,KAAsC,EAAiB;QAC3E,IAAI,IAAI,CAAC,MAAM,EAAE,mBACb,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAACA;IAE5C;AACJ;AAEO,MAAMO,0BAA0BC,qBAAqB,oBAAoB,CAAC;IAC7E,gBAAgBd;IAChB,cAAc;QAAC;YAACe;YAAkB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC1D"}
@@ -1,7 +1,7 @@
1
1
  import type jwt from "jsonwebtoken";
2
2
  import type { IdentityData } from "@webiny/api-core/idp";
3
3
  export type CognitoIdentity = Omit<IdentityData, "type"> & {
4
- profile?: Omit<IdentityData["profile"], "external">;
4
+ profile: Omit<IdentityData["profile"], "external">;
5
5
  };
6
6
  export interface ICognitoIdpConfig {
7
7
  getIdentity(token: jwt.JwtPayload): Promise<CognitoIdentity> | CognitoIdentity;
@@ -1 +1 @@
1
- {"version":3,"file":"api/features/CognitoIdp/abstractions.js","sources":["../../../../src/api/features/CognitoIdp/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type jwt from \"jsonwebtoken\";\nimport type { IdentityData } from \"@webiny/api-core/idp\";\n\nexport type CognitoIdentity = Omit<IdentityData, \"type\"> & {\n profile?: Omit<IdentityData[\"profile\"], \"external\">;\n};\n\nexport interface ICognitoIdpConfig {\n getIdentity(token: jwt.JwtPayload): Promise<CognitoIdentity> | CognitoIdentity;\n verifyTokenClaims?(token: jwt.JwtPayload): Promise<void> | void;\n}\n\nexport const CognitoIdpConfig = createAbstraction<ICognitoIdpConfig>(\"CognitoIdpConfig\");\n\nexport namespace CognitoIdpConfig {\n export type Interface = ICognitoIdpConfig;\n export type IdentityData = CognitoIdentity;\n export type JwtPayload = jwt.JwtPayload;\n}\n"],"names":["CognitoIdpConfig","createAbstraction"],"mappings":";AAaO,MAAMA,mBAAmBC,kBAAqC"}
1
+ {"version":3,"file":"api/features/CognitoIdp/abstractions.js","sources":["../../../../src/api/features/CognitoIdp/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type jwt from \"jsonwebtoken\";\nimport type { IdentityData } from \"@webiny/api-core/idp\";\n\nexport type CognitoIdentity = Omit<IdentityData, \"type\"> & {\n profile: Omit<IdentityData[\"profile\"], \"external\">;\n};\n\nexport interface ICognitoIdpConfig {\n getIdentity(token: jwt.JwtPayload): Promise<CognitoIdentity> | CognitoIdentity;\n verifyTokenClaims?(token: jwt.JwtPayload): Promise<void> | void;\n}\n\nexport const CognitoIdpConfig = createAbstraction<ICognitoIdpConfig>(\"CognitoIdpConfig\");\n\nexport namespace CognitoIdpConfig {\n export type Interface = ICognitoIdpConfig;\n export type IdentityData = CognitoIdentity;\n export type JwtPayload = jwt.JwtPayload;\n}\n"],"names":["CognitoIdpConfig","createAbstraction"],"mappings":";AAaO,MAAMA,mBAAmBC,kBAAqC"}
@@ -1,8 +1,8 @@
1
- import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
2
2
  declare class AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {
3
3
  execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): CoreGraphQLSchemaFactory.Return;
4
4
  }
5
5
  export declare const AdminUsersSchema: typeof AdminUserSchemaImpl & {
6
- __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.core").ICoreGraphQLSchemaFactory>;
7
7
  };
8
8
  export {};
@@ -1,5 +1,5 @@
1
- import { ErrorResponse, NotFoundResponse, Response } from "@webiny/handler-graphql/responses.js";
2
- import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
1
+ import { ErrorResponse, NotFoundResponse, Response } from "@webiny/api-graphql/responses.js";
2
+ import { CoreGraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
3
3
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
4
  import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
5
5
  import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
@@ -1 +1 @@
1
- {"version":3,"file":"api/graphql/user.gql.js","sources":["../../../src/api/graphql/user.gql.ts"],"sourcesContent":["import { ErrorResponse, NotFoundResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/api/features/UpdateUser/index.js\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\n\nclass AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n \"\"\"\n This input type is used by administrators to create other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersCreateInput {\n email: String!\n firstName: String!\n lastName: String!\n password: String!\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by administrators to update other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersUpdateInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by the user who is updating his own account\n \"\"\"\n input AdminUsersCurrentUserInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n }\n\n extend type AdminUsersMutation {\n updateCurrentUser(data: AdminUsersCurrentUserInput!): AdminUsersResponse\n\n createUser(data: AdminUsersCreateInput!): AdminUsersResponse\n\n updateUser(id: ID!, data: AdminUsersUpdateInput!): AdminUsersResponse\n\n deleteUser(id: ID!): AdminUsersBooleanResponse\n }\n `);\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateCurrentUser\",\n dependencies: [IdentityContext, GetUserUseCase, UpdateUserUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n getUserUseCase: GetUserUseCase.Interface,\n updateUserUseCase: UpdateUserUseCase.Interface\n ) => {\n return async ({ args }) => {\n const identity = identityContext.getIdentity();\n if (!identity.isAdmin()) {\n return new NotAuthorizedResponse();\n }\n\n // Current user might not have permissions for `adminUsers`.\n return await identityContext.withoutAuthorization(async () => {\n const getUserResult = await getUserUseCase.execute({ id: identity.id });\n if (getUserResult.isFail()) {\n // TODO: check if current identity belongs to a different tenant.\n // TODO: If so, switch to that other tenant, and update his profile there.\n return new NotFoundResponse(\"User not found!\");\n }\n\n const user = getUserResult.value;\n\n // TODO: UpdateCurrentUser should be a dedicated use case\n const updateResult = await updateUserUseCase.execute(user.id, args.data);\n if (updateResult.isFail()) {\n return new ErrorResponse({\n message: updateResult.error.message,\n code: updateResult.error.code,\n data: updateResult.error.data\n });\n }\n\n return new Response(updateResult.value);\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.createUser\",\n dependencies: [CreateUserUseCase],\n resolver: (createUserUseCase: CreateUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createUserUseCase.execute(args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateUser\",\n dependencies: [UpdateUserUseCase, IdentityContext],\n resolver: (\n updateUserUseCase: UpdateUserUseCase.Interface,\n identityContext: IdentityContext.Interface\n ) => {\n return async ({ args }) => {\n if (args.id === identityContext.getIdentity().id) {\n return new ErrorResponse({\n message:\n \"You're not allowed to update your own account using this API.\",\n code: \"AdminUser/GraphQL/UpdateSelf\"\n });\n }\n\n const result = await updateUserUseCase.execute(args.id, args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.deleteUser\",\n dependencies: [DeleteUserUseCase],\n resolver: (deleteUserUseCase: DeleteUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteUserUseCase.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const AdminUsersSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: AdminUserSchemaImpl,\n dependencies: []\n});\n"],"names":["AdminUserSchemaImpl","builder","IdentityContext","GetUserUseCase","UpdateUserUseCase","identityContext","getUserUseCase","updateUserUseCase","args","identity","NotAuthorizedResponse","getUserResult","NotFoundResponse","user","updateResult","ErrorResponse","Response","CreateUserUseCase","createUserUseCase","result","DeleteUserUseCase","deleteUserUseCase","AdminUsersSchema","CoreGraphQLSchemaFactory"],"mappings":"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"}
1
+ {"version":3,"file":"api/graphql/user.gql.js","sources":["../../../src/api/graphql/user.gql.ts"],"sourcesContent":["import { ErrorResponse, NotFoundResponse, Response } from \"@webiny/api-graphql/responses.js\";\nimport { CoreGraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\nimport { UpdateUserUseCase } from \"~/api/features/UpdateUser/index.js\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\n\nclass AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n \"\"\"\n This input type is used by administrators to create other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersCreateInput {\n email: String!\n firstName: String!\n lastName: String!\n password: String!\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by administrators to update other user's accounts within the same tenant.\n \"\"\"\n input AdminUsersUpdateInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n roles: [RefInput!]\n teams: [RefInput!]\n }\n\n \"\"\"\n This input type is used by the user who is updating his own account\n \"\"\"\n input AdminUsersCurrentUserInput {\n email: String\n firstName: String\n lastName: String\n password: String\n avatar: JSON\n }\n\n extend type AdminUsersMutation {\n updateCurrentUser(data: AdminUsersCurrentUserInput!): AdminUsersResponse\n\n createUser(data: AdminUsersCreateInput!): AdminUsersResponse\n\n updateUser(id: ID!, data: AdminUsersUpdateInput!): AdminUsersResponse\n\n deleteUser(id: ID!): AdminUsersBooleanResponse\n }\n `);\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateCurrentUser\",\n dependencies: [IdentityContext, GetUserUseCase, UpdateUserUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n getUserUseCase: GetUserUseCase.Interface,\n updateUserUseCase: UpdateUserUseCase.Interface\n ) => {\n return async ({ args }) => {\n const identity = identityContext.getIdentity();\n if (!identity.isAdmin()) {\n return new NotAuthorizedResponse();\n }\n\n // Current user might not have permissions for `adminUsers`.\n return await identityContext.withoutAuthorization(async () => {\n const getUserResult = await getUserUseCase.execute({ id: identity.id });\n if (getUserResult.isFail()) {\n // TODO: check if current identity belongs to a different tenant.\n // TODO: If so, switch to that other tenant, and update his profile there.\n return new NotFoundResponse(\"User not found!\");\n }\n\n const user = getUserResult.value;\n\n // TODO: UpdateCurrentUser should be a dedicated use case\n const updateResult = await updateUserUseCase.execute(user.id, args.data);\n if (updateResult.isFail()) {\n return new ErrorResponse({\n message: updateResult.error.message,\n code: updateResult.error.code,\n data: updateResult.error.data\n });\n }\n\n return new Response(updateResult.value);\n });\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.createUser\",\n dependencies: [CreateUserUseCase],\n resolver: (createUserUseCase: CreateUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createUserUseCase.execute(args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.updateUser\",\n dependencies: [UpdateUserUseCase, IdentityContext],\n resolver: (\n updateUserUseCase: UpdateUserUseCase.Interface,\n identityContext: IdentityContext.Interface\n ) => {\n return async ({ args }) => {\n if (args.id === identityContext.getIdentity().id) {\n return new ErrorResponse({\n message:\n \"You're not allowed to update your own account using this API.\",\n code: \"AdminUser/GraphQL/UpdateSelf\"\n });\n }\n\n const result = await updateUserUseCase.execute(args.id, args.data);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code\n });\n }\n\n return new Response(result.value);\n };\n }\n });\n\n builder.addResolver({\n path: \"AdminUsersMutation.deleteUser\",\n dependencies: [DeleteUserUseCase],\n resolver: (deleteUserUseCase: DeleteUserUseCase.Interface) => {\n return async ({ args }) => {\n const result = await deleteUserUseCase.execute(args.id);\n if (result.isFail()) {\n return new ErrorResponse({\n message: result.error.message,\n code: result.error.code,\n data: result.error.data\n });\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport const AdminUsersSchema = CoreGraphQLSchemaFactory.createImplementation({\n implementation: AdminUserSchemaImpl,\n dependencies: []\n});\n"],"names":["AdminUserSchemaImpl","builder","IdentityContext","GetUserUseCase","UpdateUserUseCase","identityContext","getUserUseCase","updateUserUseCase","args","identity","NotAuthorizedResponse","getUserResult","NotFoundResponse","user","updateResult","ErrorResponse","Response","CreateUserUseCase","createUserUseCase","result","DeleteUserUseCase","deleteUserUseCase","AdminUsersSchema","CoreGraphQLSchemaFactory"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { Cognito } from "./Cognito.js";
2
+ export { CognitoIdpConfig } from "./api/features/CognitoIdp/index.js";
package/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export { Cognito } from "./Cognito.js";
2
+ export { CognitoIdpConfig } from "./api/features/CognitoIdp/index.js";
package/package.json CHANGED
@@ -1,35 +1,30 @@
1
1
  {
2
2
  "name": "@webiny/cognito",
3
- "version": "6.4.5-beta.0",
3
+ "version": "6.6.0-alpha.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
7
7
  "exports": {
8
8
  ".": "./index.js",
9
- "./api": "./api/index.js",
10
- "./admin": "./admin/index.js"
9
+ "./*": "./*"
11
10
  },
12
11
  "description": "Security plugins for Cognito",
13
12
  "author": "Webiny Ltd.",
14
13
  "dependencies": {
15
- "@apollo/react-hooks": "3.1.5",
16
- "@webiny/admin-ui": "6.4.5-beta.0",
17
- "@webiny/api-core": "6.4.5-beta.0",
18
- "@webiny/app": "6.4.5-beta.0",
19
- "@webiny/app-admin": "6.4.5-beta.0",
20
- "@webiny/aws-sdk": "6.4.5-beta.0",
21
- "@webiny/di": "1.0.2",
22
- "@webiny/feature": "6.4.5-beta.0",
23
- "@webiny/form": "6.4.5-beta.0",
24
- "@webiny/handler-graphql": "6.4.5-beta.0",
25
- "@webiny/icons": "6.4.5-beta.0",
26
- "@webiny/project": "6.4.5-beta.0",
27
- "@webiny/project-aws": "6.4.5-beta.0",
28
- "@webiny/react-properties": "6.4.5-beta.0",
29
- "@webiny/validation": "6.4.5-beta.0",
30
- "aws-amplify": "6.18.0",
14
+ "@webiny/admin-ui": "6.6.0-alpha.0",
15
+ "@webiny/api-core": "6.6.0-alpha.0",
16
+ "@webiny/api-graphql": "6.6.0-alpha.0",
17
+ "@webiny/app": "6.6.0-alpha.0",
18
+ "@webiny/app-admin": "6.6.0-alpha.0",
19
+ "@webiny/aws-sdk": "6.6.0-alpha.0",
20
+ "@webiny/feature": "6.6.0-alpha.0",
21
+ "@webiny/form": "6.6.0-alpha.0",
22
+ "@webiny/icons": "6.6.0-alpha.0",
23
+ "@webiny/project": "6.6.0-alpha.0",
24
+ "@webiny/project-aws": "6.6.0-alpha.0",
25
+ "@webiny/validation": "6.6.0-alpha.0",
26
+ "aws-amplify": "6.19.0",
31
27
  "graphql": "16.14.2",
32
- "graphql-tag": "2.12.7",
33
28
  "jsonwebtoken": "9.0.3",
34
29
  "lodash": "4.18.1",
35
30
  "mobx": "6.16.1",
@@ -39,9 +34,9 @@
39
34
  },
40
35
  "devDependencies": {
41
36
  "@types/react": "18.3.31",
42
- "@webiny/build-tools": "6.4.5-beta.0",
43
- "@webiny/project-utils": "6.4.5-beta.0",
44
- "@webiny/wcp": "6.4.5-beta.0",
37
+ "@webiny/build-tools": "6.6.0-alpha.0",
38
+ "@webiny/project-utils": "6.6.0-alpha.0",
39
+ "@webiny/wcp": "6.6.0-alpha.0",
45
40
  "vitest": "4.1.10"
46
41
  },
47
42
  "publishConfig": {
@@ -1,23 +0,0 @@
1
- import { BuildParams } from "@webiny/app-admin/features/buildParams/index.js";
2
- import { type ICognitoSignInConfig } from "./presentation/Cognito/CognitoSignInConfig.js";
3
- declare class DefaultCognitoSignInConfigImpl implements ICognitoSignInConfig {
4
- private buildParams;
5
- constructor(buildParams: BuildParams.Interface);
6
- getConfig(): Promise<{
7
- oauth: {
8
- scopes: string[];
9
- redirectSignIn: string[];
10
- redirectSignOut: string[];
11
- responseType: "code" | "token";
12
- };
13
- allowCredentialsLogin: boolean;
14
- providers: {
15
- name: string;
16
- label: string;
17
- }[];
18
- }>;
19
- }
20
- export declare const DefaultCognitoSignInConfig: typeof DefaultCognitoSignInConfigImpl & {
21
- __abstraction: import("@webiny/di").Abstraction<ICognitoSignInConfig>;
22
- };
23
- export {};
@@ -1,51 +0,0 @@
1
- import { BuildParams } from "@webiny/app-admin/features/buildParams/index.js";
2
- import { CognitoSignInConfig } from "./presentation/Cognito/CognitoSignInConfig.js";
3
- class DefaultCognitoSignInConfigImpl {
4
- constructor(buildParams){
5
- this.buildParams = buildParams;
6
- }
7
- async getConfig() {
8
- const config = this.buildParams.get("cognitoFederation");
9
- if (!config) return {
10
- oauth: {
11
- scopes: [
12
- "profile",
13
- "email",
14
- "openid"
15
- ],
16
- redirectSignIn: [
17
- window.location.origin
18
- ],
19
- redirectSignOut: [
20
- window.location.origin
21
- ],
22
- responseType: "code"
23
- },
24
- allowCredentialsLogin: true,
25
- providers: []
26
- };
27
- return {
28
- oauth: {
29
- scopes: [
30
- "profile",
31
- "email",
32
- "openid"
33
- ],
34
- redirectSignIn: config.callbackUrls,
35
- redirectSignOut: config.logoutUrls,
36
- responseType: config.responseType
37
- },
38
- allowCredentialsLogin: config.allowCredentialsLogin,
39
- providers: config.providers
40
- };
41
- }
42
- }
43
- const DefaultCognitoSignInConfig = CognitoSignInConfig.createImplementation({
44
- implementation: DefaultCognitoSignInConfigImpl,
45
- dependencies: [
46
- BuildParams
47
- ]
48
- });
49
- export { DefaultCognitoSignInConfig };
50
-
51
- //# sourceMappingURL=DefaultCognitoSignInConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin/DefaultCognitoSignInConfig.js","sources":["../../src/admin/DefaultCognitoSignInConfig.ts"],"sourcesContent":["import { BuildParams } from \"@webiny/app-admin/features/buildParams/index.js\";\nimport {\n CognitoSignInConfig,\n type ICognitoSignInConfig\n} from \"./presentation/Cognito/CognitoSignInConfig.js\";\n\ninterface FederationBuildParam {\n callbackUrls: string[];\n logoutUrls: string[];\n responseType: \"code\" | \"token\";\n allowCredentialsLogin: boolean;\n providers: { name: string; label: string }[];\n}\n\nclass DefaultCognitoSignInConfigImpl implements ICognitoSignInConfig {\n constructor(private buildParams: BuildParams.Interface) {}\n\n async getConfig() {\n const config = this.buildParams.get<FederationBuildParam>(\"cognitoFederation\");\n\n if (!config) {\n return {\n oauth: {\n scopes: [\"profile\", \"email\", \"openid\"],\n redirectSignIn: [window.location.origin],\n redirectSignOut: [window.location.origin],\n responseType: \"code\" as const\n },\n allowCredentialsLogin: true,\n providers: []\n };\n }\n\n return {\n oauth: {\n scopes: [\"profile\", \"email\", \"openid\"],\n redirectSignIn: config.callbackUrls,\n redirectSignOut: config.logoutUrls,\n responseType: config.responseType\n },\n allowCredentialsLogin: config.allowCredentialsLogin,\n providers: config.providers\n };\n }\n}\n\nexport const DefaultCognitoSignInConfig = CognitoSignInConfig.createImplementation({\n implementation: DefaultCognitoSignInConfigImpl,\n dependencies: [BuildParams]\n});\n"],"names":["DefaultCognitoSignInConfigImpl","buildParams","config","window","DefaultCognitoSignInConfig","CognitoSignInConfig","BuildParams"],"mappings":";;AAcA,MAAMA;IACF,YAAoBC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAEzD,MAAM,YAAY;QACd,MAAMC,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAuB;QAE1D,IAAI,CAACA,QACD,OAAO;YACH,OAAO;gBACH,QAAQ;oBAAC;oBAAW;oBAAS;iBAAS;gBACtC,gBAAgB;oBAACC,OAAO,QAAQ,CAAC,MAAM;iBAAC;gBACxC,iBAAiB;oBAACA,OAAO,QAAQ,CAAC,MAAM;iBAAC;gBACzC,cAAc;YAClB;YACA,uBAAuB;YACvB,WAAW,EAAE;QACjB;QAGJ,OAAO;YACH,OAAO;gBACH,QAAQ;oBAAC;oBAAW;oBAAS;iBAAS;gBACtC,gBAAgBD,OAAO,YAAY;gBACnC,iBAAiBA,OAAO,UAAU;gBAClC,cAAcA,OAAO,YAAY;YACrC;YACA,uBAAuBA,OAAO,qBAAqB;YACnD,WAAWA,OAAO,SAAS;QAC/B;IACJ;AACJ;AAEO,MAAME,6BAA6BC,oBAAoB,oBAAoB,CAAC;IAC/E,gBAAgBL;IAChB,cAAc;QAACM;KAAY;AAC/B"}
@@ -1,2 +0,0 @@
1
- import React from "react";
2
- export declare const SignInExtension: () => React.JSX.Element;
@@ -1,9 +0,0 @@
1
- import react from "react";
2
- import { RegisterFeature } from "@webiny/app-admin";
3
- import { CognitoSignInFeature } from "./presentation/Cognito/signInFeature.js";
4
- const SignInExtension = ()=>/*#__PURE__*/ react.createElement(RegisterFeature, {
5
- feature: CognitoSignInFeature
6
- });
7
- export { SignInExtension };
8
-
9
- //# sourceMappingURL=SignInExtension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin/SignInExtension.js","sources":["../../src/admin/SignInExtension.tsx"],"sourcesContent":["import React from \"react\";\nimport { RegisterFeature } from \"@webiny/app-admin\";\nimport { CognitoSignInFeature } from \"./presentation/Cognito/signInFeature.js\";\n\nexport const SignInExtension = () => {\n return <RegisterFeature feature={CognitoSignInFeature} />;\n};\n"],"names":["SignInExtension","RegisterFeature","CognitoSignInFeature"],"mappings":";;;AAIO,MAAMA,kBAAkB,IACpB,WAAP,GAAO,oBAACC,iBAAeA;QAAC,SAASC"}
package/admin/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { CognitoSignInConfig } from "./presentation/Cognito/CognitoSignInConfig.js";
2
- export { Components as CognitoComponents } from "./presentation/Cognito/components/index.js";
package/admin/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { CognitoSignInConfig } from "./presentation/Cognito/CognitoSignInConfig.js";
2
- export { Components as CognitoComponents } from "./presentation/Cognito/components/index.js";
@@ -1,31 +0,0 @@
1
- import type React from "react";
2
- export interface SignInProps {
3
- signIn: () => void;
4
- }
5
- export type IFederatedProvider = {
6
- name: string;
7
- label: string;
8
- } | {
9
- name: string;
10
- component: React.FC<SignInProps>;
11
- };
12
- export interface ICognitoSignInConfig {
13
- getConfig(): Promise<{
14
- oauth: {
15
- scopes: string[];
16
- redirectSignIn: string[];
17
- redirectSignOut: string[];
18
- responseType: "code" | "token";
19
- };
20
- allowCredentialsLogin: boolean;
21
- providers: IFederatedProvider[];
22
- title?: string;
23
- description?: string;
24
- }>;
25
- }
26
- export declare const CognitoSignInConfig: import("@webiny/di").Abstraction<ICognitoSignInConfig>;
27
- export declare namespace CognitoSignInConfig {
28
- type Interface = ICognitoSignInConfig;
29
- type Config = Awaited<ReturnType<ICognitoSignInConfig["getConfig"]>>;
30
- type FederatedProvider = IFederatedProvider;
31
- }
@@ -1,5 +0,0 @@
1
- import { createAbstraction } from "@webiny/feature/admin";
2
- const CognitoSignInConfig = createAbstraction("CognitoSignInConfig");
3
- export { CognitoSignInConfig };
4
-
5
- //# sourceMappingURL=CognitoSignInConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin/presentation/Cognito/CognitoSignInConfig.js","sources":["../../../../src/admin/presentation/Cognito/CognitoSignInConfig.ts"],"sourcesContent":["import type React from \"react\";\nimport { createAbstraction } from \"@webiny/feature/admin\";\n\nexport interface SignInProps {\n signIn: () => void;\n}\n\nexport type IFederatedProvider =\n | { name: string; label: string }\n | { name: string; component: React.FC<SignInProps> };\n\nexport interface ICognitoSignInConfig {\n getConfig(): Promise<{\n oauth: {\n scopes: string[];\n redirectSignIn: string[];\n redirectSignOut: string[];\n responseType: \"code\" | \"token\";\n };\n allowCredentialsLogin: boolean;\n providers: IFederatedProvider[];\n title?: string;\n description?: string;\n }>;\n}\n\nexport const CognitoSignInConfig = createAbstraction<ICognitoSignInConfig>(\"CognitoSignInConfig\");\n\nexport namespace CognitoSignInConfig {\n export type Interface = ICognitoSignInConfig;\n export type Config = Awaited<ReturnType<ICognitoSignInConfig[\"getConfig\"]>>;\n export type FederatedProvider = IFederatedProvider;\n}\n"],"names":["CognitoSignInConfig","createAbstraction"],"mappings":";AA0BO,MAAMA,sBAAsBC,kBAAwC"}
@@ -1,26 +0,0 @@
1
- import React from "react";
2
- import type { ConfirmTotpCodeVM } from "../../../../admin/presentation/Cognito/abstractions.js";
3
- export interface ConfirmTotpCodeProps {
4
- vm: ConfirmTotpCodeVM;
5
- onSubmit: (code: string) => void;
6
- onCancel: () => void;
7
- }
8
- export declare const ConfirmTotpCode: ((props: ConfirmTotpCodeProps) => React.JSX.Element) & {
9
- original: (props: ConfirmTotpCodeProps) => React.JSX.Element;
10
- originalName: string;
11
- displayName: string;
12
- } & {
13
- original: ((props: ConfirmTotpCodeProps) => React.JSX.Element) & {
14
- original: (props: ConfirmTotpCodeProps) => React.JSX.Element;
15
- originalName: string;
16
- displayName: string;
17
- };
18
- originalName: string;
19
- displayName: string;
20
- } & {
21
- createDecorator: (decorator: import("@webiny/app-admin").ComponentDecorator<((props: ConfirmTotpCodeProps) => React.JSX.Element) & {
22
- original: (props: ConfirmTotpCodeProps) => React.JSX.Element;
23
- originalName: string;
24
- displayName: string;
25
- }>) => (props: unknown) => React.JSX.Element;
26
- };
@@ -1,45 +0,0 @@
1
- import react from "react";
2
- import { Alert, Button, Grid, Input } from "@webiny/admin-ui";
3
- import { makeDecoratable } from "@webiny/app-admin";
4
- import { Bind, Form } from "@webiny/form";
5
- import { validation } from "@webiny/validation";
6
- import { View } from "./View.js";
7
- import { FooterSignIn } from "./FooterSignIn.js";
8
- const ConfirmTotpCode = makeDecoratable("CognitoConfirmTotpCode", (props)=>{
9
- const { vm, onSubmit, onCancel } = props;
10
- return /*#__PURE__*/ react.createElement(View.Container, null, /*#__PURE__*/ react.createElement(Form, {
11
- onSubmit: (data)=>onSubmit(data.code),
12
- submitOnEnter: true
13
- }, ({ submit })=>/*#__PURE__*/ react.createElement(View.Content, null, /*#__PURE__*/ react.createElement(View.Title, {
14
- title: "Two-factor authentication",
15
- description: "Enter the 6-digit code from your authenticator app."
16
- }), vm.message && /*#__PURE__*/ react.createElement("div", {
17
- className: "mb-lg"
18
- }, /*#__PURE__*/ react.createElement(Alert, {
19
- title: vm.message.title,
20
- type: vm.message.type
21
- }, vm.message.text)), /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
22
- span: 12
23
- }, /*#__PURE__*/ react.createElement(Bind, {
24
- name: "code",
25
- validators: validation.create("required")
26
- }, /*#__PURE__*/ react.createElement(Input, {
27
- label: "Verification Code",
28
- autoComplete: "one-time-code",
29
- inputMode: "numeric"
30
- }))), /*#__PURE__*/ react.createElement(Grid.Column, {
31
- span: 12
32
- }, /*#__PURE__*/ react.createElement("div", {
33
- className: "flex items-center justify-between"
34
- }, /*#__PURE__*/ react.createElement(FooterSignIn, {
35
- onSignIn: onCancel
36
- }), /*#__PURE__*/ react.createElement(Button, {
37
- text: "Verify",
38
- onClick: submit,
39
- containerClassName: "ml-auto",
40
- disabled: vm.isLoading
41
- })))))));
42
- });
43
- export { ConfirmTotpCode };
44
-
45
- //# sourceMappingURL=ConfirmTotpCode.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin/presentation/Cognito/components/ConfirmTotpCode.js","sources":["../../../../../src/admin/presentation/Cognito/components/ConfirmTotpCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { Button, Grid, Input, Alert } from \"@webiny/admin-ui\";\nimport { makeDecoratable } from \"@webiny/app-admin\";\nimport { Form, Bind } from \"@webiny/form\";\nimport { validation } from \"@webiny/validation\";\nimport { View } from \"./View.js\";\nimport type { ConfirmTotpCodeVM } from \"~/admin/presentation/Cognito/abstractions.js\";\nimport { FooterSignIn } from \"~/admin/presentation/Cognito/components/FooterSignIn.js\";\n\nexport interface ConfirmTotpCodeProps {\n vm: ConfirmTotpCodeVM;\n onSubmit: (code: string) => void;\n onCancel: () => void;\n}\n\nexport const ConfirmTotpCode = makeDecoratable(\n \"CognitoConfirmTotpCode\",\n (props: ConfirmTotpCodeProps) => {\n const { vm, onSubmit, onCancel } = props;\n\n return (\n <View.Container>\n <Form<{ code: string }> onSubmit={data => onSubmit(data.code)} submitOnEnter>\n {({ submit }) => (\n <View.Content>\n <View.Title\n title={\"Two-factor authentication\"}\n description={\"Enter the 6-digit code from your authenticator app.\"}\n />\n\n {vm.message && (\n <div className={\"mb-lg\"}>\n <Alert title={vm.message.title} type={vm.message.type}>\n {vm.message.text}\n </Alert>\n </div>\n )}\n\n <Grid>\n <Grid.Column span={12}>\n <Bind name=\"code\" validators={validation.create(\"required\")}>\n <Input\n label={\"Verification Code\"}\n autoComplete={\"one-time-code\"}\n inputMode={\"numeric\"}\n />\n </Bind>\n </Grid.Column>\n <Grid.Column span={12}>\n <div className={\"flex items-center justify-between\"}>\n <FooterSignIn onSignIn={onCancel} />\n <Button\n text={\"Verify\"}\n onClick={submit}\n containerClassName={\"ml-auto\"}\n disabled={vm.isLoading}\n />\n </div>\n </Grid.Column>\n </Grid>\n </View.Content>\n )}\n </Form>\n </View.Container>\n );\n }\n);\n"],"names":["ConfirmTotpCode","makeDecoratable","props","vm","onSubmit","onCancel","View","Form","data","submit","Alert","Grid","Bind","validation","Input","FooterSignIn","Button"],"mappings":";;;;;;;AAeO,MAAMA,kBAAkBC,gBAC3B,0BACA,CAACC;IACG,MAAM,EAAEC,EAAE,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGH;IAEnC,OAAO,WAAP,GACI,oBAACI,KAAK,SAAS,sBACX,oBAACC,MAAIA;QAAmB,UAAUC,CAAAA,OAAQJ,SAASI,KAAK,IAAI;QAAG;OAC1D,CAAC,EAAEC,MAAM,EAAE,iBACR,oBAACH,KAAK,OAAO,sBACT,oBAACA,KAAK,KAAK;YACP,OAAO;YACP,aAAa;YAGhBH,GAAG,OAAO,IAAI,WAAJ,GACP,oBAAC;YAAI,WAAW;yBACZ,oBAACO,OAAKA;YAAC,OAAOP,GAAG,OAAO,CAAC,KAAK;YAAE,MAAMA,GAAG,OAAO,CAAC,IAAI;WAChDA,GAAG,OAAO,CAAC,IAAI,kBAK5B,oBAACQ,MAAIA,MAAAA,WAAAA,GACD,oBAACA,KAAK,MAAM;YAAC,MAAM;yBACf,oBAACC,MAAIA;YAAC,MAAK;YAAO,YAAYC,WAAW,MAAM,CAAC;yBAC5C,oBAACC,OAAKA;YACF,OAAO;YACP,cAAc;YACd,WAAW;4BAIvB,oBAACH,KAAK,MAAM;YAAC,MAAM;yBACf,oBAAC;YAAI,WAAW;yBACZ,oBAACI,cAAYA;YAAC,UAAUV;0BACxB,oBAACW,QAAMA;YACH,MAAM;YACN,SAASP;YACT,oBAAoB;YACpB,UAAUN,GAAG,SAAS;;AAU9D"}
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import type { SetupTotpVM } from "../../../../admin/presentation/Cognito/abstractions.js";
3
- export interface SetupTotpProps {
4
- vm: SetupTotpVM;
5
- onSubmit: (code: string) => void;
6
- }
7
- export declare const SetupTotp: ((props: SetupTotpProps) => React.JSX.Element) & {
8
- original: (props: SetupTotpProps) => React.JSX.Element;
9
- originalName: string;
10
- displayName: string;
11
- } & {
12
- original: ((props: SetupTotpProps) => React.JSX.Element) & {
13
- original: (props: SetupTotpProps) => React.JSX.Element;
14
- originalName: string;
15
- displayName: string;
16
- };
17
- originalName: string;
18
- displayName: string;
19
- } & {
20
- createDecorator: (decorator: import("@webiny/app-admin").ComponentDecorator<((props: SetupTotpProps) => React.JSX.Element) & {
21
- original: (props: SetupTotpProps) => React.JSX.Element;
22
- originalName: string;
23
- displayName: string;
24
- }>) => (props: unknown) => React.JSX.Element;
25
- };
@@ -1,60 +0,0 @@
1
- import react from "react";
2
- import { Alert, Button, Grid, Input, Text } from "@webiny/admin-ui";
3
- import { makeDecoratable } from "@webiny/app-admin";
4
- import { Bind, Form } from "@webiny/form";
5
- import { validation } from "@webiny/validation";
6
- import { View } from "./View.js";
7
- const SetupTotp = makeDecoratable("CognitoSetupTotp", (props)=>{
8
- const { vm, onSubmit } = props;
9
- return /*#__PURE__*/ react.createElement(View.Container, null, /*#__PURE__*/ react.createElement(Form, {
10
- onSubmit: (data)=>onSubmit(data.code),
11
- submitOnEnter: true
12
- }, ({ submit })=>/*#__PURE__*/ react.createElement(View.Content, null, /*#__PURE__*/ react.createElement(View.Title, {
13
- title: "Set up two-factor authentication",
14
- description: "Scan the QR code with your authenticator app (Google Authenticator, Authy, etc.), then enter the 6-digit code to verify."
15
- }), vm.message && /*#__PURE__*/ react.createElement("div", {
16
- className: "mb-lg"
17
- }, /*#__PURE__*/ react.createElement(Alert, {
18
- title: vm.message.title,
19
- type: vm.message.type
20
- }, vm.message.text)), /*#__PURE__*/ react.createElement(Grid, null, /*#__PURE__*/ react.createElement(Grid.Column, {
21
- span: 12
22
- }, /*#__PURE__*/ react.createElement("div", {
23
- className: "flex justify-center my-md"
24
- }, /*#__PURE__*/ react.createElement("img", {
25
- src: `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(vm.qrCodeUri)}`,
26
- alt: "TOTP QR Code",
27
- width: 200,
28
- height: 200
29
- }))), /*#__PURE__*/ react.createElement(Grid.Column, {
30
- span: 12
31
- }, /*#__PURE__*/ react.createElement(Text, {
32
- size: "sm",
33
- className: "text-neutral-strong"
34
- }, "Can't scan the code? Enter this key manually:"), /*#__PURE__*/ react.createElement(Text, {
35
- as: "div",
36
- size: "sm",
37
- className: "font-mono mt-xs select-all break-all"
38
- }, vm.sharedSecret)), /*#__PURE__*/ react.createElement(Grid.Column, {
39
- span: 12
40
- }, /*#__PURE__*/ react.createElement(Bind, {
41
- name: "code",
42
- validators: validation.create("required")
43
- }, /*#__PURE__*/ react.createElement(Input, {
44
- label: "Verification Code",
45
- description: "Enter the 6-digit code from your authenticator app.",
46
- autoComplete: "one-time-code",
47
- inputMode: "numeric"
48
- }))), /*#__PURE__*/ react.createElement(Grid.Column, {
49
- span: 12
50
- }, /*#__PURE__*/ react.createElement("div", {
51
- className: "flex justify-end"
52
- }, /*#__PURE__*/ react.createElement(Button, {
53
- text: "Verify & Enable",
54
- onClick: submit,
55
- disabled: vm.isLoading
56
- })))))));
57
- });
58
- export { SetupTotp };
59
-
60
- //# sourceMappingURL=SetupTotp.js.map