@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.
- package/Cognito.d.ts +8 -0
- package/Cognito.js +29 -0
- package/Cognito.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/admin/Cognito.d.ts +6 -0
- package/admin/Cognito.js +51 -0
- package/admin/Cognito.js.map +1 -0
- package/admin/CognitoLogin.d.ts +7 -0
- package/admin/CognitoLogin.js +18 -0
- package/admin/CognitoLogin.js.map +1 -0
- package/admin/Extension.d.ts +2 -0
- package/admin/Extension.js +20 -0
- package/admin/Extension.js.map +1 -0
- package/admin/SecurityPermission.d.ts +2 -0
- package/admin/SecurityPermission.js +26 -0
- package/admin/SecurityPermission.js.map +1 -0
- package/admin/federatedIdentityProviders.d.ts +9 -0
- package/admin/federatedIdentityProviders.js +9 -0
- package/admin/federatedIdentityProviders.js.map +1 -0
- package/admin/plugins/constants.d.ts +3 -0
- package/admin/plugins/constants.js +6 -0
- package/admin/plugins/constants.js.map +1 -0
- package/admin/plugins/userMenu/AccountDetails.d.ts +6 -0
- package/admin/plugins/userMenu/AccountDetails.js +23 -0
- package/admin/plugins/userMenu/AccountDetails.js.map +1 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.d.ts +1 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.js +15 -0
- package/admin/plugins/userMenu/useIsDefaultTenant.js.map +1 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.d.ts +10 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.js +54 -0
- package/admin/presentation/Cognito/CognitoLoginScreen.js.map +1 -0
- package/admin/presentation/Cognito/CognitoPresenter.d.ts +58 -0
- package/admin/presentation/Cognito/CognitoPresenter.js +277 -0
- package/admin/presentation/Cognito/CognitoPresenter.js.map +1 -0
- package/admin/presentation/Cognito/abstractions.d.ts +72 -0
- package/admin/presentation/Cognito/abstractions.js +4 -0
- package/admin/presentation/Cognito/abstractions.js.map +1 -0
- package/admin/presentation/Cognito/components/Divider.d.ts +2 -0
- package/admin/presentation/Cognito/components/Divider.js +16 -0
- package/admin/presentation/Cognito/components/Divider.js.map +1 -0
- package/admin/presentation/Cognito/components/FederatedLogin.d.ts +7 -0
- package/admin/presentation/Cognito/components/FederatedLogin.js +32 -0
- package/admin/presentation/Cognito/components/FederatedLogin.js.map +1 -0
- package/admin/presentation/Cognito/components/FederatedProviders.d.ts +44 -0
- package/admin/presentation/Cognito/components/FederatedProviders.js +14 -0
- package/admin/presentation/Cognito/components/FederatedProviders.js.map +1 -0
- package/admin/presentation/Cognito/components/FooterSignIn.d.ts +6 -0
- package/admin/presentation/Cognito/components/FooterSignIn.js +15 -0
- package/admin/presentation/Cognito/components/FooterSignIn.js.map +1 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.d.ts +9 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js +43 -0
- package/admin/presentation/Cognito/components/PasswordResetCodeSent.js.map +1 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.d.ts +8 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js +45 -0
- package/admin/presentation/Cognito/components/RequestPasswordResetCode.js.map +1 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.d.ts +8 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.js +55 -0
- package/admin/presentation/Cognito/components/RequireNewPassword.js.map +1 -0
- package/admin/presentation/Cognito/components/SetNewPassword.d.ts +8 -0
- package/admin/presentation/Cognito/components/SetNewPassword.js +79 -0
- package/admin/presentation/Cognito/components/SetNewPassword.js.map +1 -0
- package/admin/presentation/Cognito/components/SignIn.d.ts +10 -0
- package/admin/presentation/Cognito/components/SignIn.js +64 -0
- package/admin/presentation/Cognito/components/SignIn.js.map +1 -0
- package/admin/presentation/Cognito/components/View.d.ts +98 -0
- package/admin/presentation/Cognito/components/View.js +67 -0
- package/admin/presentation/Cognito/components/View.js.map +1 -0
- package/admin/presentation/Cognito/feature.d.ts +3 -0
- package/admin/presentation/Cognito/feature.js +16 -0
- package/admin/presentation/Cognito/feature.js.map +1 -0
- package/admin/presentation/shared/createPasswordValidator.d.ts +8 -0
- package/admin/presentation/shared/createPasswordValidator.js +27 -0
- package/admin/presentation/shared/createPasswordValidator.js.map +1 -0
- package/admin/presentation/shared/usePasswordValidator.d.ts +1 -0
- package/admin/presentation/shared/usePasswordValidator.js +15 -0
- package/admin/presentation/shared/usePasswordValidator.js.map +1 -0
- package/admin/routes.d.ts +10 -0
- package/admin/routes.js +21 -0
- package/admin/routes.js.map +1 -0
- package/admin/ui/UserItem.d.ts +10 -0
- package/admin/ui/UserItem.js +3 -0
- package/admin/ui/UserItem.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImage.d.ts +3 -0
- package/admin/ui/components/AvatarImage/AvatarImage.js +43 -0
- package/admin/ui/components/AvatarImage/AvatarImage.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js +55 -0
- package/admin/ui/components/AvatarImage/AvatarImagePreview.js.map +1 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js +29 -0
- package/admin/ui/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
- package/admin/ui/components/AvatarImage/index.d.ts +1 -0
- package/admin/ui/components/AvatarImage/index.js +3 -0
- package/admin/ui/components/AvatarImage/index.js.map +1 -0
- package/admin/ui/views/Account/Account.d.ts +2 -0
- package/admin/ui/views/Account/Account.js +142 -0
- package/admin/ui/views/Account/Account.js.map +1 -0
- package/admin/ui/views/Account/graphql.d.ts +2 -0
- package/admin/ui/views/Account/graphql.js +40 -0
- package/admin/ui/views/Account/graphql.js.map +1 -0
- package/admin/ui/views/Account/index.d.ts +1 -0
- package/admin/ui/views/Account/index.js +3 -0
- package/admin/ui/views/Account/index.js.map +1 -0
- package/admin/ui/views/Users/UsersDataList.d.ts +3 -0
- package/admin/ui/views/Users/UsersDataList.js +172 -0
- package/admin/ui/views/Users/UsersDataList.js.map +1 -0
- package/admin/ui/views/Users/UsersForm.d.ts +5 -0
- package/admin/ui/views/Users/UsersForm.js +174 -0
- package/admin/ui/views/Users/UsersForm.js.map +1 -0
- package/admin/ui/views/Users/UsersView.d.ts +2 -0
- package/admin/ui/views/Users/UsersView.js +14 -0
- package/admin/ui/views/Users/UsersView.js.map +1 -0
- package/admin/ui/views/Users/components/DeleteAction.d.ts +7 -0
- package/admin/ui/views/Users/components/DeleteAction.js +36 -0
- package/admin/ui/views/Users/components/DeleteAction.js.map +1 -0
- package/admin/ui/views/Users/graphql.d.ts +5 -0
- package/admin/ui/views/Users/graphql.js +99 -0
- package/admin/ui/views/Users/graphql.js.map +1 -0
- package/admin/ui/views/Users/hooks/useUserForm.d.ts +27 -0
- package/admin/ui/views/Users/hooks/useUserForm.js +127 -0
- package/admin/ui/views/Users/hooks/useUserForm.js.map +1 -0
- package/admin/ui/views/Users/search.svg +20 -0
- package/admin/ui/views/utils.d.ts +3 -0
- package/admin/ui/views/utils.js +10 -0
- package/admin/ui/views/utils.js.map +1 -0
- package/api/CognitoApiFeature.d.ts +1 -0
- package/api/CognitoApiFeature.js +28 -0
- package/api/CognitoApiFeature.js.map +1 -0
- package/api/domain/Username.d.ts +4 -0
- package/api/domain/Username.js +7 -0
- package/api/domain/Username.js.map +1 -0
- package/api/domain/errors.d.ts +37 -0
- package/api/domain/errors.js +63 -0
- package/api/domain/errors.js.map +1 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.d.ts +15 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.js +61 -0
- package/api/features/CognitoIdp/CognitoIdentityProvider.js.map +1 -0
- package/api/features/CognitoIdp/abstractions.d.ts +15 -0
- package/api/features/CognitoIdp/abstractions.js +4 -0
- package/api/features/CognitoIdp/abstractions.js.map +1 -0
- package/api/features/CognitoIdp/feature.d.ts +1 -0
- package/api/features/CognitoIdp/feature.js +10 -0
- package/api/features/CognitoIdp/feature.js.map +1 -0
- package/api/features/CognitoIdp/index.d.ts +2 -0
- package/api/features/CognitoIdp/index.js +4 -0
- package/api/features/CognitoIdp/index.js.map +1 -0
- package/api/features/CognitoService/CognitoService.d.ts +20 -0
- package/api/features/CognitoService/CognitoService.js +90 -0
- package/api/features/CognitoService/CognitoService.js.map +1 -0
- package/api/features/CognitoService/abstractions.d.ts +54 -0
- package/api/features/CognitoService/abstractions.js +8 -0
- package/api/features/CognitoService/abstractions.js.map +1 -0
- package/api/features/CognitoService/feature.d.ts +5 -0
- package/api/features/CognitoService/feature.js +12 -0
- package/api/features/CognitoService/feature.js.map +1 -0
- package/api/features/CognitoService/index.d.ts +1 -0
- package/api/features/CognitoService/index.js +3 -0
- package/api/features/CognitoService/index.js.map +1 -0
- package/api/features/CreateUser/CreateUserUseCase.d.ts +22 -0
- package/api/features/CreateUser/CreateUserUseCase.js +106 -0
- package/api/features/CreateUser/CreateUserUseCase.js.map +1 -0
- package/api/features/CreateUser/abstractions.d.ts +35 -0
- package/api/features/CreateUser/abstractions.js +4 -0
- package/api/features/CreateUser/abstractions.js.map +1 -0
- package/api/features/CreateUser/feature.d.ts +1 -0
- package/api/features/CreateUser/feature.js +10 -0
- package/api/features/CreateUser/feature.js.map +1 -0
- package/api/features/CreateUser/index.d.ts +2 -0
- package/api/features/CreateUser/index.js +4 -0
- package/api/features/CreateUser/index.js.map +1 -0
- package/api/features/CreateUser/schema.d.ts +47 -0
- package/api/features/CreateUser/schema.js +17 -0
- package/api/features/CreateUser/schema.js.map +1 -0
- package/api/features/DeleteUser/DeleteUserUseCase.d.ts +16 -0
- package/api/features/DeleteUser/DeleteUserUseCase.js +54 -0
- package/api/features/DeleteUser/DeleteUserUseCase.js.map +1 -0
- package/api/features/DeleteUser/abstractions.d.ts +19 -0
- package/api/features/DeleteUser/abstractions.js +4 -0
- package/api/features/DeleteUser/abstractions.js.map +1 -0
- package/api/features/DeleteUser/feature.d.ts +1 -0
- package/api/features/DeleteUser/feature.js +10 -0
- package/api/features/DeleteUser/feature.js.map +1 -0
- package/api/features/DeleteUser/index.d.ts +2 -0
- package/api/features/DeleteUser/index.js +4 -0
- package/api/features/DeleteUser/index.js.map +1 -0
- package/api/features/UpdateUser/UpdateUserUseCase.d.ts +21 -0
- package/api/features/UpdateUser/UpdateUserUseCase.js +88 -0
- package/api/features/UpdateUser/UpdateUserUseCase.js.map +1 -0
- package/api/features/UpdateUser/abstractions.d.ts +33 -0
- package/api/features/UpdateUser/abstractions.js +4 -0
- package/api/features/UpdateUser/abstractions.js.map +1 -0
- package/api/features/UpdateUser/feature.d.ts +1 -0
- package/api/features/UpdateUser/feature.js +10 -0
- package/api/features/UpdateUser/feature.js.map +1 -0
- package/api/features/UpdateUser/index.d.ts +2 -0
- package/api/features/UpdateUser/index.js +4 -0
- package/api/features/UpdateUser/index.js.map +1 -0
- package/api/features/UpdateUser/schema.d.ts +44 -0
- package/api/features/UpdateUser/schema.js +16 -0
- package/api/features/UpdateUser/schema.js.map +1 -0
- package/api/features/UserInstaller/UserInstaller.d.ts +27 -0
- package/api/features/UserInstaller/UserInstaller.js +48 -0
- package/api/features/UserInstaller/UserInstaller.js.map +1 -0
- package/api/features/UserInstaller/feature.d.ts +1 -0
- package/api/features/UserInstaller/feature.js +10 -0
- package/api/features/UserInstaller/feature.js.map +1 -0
- package/api/graphql/user.gql.d.ts +8 -0
- package/api/graphql/user.gql.js +167 -0
- package/api/graphql/user.gql.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +4 -0
- package/index.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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
package/index.js
ADDED
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
|
+
}
|