@webiny/cognito 0.0.0-unstable.3c5210ad37

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 (214) hide show
  1. package/Cognito.d.ts +8 -0
  2. package/Cognito.js +29 -0
  3. package/Cognito.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +11 -0
  6. package/admin/Cognito.d.ts +6 -0
  7. package/admin/Cognito.js +51 -0
  8. package/admin/Cognito.js.map +1 -0
  9. package/admin/CognitoLogin.d.ts +7 -0
  10. package/admin/CognitoLogin.js +18 -0
  11. package/admin/CognitoLogin.js.map +1 -0
  12. package/admin/Extension.d.ts +2 -0
  13. package/admin/Extension.js +20 -0
  14. package/admin/Extension.js.map +1 -0
  15. package/admin/SecurityPermission.d.ts +2 -0
  16. package/admin/SecurityPermission.js +26 -0
  17. package/admin/SecurityPermission.js.map +1 -0
  18. package/admin/federatedIdentityProviders.d.ts +9 -0
  19. package/admin/federatedIdentityProviders.js +9 -0
  20. package/admin/federatedIdentityProviders.js.map +1 -0
  21. package/admin/plugins/constants.d.ts +3 -0
  22. package/admin/plugins/constants.js +6 -0
  23. package/admin/plugins/constants.js.map +1 -0
  24. package/admin/plugins/userMenu/AccountDetails.d.ts +6 -0
  25. package/admin/plugins/userMenu/AccountDetails.js +23 -0
  26. package/admin/plugins/userMenu/AccountDetails.js.map +1 -0
  27. package/admin/plugins/userMenu/useIsDefaultTenant.d.ts +1 -0
  28. package/admin/plugins/userMenu/useIsDefaultTenant.js +15 -0
  29. package/admin/plugins/userMenu/useIsDefaultTenant.js.map +1 -0
  30. package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +10 -0
  31. package/admin/presentation/Cognito/CognitoLoginScreen.js +54 -0
  32. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -0
  33. package/admin/presentation/Cognito/CognitoPresenter.d.ts +58 -0
  34. package/admin/presentation/Cognito/CognitoPresenter.js +277 -0
  35. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -0
  36. package/admin/presentation/Cognito/abstractions.d.ts +72 -0
  37. package/admin/presentation/Cognito/abstractions.js +4 -0
  38. package/admin/presentation/Cognito/abstractions.js.map +1 -0
  39. package/admin/presentation/Cognito/components/Divider.d.ts +2 -0
  40. package/admin/presentation/Cognito/components/Divider.js +16 -0
  41. package/admin/presentation/Cognito/components/Divider.js.map +1 -0
  42. package/admin/presentation/Cognito/components/FederatedLogin.d.ts +7 -0
  43. package/admin/presentation/Cognito/components/FederatedLogin.js +32 -0
  44. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -0
  45. package/admin/presentation/Cognito/components/FederatedProviders.d.ts +44 -0
  46. package/admin/presentation/Cognito/components/FederatedProviders.js +14 -0
  47. package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -0
  48. package/admin/presentation/Cognito/components/FooterSignIn.d.ts +6 -0
  49. package/admin/presentation/Cognito/components/FooterSignIn.js +15 -0
  50. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -0
  51. package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +9 -0
  52. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +43 -0
  53. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -0
  54. package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +8 -0
  55. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +45 -0
  56. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -0
  57. package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +8 -0
  58. package/admin/presentation/Cognito/components/RequireNewPassword.js +55 -0
  59. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -0
  60. package/admin/presentation/Cognito/components/SetNewPassword.d.ts +8 -0
  61. package/admin/presentation/Cognito/components/SetNewPassword.js +79 -0
  62. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -0
  63. package/admin/presentation/Cognito/components/SignIn.d.ts +10 -0
  64. package/admin/presentation/Cognito/components/SignIn.js +64 -0
  65. package/admin/presentation/Cognito/components/SignIn.js.map +1 -0
  66. package/admin/presentation/Cognito/components/View.d.ts +98 -0
  67. package/admin/presentation/Cognito/components/View.js +67 -0
  68. package/admin/presentation/Cognito/components/View.js.map +1 -0
  69. package/admin/presentation/Cognito/feature.d.ts +3 -0
  70. package/admin/presentation/Cognito/feature.js +16 -0
  71. package/admin/presentation/Cognito/feature.js.map +1 -0
  72. package/admin/presentation/shared/createPasswordValidator.d.ts +8 -0
  73. package/admin/presentation/shared/createPasswordValidator.js +27 -0
  74. package/admin/presentation/shared/createPasswordValidator.js.map +1 -0
  75. package/admin/presentation/shared/usePasswordValidator.d.ts +1 -0
  76. package/admin/presentation/shared/usePasswordValidator.js +15 -0
  77. package/admin/presentation/shared/usePasswordValidator.js.map +1 -0
  78. package/admin/routes.d.ts +10 -0
  79. package/admin/routes.js +21 -0
  80. package/admin/routes.js.map +1 -0
  81. package/admin/ui/UserItem.d.ts +10 -0
  82. package/admin/ui/UserItem.js +3 -0
  83. package/admin/ui/UserItem.js.map +1 -0
  84. package/admin/ui/components/AvatarImage/AvatarImage.d.ts +3 -0
  85. package/admin/ui/components/AvatarImage/AvatarImage.js +43 -0
  86. package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -0
  87. package/admin/ui/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
  88. package/admin/ui/components/AvatarImage/AvatarImagePreview.js +55 -0
  89. package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -0
  90. package/admin/ui/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
  91. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +29 -0
  92. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
  93. package/admin/ui/components/AvatarImage/index.d.ts +1 -0
  94. package/admin/ui/components/AvatarImage/index.js +3 -0
  95. package/admin/ui/components/AvatarImage/index.js.map +1 -0
  96. package/admin/ui/views/Account/Account.d.ts +2 -0
  97. package/admin/ui/views/Account/Account.js +142 -0
  98. package/admin/ui/views/Account/Account.js.map +1 -0
  99. package/admin/ui/views/Account/graphql.d.ts +2 -0
  100. package/admin/ui/views/Account/graphql.js +40 -0
  101. package/admin/ui/views/Account/graphql.js.map +1 -0
  102. package/admin/ui/views/Account/index.d.ts +1 -0
  103. package/admin/ui/views/Account/index.js +3 -0
  104. package/admin/ui/views/Account/index.js.map +1 -0
  105. package/admin/ui/views/Users/UsersDataList.d.ts +3 -0
  106. package/admin/ui/views/Users/UsersDataList.js +172 -0
  107. package/admin/ui/views/Users/UsersDataList.js.map +1 -0
  108. package/admin/ui/views/Users/UsersForm.d.ts +5 -0
  109. package/admin/ui/views/Users/UsersForm.js +174 -0
  110. package/admin/ui/views/Users/UsersForm.js.map +1 -0
  111. package/admin/ui/views/Users/UsersView.d.ts +2 -0
  112. package/admin/ui/views/Users/UsersView.js +14 -0
  113. package/admin/ui/views/Users/UsersView.js.map +1 -0
  114. package/admin/ui/views/Users/components/DeleteAction.d.ts +7 -0
  115. package/admin/ui/views/Users/components/DeleteAction.js +36 -0
  116. package/admin/ui/views/Users/components/DeleteAction.js.map +1 -0
  117. package/admin/ui/views/Users/graphql.d.ts +5 -0
  118. package/admin/ui/views/Users/graphql.js +99 -0
  119. package/admin/ui/views/Users/graphql.js.map +1 -0
  120. package/admin/ui/views/Users/hooks/useUserForm.d.ts +27 -0
  121. package/admin/ui/views/Users/hooks/useUserForm.js +127 -0
  122. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -0
  123. package/admin/ui/views/Users/search.svg +20 -0
  124. package/admin/ui/views/utils.d.ts +3 -0
  125. package/admin/ui/views/utils.js +10 -0
  126. package/admin/ui/views/utils.js.map +1 -0
  127. package/api/CognitoApiFeature.d.ts +1 -0
  128. package/api/CognitoApiFeature.js +28 -0
  129. package/api/CognitoApiFeature.js.map +1 -0
  130. package/api/domain/Username.d.ts +4 -0
  131. package/api/domain/Username.js +7 -0
  132. package/api/domain/Username.js.map +1 -0
  133. package/api/domain/errors.d.ts +37 -0
  134. package/api/domain/errors.js +63 -0
  135. package/api/domain/errors.js.map +1 -0
  136. package/api/features/CognitoIdp/CognitoIdentityProvider.d.ts +15 -0
  137. package/api/features/CognitoIdp/CognitoIdentityProvider.js +61 -0
  138. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -0
  139. package/api/features/CognitoIdp/abstractions.d.ts +15 -0
  140. package/api/features/CognitoIdp/abstractions.js +4 -0
  141. package/api/features/CognitoIdp/abstractions.js.map +1 -0
  142. package/api/features/CognitoIdp/feature.d.ts +1 -0
  143. package/api/features/CognitoIdp/feature.js +10 -0
  144. package/api/features/CognitoIdp/feature.js.map +1 -0
  145. package/api/features/CognitoIdp/index.d.ts +2 -0
  146. package/api/features/CognitoIdp/index.js +4 -0
  147. package/api/features/CognitoIdp/index.js.map +1 -0
  148. package/api/features/CognitoService/CognitoService.d.ts +20 -0
  149. package/api/features/CognitoService/CognitoService.js +90 -0
  150. package/api/features/CognitoService/CognitoService.js.map +1 -0
  151. package/api/features/CognitoService/abstractions.d.ts +54 -0
  152. package/api/features/CognitoService/abstractions.js +8 -0
  153. package/api/features/CognitoService/abstractions.js.map +1 -0
  154. package/api/features/CognitoService/feature.d.ts +5 -0
  155. package/api/features/CognitoService/feature.js +12 -0
  156. package/api/features/CognitoService/feature.js.map +1 -0
  157. package/api/features/CognitoService/index.d.ts +1 -0
  158. package/api/features/CognitoService/index.js +3 -0
  159. package/api/features/CognitoService/index.js.map +1 -0
  160. package/api/features/CreateUser/CreateUserUseCase.d.ts +22 -0
  161. package/api/features/CreateUser/CreateUserUseCase.js +106 -0
  162. package/api/features/CreateUser/CreateUserUseCase.js.map +1 -0
  163. package/api/features/CreateUser/abstractions.d.ts +35 -0
  164. package/api/features/CreateUser/abstractions.js +4 -0
  165. package/api/features/CreateUser/abstractions.js.map +1 -0
  166. package/api/features/CreateUser/feature.d.ts +1 -0
  167. package/api/features/CreateUser/feature.js +10 -0
  168. package/api/features/CreateUser/feature.js.map +1 -0
  169. package/api/features/CreateUser/index.d.ts +2 -0
  170. package/api/features/CreateUser/index.js +4 -0
  171. package/api/features/CreateUser/index.js.map +1 -0
  172. package/api/features/CreateUser/schema.d.ts +47 -0
  173. package/api/features/CreateUser/schema.js +17 -0
  174. package/api/features/CreateUser/schema.js.map +1 -0
  175. package/api/features/DeleteUser/DeleteUserUseCase.d.ts +16 -0
  176. package/api/features/DeleteUser/DeleteUserUseCase.js +54 -0
  177. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -0
  178. package/api/features/DeleteUser/abstractions.d.ts +19 -0
  179. package/api/features/DeleteUser/abstractions.js +4 -0
  180. package/api/features/DeleteUser/abstractions.js.map +1 -0
  181. package/api/features/DeleteUser/feature.d.ts +1 -0
  182. package/api/features/DeleteUser/feature.js +10 -0
  183. package/api/features/DeleteUser/feature.js.map +1 -0
  184. package/api/features/DeleteUser/index.d.ts +2 -0
  185. package/api/features/DeleteUser/index.js +4 -0
  186. package/api/features/DeleteUser/index.js.map +1 -0
  187. package/api/features/UpdateUser/UpdateUserUseCase.d.ts +21 -0
  188. package/api/features/UpdateUser/UpdateUserUseCase.js +88 -0
  189. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -0
  190. package/api/features/UpdateUser/abstractions.d.ts +33 -0
  191. package/api/features/UpdateUser/abstractions.js +4 -0
  192. package/api/features/UpdateUser/abstractions.js.map +1 -0
  193. package/api/features/UpdateUser/feature.d.ts +1 -0
  194. package/api/features/UpdateUser/feature.js +10 -0
  195. package/api/features/UpdateUser/feature.js.map +1 -0
  196. package/api/features/UpdateUser/index.d.ts +2 -0
  197. package/api/features/UpdateUser/index.js +4 -0
  198. package/api/features/UpdateUser/index.js.map +1 -0
  199. package/api/features/UpdateUser/schema.d.ts +44 -0
  200. package/api/features/UpdateUser/schema.js +16 -0
  201. package/api/features/UpdateUser/schema.js.map +1 -0
  202. package/api/features/UserInstaller/UserInstaller.d.ts +27 -0
  203. package/api/features/UserInstaller/UserInstaller.js +48 -0
  204. package/api/features/UserInstaller/UserInstaller.js.map +1 -0
  205. package/api/features/UserInstaller/feature.d.ts +1 -0
  206. package/api/features/UserInstaller/feature.js +10 -0
  207. package/api/features/UserInstaller/feature.js.map +1 -0
  208. package/api/graphql/user.gql.d.ts +8 -0
  209. package/api/graphql/user.gql.js +167 -0
  210. package/api/graphql/user.gql.js.map +1 -0
  211. package/index.d.ts +2 -0
  212. package/index.js +4 -0
  213. package/index.js.map +1 -0
  214. package/package.json +48 -0
