@webiny/cognito 6.3.0 → 6.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/Cognito.js +23 -24
  2. package/Cognito.js.map +1 -1
  3. package/admin/Cognito.js +35 -41
  4. package/admin/Cognito.js.map +1 -1
  5. package/admin/CognitoLogin.js +8 -13
  6. package/admin/CognitoLogin.js.map +1 -1
  7. package/admin/Extension.js +17 -16
  8. package/admin/Extension.js.map +1 -1
  9. package/admin/SecurityPermission.js +11 -14
  10. package/admin/SecurityPermission.js.map +1 -1
  11. package/admin/domain/permissionsSchema.js +14 -9
  12. package/admin/domain/permissionsSchema.js.map +1 -1
  13. package/admin/features/permissions/abstractions.js +2 -1
  14. package/admin/features/permissions/abstractions.js.map +1 -1
  15. package/admin/features/permissions/feature.js +2 -1
  16. package/admin/features/permissions/feature.js.map +1 -1
  17. package/admin/federatedIdentityProviders.js +7 -6
  18. package/admin/federatedIdentityProviders.js.map +1 -1
  19. package/admin/presentation/Cognito/CognitoLoginScreen.js +39 -42
  20. package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -1
  21. package/admin/presentation/Cognito/CognitoPresenter.js +250 -275
  22. package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -1
  23. package/admin/presentation/Cognito/abstractions.js +2 -1
  24. package/admin/presentation/Cognito/abstractions.js.map +1 -1
  25. package/admin/presentation/Cognito/components/Divider.js +12 -13
  26. package/admin/presentation/Cognito/components/Divider.js.map +1 -1
  27. package/admin/presentation/Cognito/components/FederatedLogin.js +24 -29
  28. package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -1
  29. package/admin/presentation/Cognito/components/FederatedProviders.js +7 -10
  30. package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -1
  31. package/admin/presentation/Cognito/components/FooterSignIn.js +9 -12
  32. package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -1
  33. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +33 -37
  34. package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -1
  35. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +35 -39
  36. package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -1
  37. package/admin/presentation/Cognito/components/RequireNewPassword.js +44 -48
  38. package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -1
  39. package/admin/presentation/Cognito/components/SetNewPassword.js +70 -71
  40. package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -1
  41. package/admin/presentation/Cognito/components/SignIn.js +52 -59
  42. package/admin/presentation/Cognito/components/SignIn.js.map +1 -1
  43. package/admin/presentation/Cognito/components/View.js +41 -60
  44. package/admin/presentation/Cognito/components/View.js.map +1 -1
  45. package/admin/presentation/Cognito/feature.js +12 -11
  46. package/admin/presentation/Cognito/feature.js.map +1 -1
  47. package/admin/presentation/shared/createPasswordValidator.js +13 -24
  48. package/admin/presentation/shared/createPasswordValidator.js.map +1 -1
  49. package/admin/presentation/shared/usePasswordValidator.js +11 -10
  50. package/admin/presentation/shared/usePasswordValidator.js.map +1 -1
  51. package/admin/presentation/userMenu/AccountDetails.js +15 -18
  52. package/admin/presentation/userMenu/AccountDetails.js.map +1 -1
  53. package/admin/presentation/userMenu/useIsDefaultTenant.js +5 -11
  54. package/admin/presentation/userMenu/useIsDefaultTenant.js.map +1 -1
  55. package/admin/routes.js +16 -17
  56. package/admin/routes.js.map +1 -1
  57. package/admin/ui/UserItem.js +0 -3
  58. package/admin/ui/components/AvatarImage/AvatarImage.js +25 -37
  59. package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -1
  60. package/admin/ui/components/AvatarImage/AvatarImagePreview.js +49 -51
  61. package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -1
  62. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +25 -26
  63. package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -1
  64. package/admin/ui/components/AvatarImage/index.js +0 -2
  65. package/admin/ui/views/Account/Account.js +117 -130
  66. package/admin/ui/views/Account/Account.js.map +1 -1
  67. package/admin/ui/views/Account/graphql.js +5 -4
  68. package/admin/ui/views/Account/graphql.js.map +1 -1
  69. package/admin/ui/views/Account/index.js +0 -2
  70. package/admin/ui/views/Users/UsersDataList.js +146 -159
  71. package/admin/ui/views/Users/UsersDataList.js.map +1 -1
  72. package/admin/ui/views/Users/UsersForm.js +151 -162
  73. package/admin/ui/views/Users/UsersForm.js.map +1 -1
  74. package/admin/ui/views/Users/UsersView.js +9 -9
  75. package/admin/ui/views/Users/UsersView.js.map +1 -1
  76. package/admin/ui/views/Users/components/DeleteAction.js +23 -30
  77. package/admin/ui/views/Users/components/DeleteAction.js.map +1 -1
  78. package/admin/ui/views/Users/graphql.js +9 -10
  79. package/admin/ui/views/Users/graphql.js.map +1 -1
  80. package/admin/ui/views/Users/hooks/useUserForm.js +104 -114
  81. package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -1
  82. package/admin/ui/views/Users/search.js +21 -0
  83. package/admin/ui/views/Users/search.js.map +1 -0
  84. package/admin/ui/views/utils.js +9 -7
  85. package/admin/ui/views/utils.js.map +1 -1
  86. package/api/CognitoApiFeature.js +15 -17
  87. package/api/CognitoApiFeature.js.map +1 -1
  88. package/api/domain/Username.js +5 -4
  89. package/api/domain/Username.js.map +1 -1
  90. package/api/domain/errors.js +37 -56
  91. package/api/domain/errors.js.map +1 -1
  92. package/api/features/CognitoIdp/CognitoIdentityProvider.js +49 -51
  93. package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -1
  94. package/api/features/CognitoIdp/abstractions.js +2 -1
  95. package/api/features/CognitoIdp/abstractions.js.map +1 -1
  96. package/api/features/CognitoIdp/feature.js +6 -5
  97. package/api/features/CognitoIdp/feature.js.map +1 -1
  98. package/api/features/CognitoIdp/index.js +0 -2
  99. package/api/features/CognitoService/CognitoService.js +93 -83
  100. package/api/features/CognitoService/CognitoService.js.map +1 -1
  101. package/api/features/CognitoService/abstractions.js +3 -5
  102. package/api/features/CognitoService/abstractions.js.map +1 -1
  103. package/api/features/CognitoService/feature.js +7 -6
  104. package/api/features/CognitoService/feature.js.map +1 -1
  105. package/api/features/CognitoService/index.js +0 -2
  106. package/api/features/CreateUser/CreateUserUseCase.js +62 -88
  107. package/api/features/CreateUser/CreateUserUseCase.js.map +1 -1
  108. package/api/features/CreateUser/abstractions.js +2 -1
  109. package/api/features/CreateUser/abstractions.js.map +1 -1
  110. package/api/features/CreateUser/feature.js +6 -5
  111. package/api/features/CreateUser/feature.js.map +1 -1
  112. package/api/features/CreateUser/index.js +0 -2
  113. package/api/features/CreateUser/schema.js +14 -13
  114. package/api/features/CreateUser/schema.js.map +1 -1
  115. package/api/features/DeleteUser/DeleteUserUseCase.js +34 -41
  116. package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -1
  117. package/api/features/DeleteUser/abstractions.js +2 -1
  118. package/api/features/DeleteUser/abstractions.js.map +1 -1
  119. package/api/features/DeleteUser/feature.js +6 -5
  120. package/api/features/DeleteUser/feature.js.map +1 -1
  121. package/api/features/DeleteUser/index.js +0 -2
  122. package/api/features/UpdateUser/UpdateUserUseCase.js +49 -71
  123. package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -1
  124. package/api/features/UpdateUser/abstractions.js +2 -1
  125. package/api/features/UpdateUser/abstractions.js.map +1 -1
  126. package/api/features/UpdateUser/feature.js +6 -5
  127. package/api/features/UpdateUser/feature.js.map +1 -1
  128. package/api/features/UpdateUser/index.js +0 -2
  129. package/api/features/UpdateUser/schema.js +13 -12
  130. package/api/features/UpdateUser/schema.js.map +1 -1
  131. package/api/features/UserInstaller/UserInstaller.js +36 -36
  132. package/api/features/UserInstaller/UserInstaller.js.map +1 -1
  133. package/api/features/UserInstaller/feature.js +6 -5
  134. package/api/features/UserInstaller/feature.js.map +1 -1
  135. package/api/graphql/user.gql.js +83 -107
  136. package/api/graphql/user.gql.js.map +1 -1
  137. package/index.js +0 -2
  138. package/package.json +23 -24
  139. package/static/svg/search.43fa797c.svg +20 -0
  140. package/admin/ui/UserItem.js.map +0 -1
  141. package/admin/ui/components/AvatarImage/index.js.map +0 -1
  142. package/admin/ui/views/Account/index.js.map +0 -1
  143. package/api/features/CognitoIdp/index.js.map +0 -1
  144. package/api/features/CognitoService/index.js.map +0 -1
  145. package/api/features/CreateUser/index.js.map +0 -1
  146. package/api/features/DeleteUser/index.js.map +0 -1
  147. package/api/features/UpdateUser/index.js.map +0 -1
  148. package/index.js.map +0 -1