@@ -0,0 +1,88 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { UpdateUserUseCase as CoreUpdateUser } from "@webiny/api-core/features/UpdateUser";
3
+ import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
4
+ import { NotAuthorizedError, UserValidationError } from "@webiny/api-core/features/users/shared/errors.js";
5
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
6
+ import { UpdateUserUseCase as UseCaseAbstraction } from "./abstractions.js";
7
+ import { Username } from "../../domain/Username.js";
8
+ import { CognitoUpdateUserError } from "../../domain/errors.js";
9
+ import { updateAdminUserValidation } from "./schema.js";
10
+ import { CognitoService } from "../CognitoService/index.js";
11
+ const defaultUpdateAttributes = {
12
+ family_name: "lastName",
13
+ given_name: "firstName",
14
+ preferred_username: "email"
15
+ };
16
+ class UpdateUserUseCaseImpl {
17
+ constructor(identityContext, cognitoService, updateUserUseCase, getUserUseCase) {
18
+ this.identityContext = identityContext;
19
+ this.cognitoService = cognitoService;
20
+ this.updateUserUseCase = updateUserUseCase;
21
+ this.getUserUseCase = getUserUseCase;
22
+ this.updateAttributes = defaultUpdateAttributes;
23
+ }
24
+ async execute(id, input) {
25
+ const permission = await this.identityContext.getPermission("adminUsers.user");
26
+ if (!permission) {
27
+ return Result.fail(new NotAuthorizedError());
28
+ }
29
+
30
+ // Validate input (including password)
31
+ const validation = updateAdminUserValidation.safeParse(input);
32
+ if (!validation.success) {
33
+ return Result.fail(new UserValidationError(validation.error.errors[0].message));
34
+ }
35
+ const data = validation.data;
36
+ const {
37
+ password,
38
+ ...userDataWithoutPassword
39
+ } = data;
40
+
41
+ // Get original user to know the email before update
42
+ const getUserResult = await this.getUserUseCase.execute({
43
+ id
44
+ });
45
+ if (getUserResult.isFail()) {
46
+ return Result.fail(getUserResult.error);
47
+ }
48
+ const originalUser = getUserResult.value;
49
+
50
+ // Update user in api-core
51
+ const updateUserResult = await this.updateUserUseCase.execute(id, userDataWithoutPassword);
52
+ if (updateUserResult.isFail()) {
53
+ return Result.fail(updateUserResult.error);
54
+ }
55
+ const updatedUser = updateUserResult.value;
56
+
57
+ // Update user in Cognito
58
+ try {
59
+ // Build new attributes
60
+ const attributes = {};
61
+ Object.keys(this.updateAttributes).forEach(attr => {
62
+ const mappedAttr = this.updateAttributes[attr];
63
+ const attrValue = typeof mappedAttr === "function" ? mappedAttr(updatedUser) : updatedUser[mappedAttr];
64
+ attributes[attr] = attrValue;
65
+ });
66
+
67
+ // If email changed, set email_verified to true
68
+ if (originalUser.email !== updatedUser.email) {
69
+ attributes["email_verified"] = "true";
70
+ }
71
+ await this.cognitoService.updateUserAttributes(Username.fromUser(originalUser), attributes);
72
+
73
+ // Update password if provided
74
+ if (password) {
75
+ await this.cognitoService.setPermanentPassword(Username.fromUser(updatedUser), password);
76
+ }
77
+ return Result.ok(updatedUser);
78
+ } catch (cognitoError) {
79
+ return Result.fail(new CognitoUpdateUserError(cognitoError));
80
+ }
81
+ }
82
+ }
83
+ export const UpdateUserUseCase = UseCaseAbstraction.createImplementation({
84
+ implementation: UpdateUserUseCaseImpl,
85
+ dependencies: [IdentityContext, CognitoService, CoreUpdateUser, GetUserUseCase]
86
+ });
87
+
88
+ //# sourceMappingURL=UpdateUserUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Result","UpdateUserUseCase","CoreUpdateUser","GetUserUseCase","NotAuthorizedError","UserValidationError","IdentityContext","UseCaseAbstraction","Username","CognitoUpdateUserError","updateAdminUserValidation","CognitoService","defaultUpdateAttributes","family_name","given_name","preferred_username","UpdateUserUseCaseImpl","constructor","identityContext","cognitoService","updateUserUseCase","getUserUseCase","updateAttributes","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","errors","message","data","password","userDataWithoutPassword","getUserResult","isFail","originalUser","value","updateUserResult","updatedUser","attributes","Object","keys","forEach","attr","mappedAttr","attrValue","email","updateUserAttributes","fromUser","setPermanentPassword","ok","cognitoError","createImplementation","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateUserUseCase as CoreUpdateUser } from \"@webiny/api-core/features/UpdateUser\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/GetUser\";\nimport {\n NotAuthorizedError,\n UserValidationError\n} from \"@webiny/api-core/features/users/shared/errors.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoUpdateUserError } from \"~/api/domain/errors.js\";\nimport { updateAdminUserValidation } from \"./schema.js\";\nimport type { UpdateAdminUserInput } from \"./abstractions.js\";\nimport { CognitoService } from \"~/api/features/CognitoService/index.js\";\n\ntype MappedAttrType = (user: AdminUser) => string | keyof AdminUser;\n\nconst defaultUpdateAttributes = {\n family_name: \"lastName\",\n given_name: \"firstName\",\n preferred_username: \"email\"\n};\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n private updateAttributes: Record<string, string | MappedAttrType>;\n\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private updateUserUseCase: CoreUpdateUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {\n this.updateAttributes = defaultUpdateAttributes;\n }\n\n async execute(\n id: string,\n input: UpdateAdminUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Validate input (including password)\n const validation = updateAdminUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.errors[0].message));\n }\n\n const data = validation.data;\n const { password, ...userDataWithoutPassword } = data;\n\n // Get original user to know the email before update\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // Update user in api-core\n const updateUserResult = await this.updateUserUseCase.execute(id, userDataWithoutPassword);\n if (updateUserResult.isFail()) {\n return Result.fail(updateUserResult.error);\n }\n\n const updatedUser = updateUserResult.value;\n\n // Update user in Cognito\n try {\n // Build new attributes\n const attributes: Record<string, string> = {};\n\n Object.keys(this.updateAttributes).forEach(attr => {\n const mappedAttr = this.updateAttributes[\n attr as keyof typeof this.updateAttributes\n ] as MappedAttrType;\n const attrValue =\n typeof mappedAttr === \"function\"\n ? mappedAttr(updatedUser)\n : updatedUser[mappedAttr];\n attributes[attr] = attrValue;\n });\n\n // If email changed, set email_verified to true\n if (originalUser.email !== updatedUser.email) {\n attributes[\"email_verified\"] = \"true\";\n }\n\n await this.cognitoService.updateUserAttributes(\n Username.fromUser(originalUser),\n attributes\n );\n\n // Update password if provided\n if (password) {\n await this.cognitoService.setPermanentPassword(\n Username.fromUser(updatedUser),\n password\n );\n }\n\n return Result.ok(updatedUser);\n } catch (cognitoError) {\n return Result.fail(new CognitoUpdateUserError(cognitoError as Error));\n }\n }\n}\n\nexport const UpdateUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreUpdateUser, GetUserUseCase]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import type { Result } from "@webiny/feature/api";
2
+ import type { AdminUser } from "@webiny/api-core/types/users.js";
3
+ import type { NotAuthorizedError, EmailTakenError, UserValidationError } from "@webiny/api-core/features/users/shared/errors.js";
4
+ import { UpdateUserUseCase as CoreUpdateUserUseCase } from "@webiny/api-core/features/users/UpdateUser/index.js";
5
+ import type { CognitoUpdateUserError } from "../../../api/domain/errors.js";
6
+ export interface UpdateAdminUserInput {
7
+ displayName?: string;
8
+ email?: string;
9
+ firstName?: string;
10
+ lastName?: string;
11
+ password?: string;
12
+ avatar?: Record<string, any> | null;
13
+ roles?: string[];
14
+ teams?: string[];
15
+ }
16
+ export interface IUpdateUserUseCaseErrors {
17
+ authorization: NotAuthorizedError;
18
+ validation: UserValidationError;
19
+ emailTaken: EmailTakenError;
20
+ updateAdminUser: CoreUpdateUserUseCase.Error;
21
+ cognitoUpdateUser: CognitoUpdateUserError;
22
+ }
23
+ type IUpdateAdminUserError = IUpdateUserUseCaseErrors[keyof IUpdateUserUseCaseErrors];
24
+ export interface IUpdateUserUseCase {
25
+ execute(id: string, input: UpdateAdminUserInput): Promise<Result<AdminUser, IUpdateAdminUserError>>;
26
+ }
27
+ export declare const UpdateUserUseCase: import("@webiny/di").Abstraction<IUpdateUserUseCase>;
28
+ export declare namespace UpdateUserUseCase {
29
+ type Interface = IUpdateUserUseCase;
30
+ type Input = UpdateAdminUserInput;
31
+ type Error = IUpdateAdminUserError;
32
+ }
33
+ export {};
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ export const UpdateUserUseCase = createAbstraction("UpdateUserUseCase");
3
+
4
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport type {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"@webiny/api-core/features/users/shared/errors.js\";\nimport { UpdateUserUseCase as CoreUpdateUserUseCase } from \"@webiny/api-core/features/users/UpdateUser/index.js\";\nimport type { CognitoUpdateUserError } from \"~/api/domain/errors.js\";\n\nexport interface UpdateAdminUserInput {\n displayName?: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n password?: string;\n avatar?: Record<string, any> | null;\n roles?: string[];\n teams?: string[];\n}\n\nexport interface IUpdateUserUseCaseErrors {\n authorization: NotAuthorizedError;\n validation: UserValidationError;\n emailTaken: EmailTakenError;\n updateAdminUser: CoreUpdateUserUseCase.Error;\n cognitoUpdateUser: CognitoUpdateUserError;\n}\n\ntype IUpdateAdminUserError = IUpdateUserUseCaseErrors[keyof IUpdateUserUseCaseErrors];\n\nexport interface IUpdateUserUseCase {\n execute(\n id: string,\n input: UpdateAdminUserInput\n ): Promise<Result<AdminUser, IUpdateAdminUserError>>;\n}\n\nexport const UpdateUserUseCase = createAbstraction<IUpdateUserUseCase>(\"UpdateUserUseCase\");\n\nexport namespace UpdateUserUseCase {\n export type Interface = IUpdateUserUseCase;\n export type Input = UpdateAdminUserInput;\n export type Error = IUpdateAdminUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAuCvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const UpdateUserFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { UpdateUserUseCase } from "./UpdateUserUseCase.js";
3
+ export const UpdateUserFeature = createFeature({
4
+ name: "UpdateUserFeature",
5
+ register(container) {
6
+ container.register(UpdateUserUseCase);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","UpdateUserUseCase","UpdateUserFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UpdateUserUseCase } from \"./UpdateUserUseCase.js\";\n\nexport const UpdateUserFeature = createFeature({\n name: \"UpdateUserFeature\",\n register(container) {\n container.register(UpdateUserUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,iBAAiB,GAAGF,aAAa,CAAC;EAC3CG,IAAI,EAAE,mBAAmB;EACzBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,iBAAiB,CAAC;EACzC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./abstractions.js";
2
+ export * from "./feature.js";
@@ -0,0 +1,4 @@
1
+ export * from "./abstractions.js";
2
+ export * from "./feature.js";
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./abstractions.js\";\nexport * from \"./feature.js\";\n"],"mappings":"AAAA;AACA","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ export declare const updateAdminUserValidation: z.ZodObject<{
3
+ displayName: z.ZodOptional<z.ZodString>;
4
+ email: z.ZodOptional<z.ZodString>;
5
+ firstName: z.ZodOptional<z.ZodString>;
6
+ lastName: z.ZodOptional<z.ZodString>;
7
+ password: z.ZodOptional<z.ZodString>;
8
+ avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
9
+ id: z.ZodString;
10
+ src: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ src: string;
13
+ id: string;
14
+ }, {
15
+ src: string;
16
+ id: string;
17
+ }>>>;
18
+ roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
19
+ teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ displayName?: string | undefined;
22
+ roles?: string[] | undefined;
23
+ teams?: string[] | undefined;
24
+ firstName?: string | undefined;
25
+ lastName?: string | undefined;
26
+ email?: string | undefined;
27
+ avatar?: {
28
+ src: string;
29
+ id: string;
30
+ } | null | undefined;
31
+ password?: string | undefined;
32
+ }, {
33
+ displayName?: string | undefined;
34
+ roles?: string[] | undefined;
35
+ teams?: string[] | undefined;
36
+ firstName?: string | undefined;
37
+ lastName?: string | undefined;
38
+ email?: string | undefined;
39
+ avatar?: {
40
+ src: string;
41
+ id: string;
42
+ } | null | undefined;
43
+ password?: string | undefined;
44
+ }>;
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ export const updateAdminUserValidation = z.object({
3
+ displayName: z.string().min(1).optional(),
4
+ email: z.string().email().optional(),
5
+ firstName: z.string().optional(),
6
+ lastName: z.string().optional(),
7
+ password: z.string().min(8).optional(),
8
+ avatar: z.object({
9
+ id: z.string().min(1),
10
+ src: z.string().url()
11
+ }).optional().nullable(),
12
+ roles: z.array(z.string()).optional(),
13
+ teams: z.array(z.string()).optional()
14
+ });
15
+
16
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["z","updateAdminUserValidation","object","displayName","string","min","optional","email","firstName","lastName","password","avatar","id","src","url","nullable","roles","array","teams"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const updateAdminUserValidation = z.object({\n displayName: z.string().min(1).optional(),\n email: z.string().email().optional(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n password: z.string().min(8).optional(),\n avatar: z\n .object({\n id: z.string().min(1),\n src: z.string().url()\n })\n .optional()\n .nullable(),\n roles: z.array(z.string()).optional(),\n teams: z.array(z.string()).optional()\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,yBAAyB,GAAGD,CAAC,CAACE,MAAM,CAAC;EAC9CC,WAAW,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EACzCC,KAAK,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACG,KAAK,CAAC,CAAC,CAACD,QAAQ,CAAC,CAAC;EACpCE,SAAS,EAAER,CAAC,CAACI,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EAChCG,QAAQ,EAAET,CAAC,CAACI,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EAC/BI,QAAQ,EAAEV,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EACtCK,MAAM,EAAEX,CAAC,CACJE,MAAM,CAAC;IACJU,EAAE,EAAEZ,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;IACrBQ,GAAG,EAAEb,CAAC,CAACI,MAAM,CAAC,CAAC,CAACU,GAAG,CAAC;EACxB,CAAC,CAAC,CACDR,QAAQ,CAAC,CAAC,CACVS,QAAQ,CAAC,CAAC;EACfC,KAAK,EAAEhB,CAAC,CAACiB,KAAK,CAACjB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EACrCY,KAAK,EAAElB,CAAC,CAACiB,KAAK,CAACjB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC;AACxC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ import type { Tenant } from "@webiny/api-core/types/tenancy.js";
2
+ import { AppInstaller } from "@webiny/api-core/features/InstallTenant";
3
+ import { GetRoleUseCase } from "@webiny/api-core/features/GetRole";
4
+ import { DeleteUserUseCase } from "../../../api/features/DeleteUser/index.js";
5
+ import { CreateUserUseCase } from "../../../api/features/CreateUser/index.js";
6
+ interface UserInstallationData {
7
+ firstName: string;
8
+ lastName: string;
9
+ email: string;
10
+ password: string;
11
+ }
12
+ declare class UsersInstallerImpl implements AppInstaller.Interface<UserInstallationData> {
13
+ private getRole;
14
+ private createUserUseCase;
15
+ private deleteUserUseCase;
16
+ readonly alwaysRun = false;
17
+ readonly appName = "Cognito";
18
+ readonly dependsOn: string[];
19
+ private createdUser;
20
+ constructor(getRole: GetRoleUseCase.Interface, createUserUseCase: CreateUserUseCase.Interface, deleteUserUseCase: DeleteUserUseCase.Interface);
21
+ install(_: Tenant, data: UserInstallationData): Promise<void>;
22
+ uninstall(): Promise<void>;
23
+ }
24
+ export declare const UserInstaller: typeof UsersInstallerImpl & {
25
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/tenancy/InstallTenant/abstractions").IAppInstaller<Record<string, any>>>;
26
+ };
27
+ export {};
@@ -0,0 +1,48 @@
1
+ import { AppInstaller } from "@webiny/api-core/features/InstallTenant";
2
+ import { GetRoleUseCase } from "@webiny/api-core/features/GetRole";
3
+ import { DeleteUserUseCase } from "../DeleteUser/index.js";
4
+ import { CreateUserUseCase } from "../CreateUser/index.js";
5
+ class UsersInstallerImpl {
6
+ alwaysRun = false;
7
+ appName = "Cognito";
8
+ dependsOn = ["Security"];
9
+ constructor(getRole, createUserUseCase, deleteUserUseCase) {
10
+ this.getRole = getRole;
11
+ this.createUserUseCase = createUserUseCase;
12
+ this.deleteUserUseCase = deleteUserUseCase;
13
+ }
14
+ async install(_, data) {
15
+ // Load `full-access` role and assign it to the new user
16
+ const roleResult = await this.getRole.execute({
17
+ slug: "full-access"
18
+ });
19
+ if (roleResult.isFail()) {
20
+ throw new Error(`Failed to get full-access role: ${roleResult.error.message}`);
21
+ }
22
+ const role = roleResult.value;
23
+
24
+ // Create user with displayName and full-access role
25
+ const userWithDisplayName = {
26
+ ...data,
27
+ displayName: `${data.firstName} ${data.lastName}`,
28
+ roles: [role.id],
29
+ teams: []
30
+ };
31
+ const createResult = await this.createUserUseCase.execute(userWithDisplayName);
32
+ if (createResult.isFail()) {
33
+ throw new Error(`Failed to create admin user: ${createResult.error.message}`);
34
+ }
35
+ this.createdUser = createResult.value;
36
+ }
37
+ async uninstall() {
38
+ if (this.createdUser) {
39
+ await this.deleteUserUseCase.execute(this.createdUser.id);
40
+ }
41
+ }
42
+ }
43
+ export const UserInstaller = AppInstaller.createImplementation({
44
+ implementation: UsersInstallerImpl,
45
+ dependencies: [GetRoleUseCase, CreateUserUseCase, DeleteUserUseCase]
46
+ });
47
+
48
+ //# sourceMappingURL=UserInstaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AppInstaller","GetRoleUseCase","DeleteUserUseCase","CreateUserUseCase","UsersInstallerImpl","alwaysRun","appName","dependsOn","constructor","getRole","createUserUseCase","deleteUserUseCase","install","_","data","roleResult","execute","slug","isFail","Error","error","message","role","value","userWithDisplayName","displayName","firstName","lastName","roles","id","teams","createResult","createdUser","uninstall","UserInstaller","createImplementation","implementation","dependencies"],"sources":["UserInstaller.ts"],"sourcesContent":["import type { Tenant } from \"@webiny/api-core/types/tenancy.js\";\nimport type { AdminUser } from \"@webiny/api-core/types/users.js\";\nimport { AppInstaller } from \"@webiny/api-core/features/InstallTenant\";\nimport { GetRoleUseCase } from \"@webiny/api-core/features/GetRole\";\nimport { DeleteUserUseCase } from \"~/api/features/DeleteUser/index.js\";\nimport { CreateUserUseCase } from \"~/api/features/CreateUser/index.js\";\n\ninterface UserInstallationData {\n firstName: string;\n lastName: string;\n email: string;\n password: string;\n}\n\nclass UsersInstallerImpl implements AppInstaller.Interface<UserInstallationData> {\n readonly alwaysRun = false;\n readonly appName = \"Cognito\";\n readonly dependsOn = [\"Security\"];\n private createdUser: AdminUser | undefined;\n\n constructor(\n private getRole: GetRoleUseCase.Interface,\n private createUserUseCase: CreateUserUseCase.Interface,\n private deleteUserUseCase: DeleteUserUseCase.Interface\n ) {}\n\n async install(_: Tenant, data: UserInstallationData): Promise<void> {\n // Load `full-access` role and assign it to the new user\n const roleResult = await this.getRole.execute({ slug: \"full-access\" });\n if (roleResult.isFail()) {\n throw new Error(`Failed to get full-access role: ${roleResult.error.message}`);\n }\n\n const role = roleResult.value;\n\n // Create user with displayName and full-access role\n const userWithDisplayName: CreateUserUseCase.Input = {\n ...data,\n displayName: `${data.firstName} ${data.lastName}`,\n roles: [role.id],\n teams: []\n };\n\n const createResult = await this.createUserUseCase.execute(userWithDisplayName);\n if (createResult.isFail()) {\n throw new Error(`Failed to create admin user: ${createResult.error.message}`);\n }\n\n this.createdUser = createResult.value;\n }\n\n async uninstall(): Promise<void> {\n if (this.createdUser) {\n await this.deleteUserUseCase.execute(this.createdUser.id);\n }\n }\n}\n\nexport const UserInstaller = AppInstaller.createImplementation({\n implementation: UsersInstallerImpl,\n dependencies: [GetRoleUseCase, CreateUserUseCase, DeleteUserUseCase]\n});\n"],"mappings":"AAEA,SAASA,YAAY,QAAQ,yCAAyC;AACtE,SAASC,cAAc,QAAQ,mCAAmC;AAClE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAS1B,MAAMC,kBAAkB,CAAyD;EACpEC,SAAS,GAAG,KAAK;EACjBC,OAAO,GAAG,SAAS;EACnBC,SAAS,GAAG,CAAC,UAAU,CAAC;EAGjCC,WAAWA,CACCC,OAAiC,EACjCC,iBAA8C,EAC9CC,iBAA8C,EACxD;IAAA,KAHUF,OAAiC,GAAjCA,OAAiC;IAAA,KACjCC,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,iBAA8C,GAA9CA,iBAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,CAAS,EAAEC,IAA0B,EAAiB;IAChE;IACA,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,OAAO,CAACO,OAAO,CAAC;MAAEC,IAAI,EAAE;IAAc,CAAC,CAAC;IACtE,IAAIF,UAAU,CAACG,MAAM,CAAC,CAAC,EAAE;MACrB,MAAM,IAAIC,KAAK,CAAC,mCAAmCJ,UAAU,CAACK,KAAK,CAACC,OAAO,EAAE,CAAC;IAClF;IAEA,MAAMC,IAAI,GAAGP,UAAU,CAACQ,KAAK;;IAE7B;IACA,MAAMC,mBAA4C,GAAG;MACjD,GAAGV,IAAI;MACPW,WAAW,EAAE,GAAGX,IAAI,CAACY,SAAS,IAAIZ,IAAI,CAACa,QAAQ,EAAE;MACjDC,KAAK,EAAE,CAACN,IAAI,CAACO,EAAE,CAAC;MAChBC,KAAK,EAAE;IACX,CAAC;IAED,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACrB,iBAAiB,CAACM,OAAO,CAACQ,mBAAmB,CAAC;IAC9E,IAAIO,YAAY,CAACb,MAAM,CAAC,CAAC,EAAE;MACvB,MAAM,IAAIC,KAAK,CAAC,gCAAgCY,YAAY,CAACX,KAAK,CAACC,OAAO,EAAE,CAAC;IACjF;IAEA,IAAI,CAACW,WAAW,GAAGD,YAAY,CAACR,KAAK;EACzC;EAEA,MAAMU,SAASA,CAAA,EAAkB;IAC7B,IAAI,IAAI,CAACD,WAAW,EAAE;MAClB,MAAM,IAAI,CAACrB,iBAAiB,CAACK,OAAO,CAAC,IAAI,CAACgB,WAAW,CAACH,EAAE,CAAC;IAC7D;EACJ;AACJ;AAEA,OAAO,MAAMK,aAAa,GAAGlC,YAAY,CAACmC,oBAAoB,CAAC;EAC3DC,cAAc,EAAEhC,kBAAkB;EAClCiC,YAAY,EAAE,CAACpC,cAAc,EAAEE,iBAAiB,EAAED,iBAAiB;AACvE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const UserInstallerFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
@@ -0,0 +1,10 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { UserInstaller } from "./UserInstaller.js";
3
+ export const UserInstallerFeature = createFeature({
4
+ name: "UserInstallerFeature",
5
+ register(container) {
6
+ container.register(UserInstaller);
7
+ }
8
+ });
9
+
10
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createFeature","UserInstaller","UserInstallerFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { UserInstaller } from \"./UserInstaller.js\";\n\nexport const UserInstallerFeature = createFeature({\n name: \"UserInstallerFeature\",\n register(container) {\n container.register(UserInstaller);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,aAAa;AAEtB,OAAO,MAAMC,oBAAoB,GAAGF,aAAa,CAAC;EAC9CG,IAAI,EAAE,sBAAsB;EAC5BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,aAAa,CAAC;EACrC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
2
+ declare class AdminUserSchemaImpl implements CoreGraphQLSchemaFactory.Interface {
3
+ execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): CoreGraphQLSchemaFactory.Return;
4
+ }
5
+ export declare const AdminUsersSchema: typeof AdminUserSchemaImpl & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
7
+ };
8
+ export {};
@@ -0,0 +1,167 @@
1
+ import { ErrorResponse, NotFoundResponse, Response } from "@webiny/handler-graphql/responses.js";
2
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.js";
3
+ import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
4
+ import { GetUserUseCase } from "@webiny/api-core/features/GetUser";
5
+ import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
6
+ import { CreateUserUseCase } from "../features/CreateUser/index.js";
7
+ import { UpdateUserUseCase } from "../features/UpdateUser/index.js";
8
+ import { DeleteUserUseCase } from "../features/DeleteUser/index.js";
9
+ class AdminUserSchemaImpl {
10
+ async execute(builder) {
11
+ builder.addTypeDefs(/* GraphQL */`
12
+ """
13
+ This input type is used by administrators to create other user's accounts within the same tenant.
14
+ """
15
+ input AdminUsersCreateInput {
16
+ email: String!
17
+ firstName: String!
18
+ lastName: String!
19
+ password: String!
20
+ avatar: JSON
21
+ roles: [RefInput!]
22
+ teams: [RefInput!]
23
+ }
24
+
25
+ """
26
+ This input type is used by administrators to update other user's accounts within the same tenant.
27
+ """
28
+ input AdminUsersUpdateInput {
29
+ email: String
30
+ firstName: String
31
+ lastName: String
32
+ password: String
33
+ avatar: JSON
34
+ roles: [RefInput!]
35
+ teams: [RefInput!]
36
+ }
37
+
38
+ """
39
+ This input type is used by the user who is updating his own account
40
+ """
41
+ input AdminUsersCurrentUserInput {
42
+ email: String
43
+ firstName: String
44
+ lastName: String
45
+ password: String
46
+ avatar: JSON
47
+ }
48
+
49
+ extend type AdminUsersMutation {
50
+ updateCurrentUser(data: AdminUsersCurrentUserInput!): AdminUsersResponse
51
+
52
+ createUser(data: AdminUsersCreateInput!): AdminUsersResponse
53
+
54
+ updateUser(id: ID!, data: AdminUsersUpdateInput!): AdminUsersResponse
55
+
56
+ deleteUser(id: ID!): AdminUsersBooleanResponse
57
+ }
58
+ `);
59
+ builder.addResolver({
60
+ path: "AdminUsersMutation.updateCurrentUser",
61
+ dependencies: [IdentityContext, GetUserUseCase, UpdateUserUseCase],
62
+ resolver: (identityContext, getUserUseCase, updateUserUseCase) => {
63
+ return async ({
64
+ args
65
+ }) => {
66
+ const identity = identityContext.getIdentity();
67
+ if (!identity.isAdmin()) {
68
+ return new NotAuthorizedResponse();
69
+ }
70
+
71
+ // Current user might not have permissions for `adminUsers`.
72
+ return await identityContext.withoutAuthorization(async () => {
73
+ const getUserResult = await getUserUseCase.execute({
74
+ id: identity.id
75
+ });
76
+ if (getUserResult.isFail()) {
77
+ // TODO: check if current identity belongs to a different tenant.
78
+ // TODO: If so, switch to that other tenant, and update his profile there.
79
+ return new NotFoundResponse("User not found!");
80
+ }
81
+ const user = getUserResult.value;
82
+
83
+ // TODO: UpdateCurrentUser should be a dedicated use case
84
+ const updateResult = await updateUserUseCase.execute(user.id, args.data);
85
+ if (updateResult.isFail()) {
86
+ return new ErrorResponse({
87
+ message: updateResult.error.message,
88
+ code: updateResult.error.code,
89
+ data: updateResult.error.data
90
+ });
91
+ }
92
+ return new Response(updateResult.value);
93
+ });
94
+ };
95
+ }
96
+ });
97
+ builder.addResolver({
98
+ path: "AdminUsersMutation.createUser",
99
+ dependencies: [CreateUserUseCase],
100
+ resolver: createUserUseCase => {
101
+ return async ({
102
+ args
103
+ }) => {
104
+ const result = await createUserUseCase.execute(args.data);
105
+ if (result.isFail()) {
106
+ return new ErrorResponse({
107
+ message: result.error.message,
108
+ code: result.error.code,
109
+ data: result.error.data
110
+ });
111
+ }
112
+ return new Response(result.value);
113
+ };
114
+ }
115
+ });
116
+ builder.addResolver({
117
+ path: "AdminUsersMutation.updateUser",
118
+ dependencies: [UpdateUserUseCase, IdentityContext],
119
+ resolver: (updateUserUseCase, identityContext) => {
120
+ return async ({
121
+ args
122
+ }) => {
123
+ if (args.id === identityContext.getIdentity().id) {
124
+ return new ErrorResponse({
125
+ message: "You're not allowed to update your own account using this API.",
126
+ code: "AdminUser/GraphQL/UpdateSelf"
127
+ });
128
+ }
129
+ const result = await updateUserUseCase.execute(args.id, args.data);
130
+ if (result.isFail()) {
131
+ return new ErrorResponse({
132
+ message: result.error.message,
133
+ code: result.error.code
134
+ });
135
+ }
136
+ return new Response(result.value);
137
+ };
138
+ }
139
+ });
140
+ builder.addResolver({
141
+ path: "AdminUsersMutation.deleteUser",
142
+ dependencies: [DeleteUserUseCase],
143
+ resolver: deleteUserUseCase => {
144
+ return async ({
145
+ args
146
+ }) => {
147
+ const result = await deleteUserUseCase.execute(args.id);
148
+ if (result.isFail()) {
149
+ return new ErrorResponse({
150
+ message: result.error.message,
151
+ code: result.error.code,
152
+ data: result.error.data
153
+ });
154
+ }
155
+ return new Response(true);
156
+ };
157
+ }
158
+ });
159
+ return builder;
160
+ }
161
+ }
162
+ export const AdminUsersSchema = CoreGraphQLSchemaFactory.createImplementation({
163
+ implementation: AdminUserSchemaImpl,
164
+ dependencies: []
165
+ });
166
+
167
+ //# sourceMappingURL=user.gql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ErrorResponse","NotFoundResponse","Response","CoreGraphQLSchemaFactory","IdentityContext","GetUserUseCase","NotAuthorizedResponse","CreateUserUseCase","UpdateUserUseCase","DeleteUserUseCase","AdminUserSchemaImpl","execute","builder","addTypeDefs","addResolver","path","dependencies","resolver","identityContext","getUserUseCase","updateUserUseCase","args","identity","getIdentity","isAdmin","withoutAuthorization","getUserResult","id","isFail","user","value","updateResult","data","message","error","code","createUserUseCase","result","deleteUserUseCase","AdminUsersSchema","createImplementation","implementation"],"sources":["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/IdentityContext\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/GetUser\";\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"],"mappings":"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","ignoreList":[]}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { Cognito } from "./Cognito.js";
2
+ export { CognitoIdpConfig } from "./api/features/CognitoIdp/index.js";
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { Cognito } from "./Cognito.js";
2
+ export { CognitoIdpConfig } from "./api/features/CognitoIdp/index.js";
3
+
4
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Cognito","CognitoIdpConfig"],"sources":["index.ts"],"sourcesContent":["export { Cognito } from \"./Cognito.js\";\nexport { CognitoIdpConfig } from \"./api/features/CognitoIdp/index.js\";\n"],"mappings":"AAAA,SAASA,OAAO;AAChB,SAASC,gBAAgB","ignoreList":[]}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@webiny/cognito",
3
+ "version": "0.0.0-unstable.3c5210ad37",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "sideEffects": false,
7
+ "main": "index.js",
8
+ "description": "Security plugins for Cognito",
9
+ "author": "Webiny Ltd.",
10
+ "dependencies": {
11
+ "@apollo/react-hooks": "3.1.5",
12
+ "@aws-amplify/auth": "5.6.18",
13
+ "@webiny/admin-ui": "0.0.0-unstable.3c5210ad37",
14
+ "@webiny/api-core": "0.0.0-unstable.3c5210ad37",
15
+ "@webiny/app": "0.0.0-unstable.3c5210ad37",
16
+ "@webiny/app-admin": "0.0.0-unstable.3c5210ad37",
17
+ "@webiny/aws-sdk": "0.0.0-unstable.3c5210ad37",
18
+ "@webiny/di": "*",
19
+ "@webiny/feature": "0.0.0-unstable.3c5210ad37",
20
+ "@webiny/form": "0.0.0-unstable.3c5210ad37",
21
+ "@webiny/handler-graphql": "0.0.0-unstable.3c5210ad37",
22
+ "@webiny/icons": "0.0.0-unstable.3c5210ad37",
23
+ "@webiny/project": "0.0.0-unstable.3c5210ad37",
24
+ "@webiny/project-aws": "0.0.0-unstable.3c5210ad37",
25
+ "@webiny/ui": "0.0.0-unstable.3c5210ad37",
26
+ "@webiny/validation": "0.0.0-unstable.3c5210ad37",
27
+ "graphql": "16.13.0",
28
+ "graphql-tag": "2.12.6",
29
+ "jsonwebtoken": "9.0.3",
30
+ "lodash": "4.17.23",
31
+ "mobx": "6.15.0",
32
+ "mobx-react-lite": "3.4.3",
33
+ "react": "18.2.0",
34
+ "zod": "3.25.76"
35
+ },
36
+ "devDependencies": {
37
+ "@types/react": "18.2.79",
38
+ "@webiny/build-tools": "0.0.0-unstable.3c5210ad37",
39
+ "@webiny/project-utils": "0.0.0-unstable.3c5210ad37",
40
+ "@webiny/wcp": "0.0.0-unstable.3c5210ad37",
41
+ "vitest": "4.0.18"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public",
45
+ "directory": "dist"
46
+ },
47
+ "gitHead": "3c5210ad37c29bfabfeb8a91d3220115352b2ea9"
48
+ }