@@ -2,105 +2,79 @@ import { Result } from "@webiny/feature/api";
2
2
  import { AdminUsersRepository } from "@webiny/api-core/features/users/shared/abstractions.js";
3
3
  import { NotAuthorizedError, UserValidationError } from "@webiny/api-core/features/users/shared/errors.js";
4
4
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
- import { CreateUserUseCase as CoreCreateUser } from "@webiny/api-core/features/users/CreateUser/index.js";
5
+ import { CreateUserUseCase } from "@webiny/api-core/features/users/CreateUser/index.js";
6
6
  import { ListUsersUseCase } from "@webiny/api-core/features/users/ListUsers/index.js";
7
- import { CreateUserUseCase as UseCaseAbstraction } from "./abstractions.js";
7
+ import { CreateUserUseCase as external_abstractions_js_CreateUserUseCase } from "./abstractions.js";
8
8
  import { Username } from "../../domain/Username.js";
9
9
  import { CognitoAccountExistsError, CognitoCreateUserError } from "../../domain/errors.js";
10
10
  import { createAdminUserValidation } from "./schema.js";
11
11
  import { CognitoService } from "../CognitoService/index.js";
12
12
  class CreateUserUseCaseImpl {
13
- constructor(identityContext, cognitoService, createUserUseCase, listUsersUseCase, repository) {
14
- this.identityContext = identityContext;
15
- this.cognitoService = cognitoService;
16
- this.createUserUseCase = createUserUseCase;
17
- this.listUsersUseCase = listUsersUseCase;
18
- this.repository = repository;
19
- }
20
- async execute(input) {
21
- const permission = await this.identityContext.getPermission("adminUsers.user");
22
- if (!permission) {
23
- return Result.fail(new NotAuthorizedError());
13
+ constructor(identityContext, cognitoService, createUserUseCase, listUsersUseCase, repository){
14
+ this.identityContext = identityContext;
15
+ this.cognitoService = cognitoService;
16
+ this.createUserUseCase = createUserUseCase;
17
+ this.listUsersUseCase = listUsersUseCase;
18
+ this.repository = repository;
24
19
  }
25
-
26
- // Validate input (including password)
27
- const validation = createAdminUserValidation.safeParse(input);
28
- if (!validation.success) {
29
- return Result.fail(new UserValidationError(validation.error.issues[0].message));
30
- }
31
- const data = validation.data;
32
- const {
33
- password,
34
- ...userDataWithoutPassword
35
- } = data;
36
- const username = Username.fromUser(data);
37
-
38
- // Check if user exists in database (faster than Cognito check)
39
- const existingUserResult = await this.repository.get({
40
- email: data.email
41
- });
42
- if (existingUserResult.isOk()) {
43
- return Result.fail(new CognitoAccountExistsError(data.email));
44
- }
45
- let user = undefined;
46
- try {
47
- // Check if user exists in Cognito
48
- const userExists = await this.cognitoService.userExists(username);
49
- if (userExists) {
50
- return Result.fail(new CognitoAccountExistsError(data.email));
51
- }
52
- // Create user in api-core
53
- const createUserResult = await this.createUserUseCase.execute(userDataWithoutPassword);
54
- if (createUserResult.isFail()) {
55
- return Result.fail(createUserResult.error);
56
- }
57
- user = createUserResult.value;
58
-
59
- // Create user in Cognito
60
- await this.cognitoService.createUser({
61
- username,
62
- temporaryPassword: password,
63
- attributes: {
64
- givenName: data.firstName,
65
- familyName: data.lastName,
66
- preferredUsername: username,
67
- email: username,
68
- customId: user.id
69
- }
70
- });
71
-
72
- // Set email as verified
73
- await this.cognitoService.setEmailVerified(username);
74
-
75
- // Check if this is the first user in the system, and if so, set permanent password
76
- const usersResult = await this.listUsersUseCase.execute();
77
- if (usersResult.isFail()) {
78
- // Log error but don't fail the operation
79
- console.error(`Failed to list users: ${usersResult.error.message}`);
80
- } else {
81
- const users = usersResult.value;
82
- if (users.length <= 1) {
83
- // This is the first user, set permanent password
84
- await this.cognitoService.setPermanentPassword(username, password);
85
- }
86
- }
87
- return Result.ok(user);
88
- } catch (cognitoError) {
89
- if (user) {
90
- // Rollback: Delete user from api-core if Cognito creation failed
20
+ async execute(input) {
21
+ const permission = await this.identityContext.getPermission("adminUsers.user");
22
+ if (!permission) return Result.fail(new NotAuthorizedError());
23
+ const validation = createAdminUserValidation.safeParse(input);
24
+ if (!validation.success) return Result.fail(new UserValidationError(validation.error.issues[0].message));
25
+ const data = validation.data;
26
+ const { password, ...userDataWithoutPassword } = data;
27
+ const username = Username.fromUser(data);
28
+ const existingUserResult = await this.repository.get({
29
+ email: data.email
30
+ });
31
+ if (existingUserResult.isOk()) return Result.fail(new CognitoAccountExistsError(data.email));
32
+ let user;
91
33
  try {
92
- await this.repository.delete(user);
93
- } catch (rollbackError) {
94
- console.error("Failed to rollback user creation:", rollbackError);
34
+ const userExists = await this.cognitoService.userExists(username);
35
+ if (userExists) return Result.fail(new CognitoAccountExistsError(data.email));
36
+ const createUserResult = await this.createUserUseCase.execute(userDataWithoutPassword);
37
+ if (createUserResult.isFail()) return Result.fail(createUserResult.error);
38
+ user = createUserResult.value;
39
+ await this.cognitoService.createUser({
40
+ username,
41
+ temporaryPassword: password,
42
+ attributes: {
43
+ givenName: data.firstName,
44
+ familyName: data.lastName,
45
+ preferredUsername: username,
46
+ email: username,
47
+ customId: user.id
48
+ }
49
+ });
50
+ await this.cognitoService.setEmailVerified(username);
51
+ const usersResult = await this.listUsersUseCase.execute();
52
+ if (usersResult.isFail()) console.error(`Failed to list users: ${usersResult.error.message}`);
53
+ else {
54
+ const users = usersResult.value;
55
+ if (users.length <= 1) await this.cognitoService.setPermanentPassword(username, password);
56
+ }
57
+ return Result.ok(user);
58
+ } catch (cognitoError) {
59
+ if (user) try {
60
+ await this.repository.delete(user);
61
+ } catch (rollbackError) {
62
+ console.error("Failed to rollback user creation:", rollbackError);
63
+ }
64
+ return Result.fail(new CognitoCreateUserError(cognitoError));
95
65
  }
96
- }
97
- return Result.fail(new CognitoCreateUserError(cognitoError));
98
66
  }
99
- }
100
67
  }
101
- export const CreateUserUseCase = UseCaseAbstraction.createImplementation({
102
- implementation: CreateUserUseCaseImpl,
103
- dependencies: [IdentityContext, CognitoService, CoreCreateUser, ListUsersUseCase, AdminUsersRepository]
68
+ const CreateUserUseCase_CreateUserUseCase = external_abstractions_js_CreateUserUseCase.createImplementation({
69
+ implementation: CreateUserUseCaseImpl,
70
+ dependencies: [
71
+ IdentityContext,
72
+ CognitoService,
73
+ CreateUserUseCase,
74
+ ListUsersUseCase,
75
+ AdminUsersRepository
76
+ ]
104
77
  });
78
+ export { CreateUserUseCase_CreateUserUseCase as CreateUserUseCase };
105
79
 
106
80
  //# sourceMappingURL=CreateUserUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","AdminUsersRepository","NotAuthorizedError","UserValidationError","IdentityContext","CreateUserUseCase","CoreCreateUser","ListUsersUseCase","UseCaseAbstraction","Username","CognitoAccountExistsError","CognitoCreateUserError","createAdminUserValidation","CognitoService","CreateUserUseCaseImpl","constructor","identityContext","cognitoService","createUserUseCase","listUsersUseCase","repository","execute","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","data","password","userDataWithoutPassword","username","fromUser","existingUserResult","get","email","isOk","user","undefined","userExists","createUserResult","isFail","value","createUser","temporaryPassword","attributes","givenName","firstName","familyName","lastName","preferredUsername","customId","id","setEmailVerified","usersResult","console","users","length","setPermanentPassword","ok","cognitoError","delete","rollbackError","createImplementation","implementation","dependencies"],"sources":["CreateUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { AdminUsersRepository } from \"@webiny/api-core/features/users/shared/abstractions.js\";\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 { CreateUserUseCase as CoreCreateUser } from \"@webiny/api-core/features/users/CreateUser/index.js\";\nimport { ListUsersUseCase } from \"@webiny/api-core/features/users/ListUsers/index.js\";\n\nimport { CreateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoAccountExistsError, CognitoCreateUserError } from \"~/api/domain/errors.js\";\nimport { createAdminUserValidation } from \"./schema.js\";\nimport type { CreateAdminUserInput } from \"./abstractions.js\";\nimport { CognitoService } from \"~/api/features/CognitoService/index.js\";\n\nclass CreateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private createUserUseCase: CoreCreateUser.Interface,\n private listUsersUseCase: ListUsersUseCase.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n input: CreateAdminUserInput\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 = createAdminUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n const data = validation.data;\n const { password, ...userDataWithoutPassword } = data;\n\n const username = Username.fromUser(data);\n\n // Check if user exists in database (faster than Cognito check)\n const existingUserResult = await this.repository.get({ email: data.email });\n if (existingUserResult.isOk()) {\n return Result.fail(new CognitoAccountExistsError(data.email));\n }\n\n let user: AdminUser | undefined = undefined;\n\n try {\n // Check if user exists in Cognito\n const userExists = await this.cognitoService.userExists(username);\n if (userExists) {\n return Result.fail(new CognitoAccountExistsError(data.email));\n }\n // Create user in api-core\n const createUserResult = await this.createUserUseCase.execute(userDataWithoutPassword);\n if (createUserResult.isFail()) {\n return Result.fail(createUserResult.error);\n }\n\n user = createUserResult.value;\n\n // Create user in Cognito\n await this.cognitoService.createUser({\n username,\n temporaryPassword: password,\n attributes: {\n givenName: data.firstName,\n familyName: data.lastName,\n preferredUsername: username,\n email: username,\n customId: user.id\n }\n });\n\n // Set email as verified\n await this.cognitoService.setEmailVerified(username);\n\n // Check if this is the first user in the system, and if so, set permanent password\n const usersResult = await this.listUsersUseCase.execute();\n if (usersResult.isFail()) {\n // Log error but don't fail the operation\n console.error(`Failed to list users: ${usersResult.error.message}`);\n } else {\n const users = usersResult.value;\n if (users.length <= 1) {\n // This is the first user, set permanent password\n await this.cognitoService.setPermanentPassword(username, password);\n }\n }\n\n return Result.ok(user);\n } catch (cognitoError) {\n if (user) {\n // Rollback: Delete user from api-core if Cognito creation failed\n try {\n await this.repository.delete(user);\n } catch (rollbackError) {\n console.error(\"Failed to rollback user creation:\", rollbackError);\n }\n }\n return Result.fail(new CognitoCreateUserError(cognitoError as Error));\n }\n }\n}\n\nexport const CreateUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateUserUseCaseImpl,\n dependencies: [\n IdentityContext,\n CognitoService,\n CoreCreateUser,\n ListUsersUseCase,\n AdminUsersRepository\n ]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"api/features/CreateUser/CreateUserUseCase.js","sources":["../../../../src/api/features/CreateUser/CreateUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { AdminUsersRepository } from \"@webiny/api-core/features/users/shared/abstractions.js\";\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 { CreateUserUseCase as CoreCreateUser } from \"@webiny/api-core/features/users/CreateUser/index.js\";\nimport { ListUsersUseCase } from \"@webiny/api-core/features/users/ListUsers/index.js\";\n\nimport { CreateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoAccountExistsError, CognitoCreateUserError } from \"~/api/domain/errors.js\";\nimport { createAdminUserValidation } from \"./schema.js\";\nimport type { CreateAdminUserInput } from \"./abstractions.js\";\nimport { CognitoService } from \"~/api/features/CognitoService/index.js\";\n\nclass CreateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private createUserUseCase: CoreCreateUser.Interface,\n private listUsersUseCase: ListUsersUseCase.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n input: CreateAdminUserInput\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 = createAdminUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n const data = validation.data;\n const { password, ...userDataWithoutPassword } = data;\n\n const username = Username.fromUser(data);\n\n // Check if user exists in database (faster than Cognito check)\n const existingUserResult = await this.repository.get({ email: data.email });\n if (existingUserResult.isOk()) {\n return Result.fail(new CognitoAccountExistsError(data.email));\n }\n\n let user: AdminUser | undefined = undefined;\n\n try {\n // Check if user exists in Cognito\n const userExists = await this.cognitoService.userExists(username);\n if (userExists) {\n return Result.fail(new CognitoAccountExistsError(data.email));\n }\n // Create user in api-core\n const createUserResult = await this.createUserUseCase.execute(userDataWithoutPassword);\n if (createUserResult.isFail()) {\n return Result.fail(createUserResult.error);\n }\n\n user = createUserResult.value;\n\n // Create user in Cognito\n await this.cognitoService.createUser({\n username,\n temporaryPassword: password,\n attributes: {\n givenName: data.firstName,\n familyName: data.lastName,\n preferredUsername: username,\n email: username,\n customId: user.id\n }\n });\n\n // Set email as verified\n await this.cognitoService.setEmailVerified(username);\n\n // Check if this is the first user in the system, and if so, set permanent password\n const usersResult = await this.listUsersUseCase.execute();\n if (usersResult.isFail()) {\n // Log error but don't fail the operation\n console.error(`Failed to list users: ${usersResult.error.message}`);\n } else {\n const users = usersResult.value;\n if (users.length <= 1) {\n // This is the first user, set permanent password\n await this.cognitoService.setPermanentPassword(username, password);\n }\n }\n\n return Result.ok(user);\n } catch (cognitoError) {\n if (user) {\n // Rollback: Delete user from api-core if Cognito creation failed\n try {\n await this.repository.delete(user);\n } catch (rollbackError) {\n console.error(\"Failed to rollback user creation:\", rollbackError);\n }\n }\n return Result.fail(new CognitoCreateUserError(cognitoError as Error));\n }\n }\n}\n\nexport const CreateUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateUserUseCaseImpl,\n dependencies: [\n IdentityContext,\n CognitoService,\n CoreCreateUser,\n ListUsersUseCase,\n AdminUsersRepository\n ]\n});\n"],"names":["CreateUserUseCaseImpl","identityContext","cognitoService","createUserUseCase","listUsersUseCase","repository","input","permission","Result","NotAuthorizedError","validation","createAdminUserValidation","UserValidationError","data","password","userDataWithoutPassword","username","Username","existingUserResult","CognitoAccountExistsError","user","userExists","createUserResult","usersResult","console","users","cognitoError","rollbackError","CognitoCreateUserError","CreateUserUseCase","UseCaseAbstraction","IdentityContext","CognitoService","CoreCreateUser","ListUsersUseCase","AdminUsersRepository"],"mappings":";;;;;;;;;;;AAkBA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,iBAA2C,EAC3CC,gBAA4C,EAC5CC,UAA0C,CACpD;aALUJ,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,iBAAiB,GAAjBA;aACAC,gBAAgB,GAAhBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QACFC,KAA2B,EACyB;QACpD,MAAMC,aAAa,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QAC5D,IAAI,CAACA,YACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,aAAaC,0BAA0B,SAAS,CAACL;QACvD,IAAI,CAACI,WAAW,OAAO,EACnB,OAAOF,OAAO,IAAI,CAAC,IAAII,oBAAoBF,WAAW,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;QAGjF,MAAMG,OAAOH,WAAW,IAAI;QAC5B,MAAM,EAAEI,QAAQ,EAAE,GAAGC,yBAAyB,GAAGF;QAEjD,MAAMG,WAAWC,SAAS,QAAQ,CAACJ;QAGnC,MAAMK,qBAAqB,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAOL,KAAK,KAAK;QAAC;QACzE,IAAIK,mBAAmB,IAAI,IACvB,OAAOV,OAAO,IAAI,CAAC,IAAIW,0BAA0BN,KAAK,KAAK;QAG/D,IAAIO;QAEJ,IAAI;YAEA,MAAMC,aAAa,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAACL;YACxD,IAAIK,YACA,OAAOb,OAAO,IAAI,CAAC,IAAIW,0BAA0BN,KAAK,KAAK;YAG/D,MAAMS,mBAAmB,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACP;YAC9D,IAAIO,iBAAiB,MAAM,IACvB,OAAOd,OAAO,IAAI,CAACc,iBAAiB,KAAK;YAG7CF,OAAOE,iBAAiB,KAAK;YAG7B,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;gBACjCN;gBACA,mBAAmBF;gBACnB,YAAY;oBACR,WAAWD,KAAK,SAAS;oBACzB,YAAYA,KAAK,QAAQ;oBACzB,mBAAmBG;oBACnB,OAAOA;oBACP,UAAUI,KAAK,EAAE;gBACrB;YACJ;YAGA,MAAM,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAACJ;YAG3C,MAAMO,cAAc,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO;YACvD,IAAIA,YAAY,MAAM,IAElBC,QAAQ,KAAK,CAAC,CAAC,sBAAsB,EAAED,YAAY,KAAK,CAAC,OAAO,EAAE;iBAC/D;gBACH,MAAME,QAAQF,YAAY,KAAK;gBAC/B,IAAIE,MAAM,MAAM,IAAI,GAEhB,MAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAACT,UAAUF;YAEjE;YAEA,OAAON,OAAO,EAAE,CAACY;QACrB,EAAE,OAAOM,cAAc;YACnB,IAAIN,MAEA,IAAI;gBACA,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAACA;YACjC,EAAE,OAAOO,eAAe;gBACpBH,QAAQ,KAAK,CAAC,qCAAqCG;YACvD;YAEJ,OAAOnB,OAAO,IAAI,CAAC,IAAIoB,uBAAuBF;QAClD;IACJ;AACJ;AAEO,MAAMG,sCAAoBC,2CAAAA,oBAAuC,CAAC;IACrE,gBAAgB9B;IAChB,cAAc;QACV+B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const CreateUserUseCase = createAbstraction("CreateUserUseCase");
2
+ const CreateUserUseCase = createAbstraction("CreateUserUseCase");
3
+ export { CreateUserUseCase };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateUserUseCase"],"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 type { RepositoryError } from \"@webiny/api-core/features/users/shared/abstractions.js\";\nimport type { CognitoAccountExistsError, CognitoCreateUserError } from \"~/api/domain/errors.js\";\n\nexport interface CreateAdminUserInput {\n id?: string;\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 ICreateUserUseCaseErrors {\n authorization: NotAuthorizedError;\n validation: UserValidationError;\n emailTaken: EmailTakenError;\n repository: RepositoryError;\n cognitoAccountExists: CognitoAccountExistsError;\n cognitoCreateUser: CognitoCreateUserError;\n}\n\ntype CreateAdminUserError = ICreateUserUseCaseErrors[keyof ICreateUserUseCaseErrors];\n\nexport interface ICreateUserUseCase {\n execute(input: CreateAdminUserInput): Promise<Result<AdminUser, CreateAdminUserError>>;\n}\n\nexport const CreateUserUseCase = createAbstraction<ICreateUserUseCase>(\"CreateUserUseCase\");\n\nexport namespace CreateUserUseCase {\n export type Interface = ICreateUserUseCase;\n export type Input = CreateAdminUserInput;\n export type Error = CreateAdminUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAsCvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/CreateUser/abstractions.js","sources":["../../../../src/api/features/CreateUser/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 type { RepositoryError } from \"@webiny/api-core/features/users/shared/abstractions.js\";\nimport type { CognitoAccountExistsError, CognitoCreateUserError } from \"~/api/domain/errors.js\";\n\nexport interface CreateAdminUserInput {\n id?: string;\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 ICreateUserUseCaseErrors {\n authorization: NotAuthorizedError;\n validation: UserValidationError;\n emailTaken: EmailTakenError;\n repository: RepositoryError;\n cognitoAccountExists: CognitoAccountExistsError;\n cognitoCreateUser: CognitoCreateUserError;\n}\n\ntype CreateAdminUserError = ICreateUserUseCaseErrors[keyof ICreateUserUseCaseErrors];\n\nexport interface ICreateUserUseCase {\n execute(input: CreateAdminUserInput): Promise<Result<AdminUser, CreateAdminUserError>>;\n}\n\nexport const CreateUserUseCase = createAbstraction<ICreateUserUseCase>(\"CreateUserUseCase\");\n\nexport namespace CreateUserUseCase {\n export type Interface = ICreateUserUseCase;\n export type Input = CreateAdminUserInput;\n export type Error = CreateAdminUserError;\n}\n"],"names":["CreateUserUseCase","createAbstraction"],"mappings":";AAsCO,MAAMA,oBAAoBC,kBAAsC"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { CreateUserUseCase } from "./CreateUserUseCase.js";
3
- export const CreateUserFeature = createFeature({
4
- name: "CreateUserFeature",
5
- register(container) {
6
- container.register(CreateUserUseCase);
7
- }
3
+ const CreateUserFeature = createFeature({
4
+ name: "CreateUserFeature",
5
+ register (container) {
6
+ container.register(CreateUserUseCase);
7
+ }
8
8
  });
9
+ export { CreateUserFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","CreateUserUseCase","CreateUserFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateUserUseCase } from \"./CreateUserUseCase.js\";\n\nexport const CreateUserFeature = createFeature({\n name: \"CreateUserFeature\",\n register(container) {\n container.register(CreateUserUseCase);\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":[]}
1
+ {"version":3,"file":"api/features/CreateUser/feature.js","sources":["../../../../src/api/features/CreateUser/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateUserUseCase } from \"./CreateUserUseCase.js\";\n\nexport const CreateUserFeature = createFeature({\n name: \"CreateUserFeature\",\n register(container) {\n container.register(CreateUserUseCase);\n }\n});\n"],"names":["CreateUserFeature","createFeature","container","CreateUserUseCase"],"mappings":";;AAGO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export * from "./abstractions.js";
2
2
  export * from "./feature.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1,17 +1,18 @@
1
1
  import { z } from "zod";
2
- export const createAdminUserValidation = z.object({
3
- id: z.string().min(1).optional(),
4
- displayName: z.string().min(1).optional(),
5
- email: z.string().email(),
6
- firstName: z.string().optional(),
7
- lastName: z.string().optional(),
8
- password: z.string().min(8),
9
- avatar: z.object({
10
- id: z.string().min(1),
11
- src: z.string().url()
12
- }).optional().nullable(),
13
- roles: z.array(z.string()).optional().default([]),
14
- teams: z.array(z.string()).optional().default([])
2
+ const createAdminUserValidation = z.object({
3
+ id: z.string().min(1).optional(),
4
+ displayName: z.string().min(1).optional(),
5
+ email: z.string().email(),
6
+ firstName: z.string().optional(),
7
+ lastName: z.string().optional(),
8
+ password: z.string().min(8),
9
+ avatar: z.object({
10
+ id: z.string().min(1),
11
+ src: z.string().url()
12
+ }).optional().nullable(),
13
+ roles: z.array(z.string()).optional().default([]),
14
+ teams: z.array(z.string()).optional().default([])
15
15
  });
16
+ export { createAdminUserValidation };
16
17
 
17
18
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["z","createAdminUserValidation","object","id","string","min","optional","displayName","email","firstName","lastName","password","avatar","src","url","nullable","roles","array","default","teams"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const createAdminUserValidation = z.object({\n id: z.string().min(1).optional(),\n displayName: z.string().min(1).optional(),\n email: z.string().email(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n password: z.string().min(8),\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().default([]),\n teams: z.array(z.string()).optional().default([])\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,yBAAyB,GAAGD,CAAC,CAACE,MAAM,CAAC;EAC9CC,EAAE,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAChCC,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EACzCE,KAAK,EAAER,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,KAAK,CAAC,CAAC;EACzBC,SAAS,EAAET,CAAC,CAACI,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EAChCI,QAAQ,EAAEV,CAAC,CAACI,MAAM,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC;EAC/BK,QAAQ,EAAEX,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EAC3BO,MAAM,EAAEZ,CAAC,CACJE,MAAM,CAAC;IACJC,EAAE,EAAEH,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,CAACY,OAAO,CAAC,EAAE,CAAC;EACjDC,KAAK,EAAEnB,CAAC,CAACiB,KAAK,CAACjB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC,CAAC,CAACY,OAAO,CAAC,EAAE;AACpD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/CreateUser/schema.js","sources":["../../../../src/api/features/CreateUser/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const createAdminUserValidation = z.object({\n id: z.string().min(1).optional(),\n displayName: z.string().min(1).optional(),\n email: z.string().email(),\n firstName: z.string().optional(),\n lastName: z.string().optional(),\n password: z.string().min(8),\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().default([]),\n teams: z.array(z.string()).optional().default([])\n});\n"],"names":["createAdminUserValidation","z"],"mappings":";AAEO,MAAMA,4BAA4BC,EAAE,MAAM,CAAC;IAC9C,IAAIA,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ;IAC9B,aAAaA,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ;IACvC,OAAOA,EAAE,MAAM,GAAG,KAAK;IACvB,WAAWA,EAAE,MAAM,GAAG,QAAQ;IAC9B,UAAUA,EAAE,MAAM,GAAG,QAAQ;IAC7B,UAAUA,EAAE,MAAM,GAAG,GAAG,CAAC;IACzB,QAAQA,EAAAA,MACG,CAAC;QACJ,IAAIA,EAAE,MAAM,GAAG,GAAG,CAAC;QACnB,KAAKA,EAAE,MAAM,GAAG,GAAG;IACvB,GACC,QAAQ,GACR,QAAQ;IACb,OAAOA,EAAE,KAAK,CAACA,EAAE,MAAM,IAAI,QAAQ,GAAG,OAAO,CAAC,EAAE;IAChD,OAAOA,EAAE,KAAK,CAACA,EAAE,MAAM,IAAI,QAAQ,GAAG,OAAO,CAAC,EAAE;AACpD"}
@@ -1,54 +1,47 @@
1
- import { createImplementation } from "@webiny/feature/api";
2
- import { Result } from "@webiny/feature/api";
3
- import { DeleteUserUseCase as CoreDeleteUser } from "@webiny/api-core/features/users/DeleteUser/index.js";
1
+ import { Result, createImplementation } from "@webiny/feature/api";
2
+ import { DeleteUserUseCase } from "@webiny/api-core/features/users/DeleteUser/index.js";
4
3
  import { GetUserUseCase } from "@webiny/api-core/features/users/GetUser/index.js";
5
4
  import { NotAuthorizedError } from "@webiny/api-core/features/users/shared/errors.js";
6
5
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
7
- import { DeleteUserUseCase as UseCaseAbstraction } from "./abstractions.js";
6
+ import { DeleteUserUseCase as external_abstractions_js_DeleteUserUseCase } from "./abstractions.js";
8
7
  import { Username } from "../../domain/Username.js";
9
8
  import { CognitoDeleteUserError } from "../../domain/errors.js";
10
9
  import { CognitoService } from "../CognitoService/abstractions.js";
11
10
  class DeleteUserUseCaseImpl {
12
- constructor(identityContext, cognitoService, deleteUserUseCase, getUserUseCase) {
13
- this.identityContext = identityContext;
14
- this.cognitoService = cognitoService;
15
- this.deleteUserUseCase = deleteUserUseCase;
16
- this.getUserUseCase = getUserUseCase;
17
- }
18
- async execute(id) {
19
- const permission = await this.identityContext.getPermission("adminUsers.user");
20
- if (!permission) {
21
- return Result.fail(new NotAuthorizedError());
11
+ constructor(identityContext, cognitoService, deleteUserUseCase, getUserUseCase){
12
+ this.identityContext = identityContext;
13
+ this.cognitoService = cognitoService;
14
+ this.deleteUserUseCase = deleteUserUseCase;
15
+ this.getUserUseCase = getUserUseCase;
22
16
  }
23
-
24
- // Get user to have email for Cognito deletion
25
- const getUserResult = await this.getUserUseCase.execute({
26
- id
27
- });
28
- if (getUserResult.isFail()) {
29
- return Result.fail(getUserResult.error);
30
- }
31
- const user = getUserResult.value;
32
-
33
- // Delete user from the database
34
- const deleteUserResult = await this.deleteUserUseCase.execute(id);
35
- if (deleteUserResult.isFail()) {
36
- return Result.fail(deleteUserResult.error);
37
- }
38
-
39
- // Delete user from Cognito
40
- try {
41
- await this.cognitoService.deleteUser(Username.fromUser(user));
42
- return Result.ok();
43
- } catch (cognitoError) {
44
- return Result.fail(new CognitoDeleteUserError(cognitoError));
17
+ async execute(id) {
18
+ const permission = await this.identityContext.getPermission("adminUsers.user");
19
+ if (!permission) return Result.fail(new NotAuthorizedError());
20
+ const getUserResult = await this.getUserUseCase.execute({
21
+ id
22
+ });
23
+ if (getUserResult.isFail()) return Result.fail(getUserResult.error);
24
+ const user = getUserResult.value;
25
+ const deleteUserResult = await this.deleteUserUseCase.execute(id);
26
+ if (deleteUserResult.isFail()) return Result.fail(deleteUserResult.error);
27
+ try {
28
+ await this.cognitoService.deleteUser(Username.fromUser(user));
29
+ return Result.ok();
30
+ } catch (cognitoError) {
31
+ return Result.fail(new CognitoDeleteUserError(cognitoError));
32
+ }
45
33
  }
46
- }
47
34
  }
48
- export const DeleteUserUseCase = createImplementation({
49
- abstraction: UseCaseAbstraction,
50
- implementation: DeleteUserUseCaseImpl,
51
- dependencies: [IdentityContext, CognitoService, CoreDeleteUser, GetUserUseCase]
35
+ const DeleteUserUseCase_DeleteUserUseCase = createImplementation({
36
+ abstraction: external_abstractions_js_DeleteUserUseCase,
37
+ implementation: DeleteUserUseCaseImpl,
38
+ dependencies: [
39
+ IdentityContext,
40
+ CognitoService,
41
+ DeleteUserUseCase,
42
+ GetUserUseCase
43
+ ]
52
44
  });
45
+ export { DeleteUserUseCase_DeleteUserUseCase as DeleteUserUseCase };
53
46
 
54
47
  //# sourceMappingURL=DeleteUserUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createImplementation","Result","DeleteUserUseCase","CoreDeleteUser","GetUserUseCase","NotAuthorizedError","IdentityContext","UseCaseAbstraction","Username","CognitoDeleteUserError","CognitoService","DeleteUserUseCaseImpl","constructor","identityContext","cognitoService","deleteUserUseCase","getUserUseCase","execute","id","permission","getPermission","fail","getUserResult","isFail","error","user","value","deleteUserResult","deleteUser","fromUser","ok","cognitoError","abstraction","implementation","dependencies"],"sources":["DeleteUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/users/DeleteUser/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { DeleteUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\nimport { CognitoService } from \"../CognitoService/abstractions.js\";\n\nclass DeleteUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private deleteUserUseCase: CoreDeleteUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get user to have email for Cognito deletion\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const user = getUserResult.value;\n\n // Delete user from the database\n const deleteUserResult = await this.deleteUserUseCase.execute(id);\n if (deleteUserResult.isFail()) {\n return Result.fail(deleteUserResult.error);\n }\n\n // Delete user from Cognito\n try {\n await this.cognitoService.deleteUser(Username.fromUser(user));\n\n return Result.ok();\n } catch (cognitoError) {\n return Result.fail(new CognitoDeleteUserError(cognitoError as Error));\n }\n }\n}\n\nexport const DeleteUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreDeleteUser, GetUserUseCase]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,cAAc,QAAQ,qDAAqD;AACzG,SAASC,cAAc,QAAQ,kDAAkD;AACjF,SAASC,kBAAkB,QAAQ,kDAAkD;AACrF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASJ,iBAAiB,IAAIK,kBAAkB;AAChD,SAASC,QAAQ;AACjB,SAASC,sBAAsB;AAC/B,SAASC,cAAc;AAEvB,MAAMC,qBAAqB,CAAyC;EAChEC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,iBAA2C,EAC3CC,cAAwC,EAClD;IAAA,KAJUH,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,iBAA2C,GAA3CA,iBAA2C;IAAA,KAC3CC,cAAwC,GAAxCA,cAAwC;EACjD;EAEH,MAAMC,OAAOA,CAACC,EAAU,EAAmD;IACvE,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACN,eAAe,CAACO,aAAa,CAAC,iBAAiB,CAAC;IAC9E,IAAI,CAACD,UAAU,EAAE;MACb,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIhB,kBAAkB,CAAC,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMiB,aAAa,GAAG,MAAM,IAAI,CAACN,cAAc,CAACC,OAAO,CAAC;MAAEC;IAAG,CAAC,CAAC;IAC/D,IAAII,aAAa,CAACC,MAAM,CAAC,CAAC,EAAE;MACxB,OAAOtB,MAAM,CAACoB,IAAI,CAACC,aAAa,CAACE,KAAK,CAAC;IAC3C;IAEA,MAAMC,IAAI,GAAGH,aAAa,CAACI,KAAK;;IAEhC;IACA,MAAMC,gBAAgB,GAAG,MAAM,IAAI,CAACZ,iBAAiB,CAACE,OAAO,CAACC,EAAE,CAAC;IACjE,IAAIS,gBAAgB,CAACJ,MAAM,CAAC,CAAC,EAAE;MAC3B,OAAOtB,MAAM,CAACoB,IAAI,CAACM,gBAAgB,CAACH,KAAK,CAAC;IAC9C;;IAEA;IACA,IAAI;MACA,MAAM,IAAI,CAACV,cAAc,CAACc,UAAU,CAACpB,QAAQ,CAACqB,QAAQ,CAACJ,IAAI,CAAC,CAAC;MAE7D,OAAOxB,MAAM,CAAC6B,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOC,YAAY,EAAE;MACnB,OAAO9B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,sBAAsB,CAACsB,YAAqB,CAAC,CAAC;IACzE;EACJ;AACJ;AAEA,OAAO,MAAM7B,iBAAiB,GAAGF,oBAAoB,CAAC;EAClDgC,WAAW,EAAEzB,kBAAkB;EAC/B0B,cAAc,EAAEtB,qBAAqB;EACrCuB,YAAY,EAAE,CAAC5B,eAAe,EAAEI,cAAc,EAAEP,cAAc,EAAEC,cAAc;AAClF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DeleteUser/DeleteUserUseCase.js","sources":["../../../../src/api/features/DeleteUser/DeleteUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/users/DeleteUser/index.js\";\nimport { GetUserUseCase } from \"@webiny/api-core/features/users/GetUser/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { DeleteUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Username } from \"~/api/domain/Username.js\";\nimport { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\nimport { CognitoService } from \"../CognitoService/abstractions.js\";\n\nclass DeleteUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private cognitoService: CognitoService.Interface,\n private deleteUserUseCase: CoreDeleteUser.Interface,\n private getUserUseCase: GetUserUseCase.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get user to have email for Cognito deletion\n const getUserResult = await this.getUserUseCase.execute({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const user = getUserResult.value;\n\n // Delete user from the database\n const deleteUserResult = await this.deleteUserUseCase.execute(id);\n if (deleteUserResult.isFail()) {\n return Result.fail(deleteUserResult.error);\n }\n\n // Delete user from Cognito\n try {\n await this.cognitoService.deleteUser(Username.fromUser(user));\n\n return Result.ok();\n } catch (cognitoError) {\n return Result.fail(new CognitoDeleteUserError(cognitoError as Error));\n }\n }\n}\n\nexport const DeleteUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteUserUseCaseImpl,\n dependencies: [IdentityContext, CognitoService, CoreDeleteUser, GetUserUseCase]\n});\n"],"names":["DeleteUserUseCaseImpl","identityContext","cognitoService","deleteUserUseCase","getUserUseCase","id","permission","Result","NotAuthorizedError","getUserResult","user","deleteUserResult","Username","cognitoError","CognitoDeleteUserError","DeleteUserUseCase","createImplementation","UseCaseAbstraction","IdentityContext","CognitoService","CoreDeleteUser","GetUserUseCase"],"mappings":";;;;;;;;;AAWA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,iBAA2C,EAC3CC,cAAwC,CAClD;aAJUH,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,iBAAiB,GAAjBA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAmD;QACvE,MAAMC,aAAa,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QAC5D,IAAI,CAACA,YACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAAEJ;QAAG;QAC7D,IAAII,cAAc,MAAM,IACpB,OAAOF,OAAO,IAAI,CAACE,cAAc,KAAK;QAG1C,MAAMC,OAAOD,cAAc,KAAK;QAGhC,MAAME,mBAAmB,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAACN;QAC9D,IAAIM,iBAAiB,MAAM,IACvB,OAAOJ,OAAO,IAAI,CAACI,iBAAiB,KAAK;QAI7C,IAAI;YACA,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAACC,SAAS,QAAQ,CAACF;YAEvD,OAAOH,OAAO,EAAE;QACpB,EAAE,OAAOM,cAAc;YACnB,OAAON,OAAO,IAAI,CAAC,IAAIO,uBAAuBD;QAClD;IACJ;AACJ;AAEO,MAAME,sCAAoBC,qBAAqB;IAClD,aAAaC;IACb,gBAAgBjB;IAChB,cAAc;QAACkB;QAAiBC;QAAgBC;QAAgBC;KAAe;AACnF"}
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const DeleteUserUseCase = createAbstraction("DeleteUserUseCase");
2
+ const DeleteUserUseCase = createAbstraction("DeleteUserUseCase");
3
+ export { DeleteUserUseCase };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport type { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/users/DeleteUser/index.js\";\nimport type { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\n\nexport interface IDeleteUserUseCaseErrors {\n authorization: NotAuthorizedError;\n deleteUser: CoreDeleteUser.Error;\n cognitoDeleteUser: CognitoDeleteUserError;\n}\n\ntype IDeleteAdminUserError = IDeleteUserUseCaseErrors[keyof IDeleteUserUseCaseErrors];\n\nexport interface IDeleteUserUseCase {\n execute(id: string): Promise<Result<void, IDeleteAdminUserError>>;\n}\n\nexport const DeleteUserUseCase = createAbstraction<IDeleteUserUseCase>(\"DeleteUserUseCase\");\n\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUserUseCase;\n export type Error = IDeleteAdminUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAkBvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DeleteUser/abstractions.js","sources":["../../../../src/api/features/DeleteUser/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { NotAuthorizedError } from \"@webiny/api-core/features/users/shared/errors.js\";\nimport type { DeleteUserUseCase as CoreDeleteUser } from \"@webiny/api-core/features/users/DeleteUser/index.js\";\nimport type { CognitoDeleteUserError } from \"~/api/domain/errors.js\";\n\nexport interface IDeleteUserUseCaseErrors {\n authorization: NotAuthorizedError;\n deleteUser: CoreDeleteUser.Error;\n cognitoDeleteUser: CognitoDeleteUserError;\n}\n\ntype IDeleteAdminUserError = IDeleteUserUseCaseErrors[keyof IDeleteUserUseCaseErrors];\n\nexport interface IDeleteUserUseCase {\n execute(id: string): Promise<Result<void, IDeleteAdminUserError>>;\n}\n\nexport const DeleteUserUseCase = createAbstraction<IDeleteUserUseCase>(\"DeleteUserUseCase\");\n\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUserUseCase;\n export type Error = IDeleteAdminUserError;\n}\n"],"names":["DeleteUserUseCase","createAbstraction"],"mappings":";AAkBO,MAAMA,oBAAoBC,kBAAsC"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { DeleteUserUseCase } from "./DeleteUserUseCase.js";
3
- export const DeleteUserFeature = createFeature({
4
- name: "DeleteUserFeature",
5
- register(container) {
6
- container.register(DeleteUserUseCase);
7
- }
3
+ const DeleteUserFeature = createFeature({
4
+ name: "DeleteUserFeature",
5
+ register (container) {
6
+ container.register(DeleteUserUseCase);
7
+ }
8
8
  });
9
+ export { DeleteUserFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","DeleteUserUseCase","DeleteUserFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase } from \"./DeleteUserUseCase.js\";\n\nexport const DeleteUserFeature = createFeature({\n name: \"DeleteUserFeature\",\n register(container) {\n container.register(DeleteUserUseCase);\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":[]}
1
+ {"version":3,"file":"api/features/DeleteUser/feature.js","sources":["../../../../src/api/features/DeleteUser/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { DeleteUserUseCase } from \"./DeleteUserUseCase.js\";\n\nexport const DeleteUserFeature = createFeature({\n name: \"DeleteUserFeature\",\n register(container) {\n container.register(DeleteUserUseCase);\n }\n});\n"],"names":["DeleteUserFeature","createFeature","container","DeleteUserUseCase"],"mappings":";;AAGO,MAAMA,oBAAoBC,cAAc;IAC3C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export * from "./abstractions.js";
2
2
  export * from "./feature.js";
3
-
4
- //# sourceMappingURL=index.js.map