@webiny/api-core 6.0.0 → 6.1.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.
- package/domain/security/ApiToken.d.ts +1 -0
- package/domain/security/ApiToken.js +1 -0
- package/domain/security/ApiToken.js.map +1 -1
- package/exports/api/security.d.ts +2 -0
- package/exports/api/security.js +2 -0
- package/exports/api/security.js.map +1 -1
- package/features/buildParams/abstractions.d.ts +2 -0
- package/features/buildParams/abstractions.js +2 -0
- package/features/buildParams/abstractions.js.map +1 -1
- package/features/eventPublisher/abstractions.d.ts +2 -0
- package/features/eventPublisher/abstractions.js +3 -0
- package/features/eventPublisher/abstractions.js.map +1 -1
- package/features/keyValueStore/abstractions.d.ts +4 -0
- package/features/keyValueStore/abstractions.js +4 -0
- package/features/keyValueStore/abstractions.js.map +1 -1
- package/features/logger/abstractions.d.ts +1 -0
- package/features/logger/abstractions.js +1 -0
- package/features/logger/abstractions.js.map +1 -1
- package/features/security/IdentityContext/abstractions.d.ts +1 -0
- package/features/security/IdentityContext/abstractions.js +1 -0
- package/features/security/IdentityContext/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/CreateApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/CreateApiKey/events.js +4 -0
- package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/DeleteApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/DeleteApiKey/events.js +4 -0
- package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
- package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
- package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
- package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
- package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
- package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
- package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
- package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
- package/features/security/apiKeys/UpdateApiKey/events.d.ts +2 -0
- package/features/security/apiKeys/UpdateApiKey/events.js +4 -0
- package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
- package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
- package/features/security/apiKeys/shared/abstractions.js +3 -0
- package/features/security/apiKeys/shared/abstractions.js.map +1 -1
- package/features/security/apiKeys/shared/schemas.d.ts +10 -71
- package/features/security/apiKeys/shared/schemas.js +4 -4
- package/features/security/apiKeys/shared/schemas.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
- package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
- package/features/security/authentication/AuthenticationContext/events.d.ts +2 -0
- package/features/security/authentication/AuthenticationContext/events.js +4 -0
- package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
- package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
- package/features/security/authentication/Authenticator/abstractions.js +1 -0
- package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
- package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
- package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
- package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
- package/features/security/authorization/Authorizer/abstractions.js +1 -0
- package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
- package/features/security/login/abstractions.d.ts +1 -0
- package/features/security/login/abstractions.js +2 -0
- package/features/security/login/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
- package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
- package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
- package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
- package/features/security/roles/CreateRole/abstractions.js +1 -0
- package/features/security/roles/CreateRole/abstractions.js.map +1 -1
- package/features/security/roles/CreateRole/events.d.ts +2 -0
- package/features/security/roles/CreateRole/events.js +4 -0
- package/features/security/roles/CreateRole/events.js.map +1 -1
- package/features/security/roles/CreateRole/schema.d.ts +2 -20
- package/features/security/roles/CreateRole/schema.js +2 -2
- package/features/security/roles/CreateRole/schema.js.map +1 -1
- package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
- package/features/security/roles/DeleteRole/abstractions.js +1 -0
- package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
- package/features/security/roles/DeleteRole/events.d.ts +2 -0
- package/features/security/roles/DeleteRole/events.js +4 -0
- package/features/security/roles/DeleteRole/events.js.map +1 -1
- package/features/security/roles/GetRole/abstractions.d.ts +1 -0
- package/features/security/roles/GetRole/abstractions.js +1 -0
- package/features/security/roles/GetRole/abstractions.js.map +1 -1
- package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
- package/features/security/roles/ListRoles/abstractions.js +1 -0
- package/features/security/roles/ListRoles/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
- package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
- package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
- package/features/security/roles/UpdateRole/abstractions.js +1 -0
- package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
- package/features/security/roles/UpdateRole/events.d.ts +2 -0
- package/features/security/roles/UpdateRole/events.js +4 -0
- package/features/security/roles/UpdateRole/events.js.map +1 -1
- package/features/security/roles/UpdateRole/schema.d.ts +2 -18
- package/features/security/roles/UpdateRole/schema.js +2 -2
- package/features/security/roles/UpdateRole/schema.js.map +1 -1
- package/features/security/roles/feature.js +2 -0
- package/features/security/roles/feature.js.map +1 -1
- package/features/security/roles/shared/RoleProvider.d.ts +13 -0
- package/features/security/roles/shared/RoleProvider.js +29 -0
- package/features/security/roles/shared/RoleProvider.js.map +1 -0
- package/features/security/roles/shared/RolesRepository.d.ts +3 -1
- package/features/security/roles/shared/RolesRepository.js +19 -18
- package/features/security/roles/shared/RolesRepository.js.map +1 -1
- package/features/security/roles/shared/abstractions.d.ts +19 -0
- package/features/security/roles/shared/abstractions.js +3 -0
- package/features/security/roles/shared/abstractions.js.map +1 -1
- package/features/security/shared/abstractions.d.ts +5 -14
- package/features/security/shared/abstractions.js +3 -16
- package/features/security/shared/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
- package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
- package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/CreateTeam/abstractions.js +1 -0
- package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
- package/features/security/teams/CreateTeam/events.d.ts +2 -0
- package/features/security/teams/CreateTeam/events.js +4 -0
- package/features/security/teams/CreateTeam/events.js.map +1 -1
- package/features/security/teams/CreateTeam/schema.d.ts +2 -12
- package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js +1 -0
- package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
- package/features/security/teams/DeleteTeam/events.d.ts +2 -0
- package/features/security/teams/DeleteTeam/events.js +4 -0
- package/features/security/teams/DeleteTeam/events.js.map +1 -1
- package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
- package/features/security/teams/GetTeam/abstractions.js +1 -0
- package/features/security/teams/GetTeam/abstractions.js.map +1 -1
- package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
- package/features/security/teams/ListTeams/abstractions.js +1 -0
- package/features/security/teams/ListTeams/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
- package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
- package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js +1 -0
- package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
- package/features/security/teams/UpdateTeam/events.d.ts +2 -0
- package/features/security/teams/UpdateTeam/events.js +4 -0
- package/features/security/teams/UpdateTeam/events.js.map +1 -1
- package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
- package/features/security/teams/feature.js +6 -0
- package/features/security/teams/feature.js.map +1 -1
- package/features/security/teams/shared/TeamProvider.d.ts +13 -0
- package/features/security/teams/shared/TeamProvider.js +29 -0
- package/features/security/teams/shared/TeamProvider.js.map +1 -0
- package/features/security/teams/shared/TeamsRepository.js +20 -18
- package/features/security/teams/shared/TeamsRepository.js.map +1 -1
- package/features/security/teams/shared/abstractions.d.ts +18 -0
- package/features/security/teams/shared/abstractions.js +3 -0
- package/features/security/teams/shared/abstractions.js.map +1 -1
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
- package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
- package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
- package/features/security/utils/verifyJwtUsingJwk.js +1 -1
- package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
- package/features/system/InstallSystem/abstractions.d.ts +2 -3
- package/features/system/InstallSystem/abstractions.js +2 -3
- package/features/system/InstallSystem/abstractions.js.map +1 -1
- package/features/task/TaskController/abstractions.d.ts +1 -0
- package/features/task/TaskController/abstractions.js +1 -0
- package/features/task/TaskController/abstractions.js.map +1 -1
- package/features/task/TaskDefinition/abstractions.d.ts +1 -0
- package/features/task/TaskDefinition/abstractions.js +1 -0
- package/features/task/TaskDefinition/abstractions.js.map +1 -1
- package/features/task/TaskService/abstractions.d.ts +1 -0
- package/features/task/TaskService/abstractions.js +1 -0
- package/features/task/TaskService/abstractions.js.map +1 -1
- package/features/tenancy/CreateTenant/abstractions.d.ts +5 -3
- package/features/tenancy/CreateTenant/abstractions.js +5 -3
- package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
- package/features/tenancy/DeleteTenant/abstractions.d.ts +5 -0
- package/features/tenancy/DeleteTenant/abstractions.js +5 -0
- package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
- package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
- package/features/tenancy/GetTenantById/abstractions.js +3 -9
- package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
- package/features/tenancy/InstallTenant/abstractions.d.ts +3 -9
- package/features/tenancy/InstallTenant/abstractions.js +3 -12
- package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
- package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
- package/features/tenancy/TenantContext/abstractions.js +1 -0
- package/features/tenancy/TenantContext/abstractions.js.map +1 -1
- package/features/tenancy/UpdateTenant/abstractions.d.ts +5 -0
- package/features/tenancy/UpdateTenant/abstractions.js +5 -0
- package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js +1 -1
- package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
- package/features/users/CreateUser/abstractions.d.ts +1 -0
- package/features/users/CreateUser/abstractions.js +1 -1
- package/features/users/CreateUser/abstractions.js.map +1 -1
- package/features/users/CreateUser/events.d.ts +2 -0
- package/features/users/CreateUser/events.js +4 -0
- package/features/users/CreateUser/events.js.map +1 -1
- package/features/users/CreateUser/schema.d.ts +4 -36
- package/features/users/DeleteUser/abstractions.d.ts +1 -0
- package/features/users/DeleteUser/abstractions.js +1 -1
- package/features/users/DeleteUser/abstractions.js.map +1 -1
- package/features/users/DeleteUser/events.d.ts +2 -0
- package/features/users/DeleteUser/events.js +4 -0
- package/features/users/DeleteUser/events.js.map +1 -1
- package/features/users/GetUser/abstractions.d.ts +1 -0
- package/features/users/GetUser/abstractions.js +1 -1
- package/features/users/GetUser/abstractions.js.map +1 -1
- package/features/users/ListUserTeams/abstractions.d.ts +1 -0
- package/features/users/ListUserTeams/abstractions.js +1 -1
- package/features/users/ListUserTeams/abstractions.js.map +1 -1
- package/features/users/ListUsers/abstractions.d.ts +1 -0
- package/features/users/ListUsers/abstractions.js +1 -1
- package/features/users/ListUsers/abstractions.js.map +1 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
- package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
- package/features/users/UpdateUser/abstractions.d.ts +1 -0
- package/features/users/UpdateUser/abstractions.js +1 -1
- package/features/users/UpdateUser/abstractions.js.map +1 -1
- package/features/users/UpdateUser/events.d.ts +2 -0
- package/features/users/UpdateUser/events.js +4 -0
- package/features/users/UpdateUser/events.js.map +1 -1
- package/features/users/UpdateUser/schema.d.ts +4 -30
- package/features/users/shared/abstractions.d.ts +1 -0
- package/features/users/shared/abstractions.js +1 -1
- package/features/users/shared/abstractions.js.map +1 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +0 -1
- package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
- package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
- package/graphql/security/NotAuthorizedResponse.js +1 -0
- package/graphql/security/NotAuthorizedResponse.js.map +1 -1
- package/idp/abstractions.d.ts +4 -0
- package/idp/abstractions.js +4 -0
- package/idp/abstractions.js.map +1 -1
- package/legacy/security/createSecurityContext.js +0 -11
- package/legacy/security/createSecurityContext.js.map +1 -1
- package/models/base/BaseModel.js +2 -2
- package/models/base/BaseModel.js.map +1 -1
- package/models/base/ModelBuilder.d.ts +2 -2
- package/models/base/ModelBuilder.js +21 -2
- package/models/base/ModelBuilder.js.map +1 -1
- package/models/cms/FieldBuilder.d.ts +3 -2
- package/models/cms/FieldBuilder.js +12 -17
- package/models/cms/FieldBuilder.js.map +1 -1
- package/models/cms/FieldBuilderRegistry.d.ts +1 -1
- package/models/cms/FieldBuilderRegistry.js.map +1 -1
- package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
- package/models/cms/FieldDefinitionsBuilder.js +13 -15
- package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
- package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
- package/models/cms/abstractions.d.ts +1 -1
- package/models/cms/abstractions.js.map +1 -1
- package/models/cms/fieldsBuilder.md +1 -1
- package/models/simple/Page/abstractions.d.ts +1 -11
- package/package.json +20 -20
- package/types/security.d.ts +13 -10
- package/types/security.js.map +1 -1
- package/features/security/shared/abstractions.ts.bak +0 -52
- package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
- package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
- package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
- package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
- package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","UserBeforeCreateEventHandler","UserAfterCreateEvent","UserAfterCreateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeCreatePayload, UserAfterCreatePayload } from \"./abstractions.js\";\n\n// Before Create Event\nexport class UserBeforeCreateEvent extends DomainEvent<UserBeforeCreatePayload> {\n eventType = \"user.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeCreateEventHandler;\n }\n}\n\nexport const UserBeforeCreateEventHandler = createAbstraction<IEventHandler<UserBeforeCreateEvent>>(\n \"UserBeforeCreateEventHandler\"\n);\n\nexport namespace UserBeforeCreateEventHandler {\n export type Interface = IEventHandler<UserBeforeCreateEvent>;\n export type Event = UserBeforeCreateEvent;\n}\n\n// After Create Event\nexport class UserAfterCreateEvent extends DomainEvent<UserAfterCreatePayload> {\n eventType = \"user.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterCreateEventHandler;\n }\n}\n\nexport const UserAfterCreateEventHandler = createAbstraction<IEventHandler<UserAfterCreateEvent>>(\n \"UserAfterCreateEventHandler\"\n);\n\nexport namespace UserAfterCreateEventHandler {\n export type Interface = IEventHandler<UserAfterCreateEvent>;\n export type Event = UserAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeCreateEvent","eventType","getHandlerAbstraction","UserBeforeCreateEventHandler","UserAfterCreateEvent","UserAfterCreateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeCreatePayload, UserAfterCreatePayload } from \"./abstractions.js\";\n\n// Before Create Event\nexport class UserBeforeCreateEvent extends DomainEvent<UserBeforeCreatePayload> {\n eventType = \"user.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is created. */\nexport const UserBeforeCreateEventHandler = createAbstraction<IEventHandler<UserBeforeCreateEvent>>(\n \"UserBeforeCreateEventHandler\"\n);\n\nexport namespace UserBeforeCreateEventHandler {\n export type Interface = IEventHandler<UserBeforeCreateEvent>;\n export type Event = UserBeforeCreateEvent;\n}\n\n// After Create Event\nexport class UserAfterCreateEvent extends DomainEvent<UserAfterCreatePayload> {\n eventType = \"user.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterCreateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is created. */\nexport const UserAfterCreateEventHandler = createAbstraction<IEventHandler<UserAfterCreateEvent>>(\n \"UserAfterCreateEventHandler\"\n);\n\nexport namespace UserAfterCreateEventHandler {\n export type Interface = IEventHandler<UserAfterCreateEvent>;\n export type Event = UserAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -8,40 +8,8 @@ export declare const createUserValidation: z.ZodObject<{
|
|
|
8
8
|
avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
9
9
|
id: z.ZodString;
|
|
10
10
|
src: z.ZodString;
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, {
|
|
15
|
-
id: string;
|
|
16
|
-
src: string;
|
|
17
|
-
}>>>;
|
|
18
|
-
roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
19
|
-
teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
11
|
+
}, z.core.$strip>>>;
|
|
12
|
+
roles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
13
|
+
teams: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
20
14
|
external: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
21
|
-
},
|
|
22
|
-
email: string;
|
|
23
|
-
external: boolean;
|
|
24
|
-
roles: string[];
|
|
25
|
-
teams: string[];
|
|
26
|
-
firstName?: string | undefined;
|
|
27
|
-
lastName?: string | undefined;
|
|
28
|
-
id?: string | undefined;
|
|
29
|
-
displayName?: string | undefined;
|
|
30
|
-
avatar?: {
|
|
31
|
-
id: string;
|
|
32
|
-
src: string;
|
|
33
|
-
} | null | undefined;
|
|
34
|
-
}, {
|
|
35
|
-
email: string;
|
|
36
|
-
firstName?: string | undefined;
|
|
37
|
-
lastName?: string | undefined;
|
|
38
|
-
external?: boolean | undefined;
|
|
39
|
-
id?: string | undefined;
|
|
40
|
-
displayName?: string | undefined;
|
|
41
|
-
roles?: string[] | undefined;
|
|
42
|
-
teams?: string[] | undefined;
|
|
43
|
-
avatar?: {
|
|
44
|
-
id: string;
|
|
45
|
-
src: string;
|
|
46
|
-
} | null | undefined;
|
|
47
|
-
}>;
|
|
15
|
+
}, z.core.$strip>;
|
|
@@ -11,6 +11,7 @@ export type DeleteUserError = IDeleteUserErrors[keyof IDeleteUserErrors] | Admin
|
|
|
11
11
|
export interface IDeleteUser {
|
|
12
12
|
execute(id: string): Promise<Result<void, DeleteUserError>>;
|
|
13
13
|
}
|
|
14
|
+
/** Delete an admin user. */
|
|
14
15
|
export declare const DeleteUserUseCase: import("@webiny/di").Abstraction<IDeleteUser>;
|
|
15
16
|
export declare namespace DeleteUserUseCase {
|
|
16
17
|
type Interface = IDeleteUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","DeleteUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\nimport { CannotDeleteOwnAccountError } from \"./errors.js\";\n\n// Use case specific errors\nexport interface IDeleteUserErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeleteOwnAccount: CannotDeleteOwnAccountError;\n}\n\n// Combined error type (use case errors + repository errors)\nexport type DeleteUserError =\n | IDeleteUserErrors[keyof IDeleteUserErrors]\n | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IDeleteUser {\n execute(id: string): Promise<Result<void, DeleteUserError>>;\n}\n\n/** Delete an admin user. */\nexport const DeleteUserUseCase = createAbstraction<IDeleteUser>(\"DeleteUserUseCase\");\n\n// Namespace exports\nexport namespace DeleteUserUseCase {\n export type Interface = IDeleteUser;\n export type Error = DeleteUserError;\n}\n\n// Event payload types\nexport interface UserBeforeDeletePayload {\n user: AdminUser;\n}\n\nexport interface UserAfterDeletePayload {\n user: AdminUser;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAMA;;AAKA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export declare class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeleteP
|
|
|
5
5
|
eventType: "user.beforeDelete";
|
|
6
6
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
|
|
7
7
|
}
|
|
8
|
+
/** Hook into user lifecycle before a user is deleted. */
|
|
8
9
|
export declare const UserBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeDeleteEvent>>;
|
|
9
10
|
export declare namespace UserBeforeDeleteEventHandler {
|
|
10
11
|
type Interface = IEventHandler<UserBeforeDeleteEvent>;
|
|
@@ -14,6 +15,7 @@ export declare class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePay
|
|
|
14
15
|
eventType: "user.afterDelete";
|
|
15
16
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
|
|
16
17
|
}
|
|
18
|
+
/** Hook into user lifecycle after a user is deleted. */
|
|
17
19
|
export declare const UserAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterDeleteEvent>>;
|
|
18
20
|
export declare namespace UserAfterDeleteEventHandler {
|
|
19
21
|
type Interface = IEventHandler<UserAfterDeleteEvent>;
|
|
@@ -7,6 +7,8 @@ export class UserBeforeDeleteEvent extends DomainEvent {
|
|
|
7
7
|
return UserBeforeDeleteEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
+
|
|
11
|
+
/** Hook into user lifecycle before a user is deleted. */
|
|
10
12
|
export const UserBeforeDeleteEventHandler = createAbstraction("UserBeforeDeleteEventHandler");
|
|
11
13
|
// After Delete Event
|
|
12
14
|
export class UserAfterDeleteEvent extends DomainEvent {
|
|
@@ -15,6 +17,8 @@ export class UserAfterDeleteEvent extends DomainEvent {
|
|
|
15
17
|
return UserAfterDeleteEventHandler;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
20
|
+
|
|
21
|
+
/** Hook into user lifecycle after a user is deleted. */
|
|
18
22
|
export const UserAfterDeleteEventHandler = createAbstraction("UserAfterDeleteEventHandler");
|
|
19
23
|
|
|
20
24
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","UserBeforeDeleteEventHandler","UserAfterDeleteEvent","UserAfterDeleteEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeDeletePayload, UserAfterDeletePayload } from \"./abstractions.js\";\n\n// Before Delete Event\nexport class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeletePayload> {\n eventType = \"user.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeDeleteEventHandler;\n }\n}\n\nexport const UserBeforeDeleteEventHandler = createAbstraction<IEventHandler<UserBeforeDeleteEvent>>(\n \"UserBeforeDeleteEventHandler\"\n);\n\nexport namespace UserBeforeDeleteEventHandler {\n export type Interface = IEventHandler<UserBeforeDeleteEvent>;\n export type Event = UserBeforeDeleteEvent;\n}\n\n// After Delete Event\nexport class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePayload> {\n eventType = \"user.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return UserAfterDeleteEventHandler;\n }\n}\n\nexport const UserAfterDeleteEventHandler = createAbstraction<IEventHandler<UserAfterDeleteEvent>>(\n \"UserAfterDeleteEventHandler\"\n);\n\nexport namespace UserAfterDeleteEventHandler {\n export type Interface = IEventHandler<UserAfterDeleteEvent>;\n export type Event = UserAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeDeleteEvent","eventType","getHandlerAbstraction","UserBeforeDeleteEventHandler","UserAfterDeleteEvent","UserAfterDeleteEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeDeletePayload, UserAfterDeletePayload } from \"./abstractions.js\";\n\n// Before Delete Event\nexport class UserBeforeDeleteEvent extends DomainEvent<UserBeforeDeletePayload> {\n eventType = \"user.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is deleted. */\nexport const UserBeforeDeleteEventHandler = createAbstraction<IEventHandler<UserBeforeDeleteEvent>>(\n \"UserBeforeDeleteEventHandler\"\n);\n\nexport namespace UserBeforeDeleteEventHandler {\n export type Interface = IEventHandler<UserBeforeDeleteEvent>;\n export type Event = UserBeforeDeleteEvent;\n}\n\n// After Delete Event\nexport class UserAfterDeleteEvent extends DomainEvent<UserAfterDeletePayload> {\n eventType = \"user.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return UserAfterDeleteEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is deleted. */\nexport const UserAfterDeleteEventHandler = createAbstraction<IEventHandler<UserAfterDeleteEvent>>(\n \"UserAfterDeleteEventHandler\"\n);\n\nexport namespace UserAfterDeleteEventHandler {\n export type Interface = IEventHandler<UserAfterDeleteEvent>;\n export type Event = UserAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ type GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.
|
|
|
10
10
|
export interface IGetUser {
|
|
11
11
|
execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;
|
|
12
12
|
}
|
|
13
|
+
/** Retrieve an admin user. */
|
|
13
14
|
export declare const GetUserUseCase: import("@webiny/di").Abstraction<IGetUser>;
|
|
14
15
|
export declare namespace GetUserUseCase {
|
|
15
16
|
type Interface = IGetUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","GetUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { GetUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IGetUserErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype GetUserError = IGetUserErrors[keyof IGetUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IGetUser {\n execute(input: GetUserInput): Promise<Result<AdminUser, GetUserError>>;\n}\n\n/** Retrieve an admin user. */\nexport const GetUserUseCase = createAbstraction<IGetUser>(\"GetUserUseCase\");\n\n// Namespace exports\nexport namespace GetUserUseCase {\n export type Interface = IGetUser;\n export type Error = GetUserError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC;;AAE3E","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ type ListUserTeamsError = AdminUsersRepository.Error;
|
|
|
7
7
|
export interface IListUserTeams {
|
|
8
8
|
execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;
|
|
9
9
|
}
|
|
10
|
+
/** List teams assigned to a user. */
|
|
10
11
|
export declare const ListUserTeamsUseCase: import("@webiny/di").Abstraction<IListUserTeams>;
|
|
11
12
|
export declare namespace ListUserTeamsUseCase {
|
|
12
13
|
type Interface = IListUserTeams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","ListUserTeamsUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Team } from \"~/types/security.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\n\n// Use case specific errors - none for this use case\nexport interface IListUserTeamsErrors {\n // No specific errors beyond repository errors\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUserTeamsError = AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUserTeams {\n execute(userId: string): Promise<Result<Team[], ListUserTeamsError>>;\n}\n\n/** List teams assigned to a user. */\nexport const ListUserTeamsUseCase = createAbstraction<IListUserTeams>(\"ListUserTeamsUseCase\");\n\n// Namespace exports\nexport namespace ListUserTeamsUseCase {\n export type Interface = IListUserTeams;\n export type Error = ListUserTeamsError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CAAiB,sBAAsB,CAAC;;AAE7F","ignoreList":[]}
|
|
@@ -10,6 +10,7 @@ type ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepos
|
|
|
10
10
|
export interface IListUsers {
|
|
11
11
|
execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;
|
|
12
12
|
}
|
|
13
|
+
/** List all admin users. */
|
|
13
14
|
export declare const ListUsersUseCase: import("@webiny/di").Abstraction<IListUsers>;
|
|
14
15
|
export declare namespace ListUsersUseCase {
|
|
15
16
|
type Interface = IListUsers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","ListUsersUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { ListUsersInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { NotAuthorizedError } from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IListUsersErrors {\n notAuthorized: NotAuthorizedError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype ListUsersError = IListUsersErrors[keyof IListUsersErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IListUsers {\n execute(input?: ListUsersInput): Promise<Result<AdminUser[], ListUsersError>>;\n}\n\n/** List all admin users. */\nexport const ListUsersUseCase = createAbstraction<IListUsers>(\"ListUsersUseCase\");\n\n// Namespace exports\nexport namespace ListUsersUseCase {\n export type Interface = IListUsers;\n export type Error = ListUsersError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAOvD;;AAKA;;AAGA;;AAKA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC;;AAEjF","ignoreList":[]}
|
|
@@ -23,7 +23,7 @@ class UpdateUserUseCaseImpl {
|
|
|
23
23
|
// 2. Validate input
|
|
24
24
|
const validation = updateUserValidation.safeParse(input);
|
|
25
25
|
if (!validation.success) {
|
|
26
|
-
return Result.fail(new UserValidationError(validation.error.
|
|
26
|
+
return Result.fail(new UserValidationError(validation.error.issues[0].message));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
// If the input contains email, check if it is free to use.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","
|
|
1
|
+
{"version":3,"names":["createImplementation","Result","IdentityContext","EventPublisher","UpdateUserUseCase","UseCaseAbstraction","AdminUsersRepository","updateUserValidation","NotAuthorizedError","EmailTakenError","UserValidationError","UserBeforeUpdateEvent","UserAfterUpdateEvent","UpdateUserUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","id","input","permission","getPermission","fail","validation","safeParse","success","error","issues","message","email","existingUserResult","get","isOk","value","getUserResult","isFail","originalUser","updateData","structuredClone","data","publish","user","updatedUser","result","update","ok","abstraction","implementation","dependencies"],"sources":["UpdateUserUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"~/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { UpdateUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport { updateUserValidation } from \"./schema.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\nimport { UserBeforeUpdateEvent, UserAfterUpdateEvent } from \"./events.js\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\n\nclass UpdateUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: AdminUsersRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateUserInput\n ): Promise<Result<AdminUser, UseCaseAbstraction.Error>> {\n // 1. Check permission\n const permission = await this.identityContext.getPermission(\"adminUsers.user\");\n if (!permission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // 2. Validate input\n const validation = updateUserValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new UserValidationError(validation.error.issues[0].message));\n }\n\n // If the input contains email, check if it is free to use.\n if (input.email) {\n const existingUserResult = await this.repository.get({ email: input.email });\n if (existingUserResult.isOk()) {\n if (existingUserResult.value.id !== id) {\n return Result.fail(new EmailTakenError(input.email));\n }\n }\n }\n // 3. Get existing user\n const getUserResult = await this.repository.get({ id });\n if (getUserResult.isFail()) {\n return Result.fail(getUserResult.error);\n }\n\n const originalUser = getUserResult.value;\n\n // 4. Clone update data for event modification\n const updateData = structuredClone(validation.data);\n\n // 5. Publish before event\n await this.eventPublisher.publish(\n new UserBeforeUpdateEvent({ user: originalUser, updateData, input: validation.data })\n );\n\n // 6. Merge updates with existing user\n const updatedUser: AdminUser = {\n ...originalUser,\n ...updateData\n };\n\n // 7. Update user via repository\n const result = await this.repository.update(updatedUser);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n // 8. Publish after event\n await this.eventPublisher.publish(\n new UserAfterUpdateEvent({\n originalUser,\n updatedUser: result.value,\n input: validation.data\n })\n );\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateUserUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateUserUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, AdminUsersRepository]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ type UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRe
|
|
|
12
12
|
export interface IUpdateUser {
|
|
13
13
|
execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;
|
|
14
14
|
}
|
|
15
|
+
/** Update an existing admin user. */
|
|
15
16
|
export declare const UpdateUserUseCase: import("@webiny/di").Abstraction<IUpdateUser>;
|
|
16
17
|
export declare namespace UpdateUserUseCase {
|
|
17
18
|
type Interface = IUpdateUser;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","UpdateUserUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/features/users/shared/types.js\";\nimport type { UpdateUserInput } from \"~/features/users/shared/types.js\";\nimport { AdminUsersRepository } from \"~/features/users/shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n EmailTakenError,\n UserValidationError\n} from \"~/features/users/shared/errors.js\";\n\n// Use case specific errors\nexport interface IUpdateUserErrors {\n notAuthorized: NotAuthorizedError;\n validation: UserValidationError;\n userExists: EmailTakenError;\n}\n\n// Combined error type (use case errors + repository errors)\ntype UpdateUserError = IUpdateUserErrors[keyof IUpdateUserErrors] | AdminUsersRepository.Error;\n\n// Use case interface\nexport interface IUpdateUser {\n execute(id: string, input: UpdateUserInput): Promise<Result<AdminUser, UpdateUserError>>;\n}\n\n/** Update an existing admin user. */\nexport const UpdateUserUseCase = createAbstraction<IUpdateUser>(\"UpdateUserUseCase\");\n\n// Namespace exports\nexport namespace UpdateUserUseCase {\n export type Interface = IUpdateUser;\n export type Error = UpdateUserError;\n}\n\n// Event payload types\nexport interface UserBeforeUpdatePayload {\n user: AdminUser;\n updateData: Partial<AdminUser>;\n input: UpdateUserInput;\n}\n\nexport interface UserAfterUpdatePayload {\n originalUser: AdminUser;\n updatedUser: AdminUser;\n input: UpdateUserInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAWvD;;AAOA;;AAGA;;AAKA;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC;;AAEpF;;AAMA","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ export declare class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdateP
|
|
|
5
5
|
eventType: "user.beforeUpdate";
|
|
6
6
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
|
|
7
7
|
}
|
|
8
|
+
/** Hook into user lifecycle before a user is updated. */
|
|
8
9
|
export declare const UserBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserBeforeUpdateEvent>>;
|
|
9
10
|
export declare namespace UserBeforeUpdateEventHandler {
|
|
10
11
|
type Interface = IEventHandler<UserBeforeUpdateEvent>;
|
|
@@ -14,6 +15,7 @@ export declare class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePay
|
|
|
14
15
|
eventType: "user.afterUpdate";
|
|
15
16
|
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
|
|
16
17
|
}
|
|
18
|
+
/** Hook into user lifecycle after a user is updated. */
|
|
17
19
|
export declare const UserAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<UserAfterUpdateEvent>>;
|
|
18
20
|
export declare namespace UserAfterUpdateEventHandler {
|
|
19
21
|
type Interface = IEventHandler<UserAfterUpdateEvent>;
|
|
@@ -7,6 +7,8 @@ export class UserBeforeUpdateEvent extends DomainEvent {
|
|
|
7
7
|
return UserBeforeUpdateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
+
|
|
11
|
+
/** Hook into user lifecycle before a user is updated. */
|
|
10
12
|
export const UserBeforeUpdateEventHandler = createAbstraction("UserBeforeUpdateEventHandler");
|
|
11
13
|
// After Update Event
|
|
12
14
|
export class UserAfterUpdateEvent extends DomainEvent {
|
|
@@ -15,6 +17,8 @@ export class UserAfterUpdateEvent extends DomainEvent {
|
|
|
15
17
|
return UserAfterUpdateEventHandler;
|
|
16
18
|
}
|
|
17
19
|
}
|
|
20
|
+
|
|
21
|
+
/** Hook into user lifecycle after a user is updated. */
|
|
18
22
|
export const UserAfterUpdateEventHandler = createAbstraction("UserAfterUpdateEventHandler");
|
|
19
23
|
|
|
20
24
|
//# sourceMappingURL=events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","UserBeforeUpdateEventHandler","UserAfterUpdateEvent","UserAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeUpdatePayload, UserAfterUpdatePayload } from \"./abstractions.js\";\n\n// Before Update Event\nexport class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdatePayload> {\n eventType = \"user.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeUpdateEventHandler;\n }\n}\n\nexport const UserBeforeUpdateEventHandler = createAbstraction<IEventHandler<UserBeforeUpdateEvent>>(\n \"UserBeforeUpdateEventHandler\"\n);\n\nexport namespace UserBeforeUpdateEventHandler {\n export type Interface = IEventHandler<UserBeforeUpdateEvent>;\n export type Event = UserBeforeUpdateEvent;\n}\n\n// After Update Event\nexport class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePayload> {\n eventType = \"user.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterUpdateEventHandler;\n }\n}\n\nexport const UserAfterUpdateEventHandler = createAbstraction<IEventHandler<UserAfterUpdateEvent>>(\n \"UserAfterUpdateEventHandler\"\n);\n\nexport namespace UserAfterUpdateEventHandler {\n export type Interface = IEventHandler<UserAfterUpdateEvent>;\n export type Event = UserAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","UserBeforeUpdateEvent","eventType","getHandlerAbstraction","UserBeforeUpdateEventHandler","UserAfterUpdateEvent","UserAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"~/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"~/features/eventPublisher/index.js\";\nimport type { UserBeforeUpdatePayload, UserAfterUpdatePayload } from \"./abstractions.js\";\n\n// Before Update Event\nexport class UserBeforeUpdateEvent extends DomainEvent<UserBeforeUpdatePayload> {\n eventType = \"user.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle before a user is updated. */\nexport const UserBeforeUpdateEventHandler = createAbstraction<IEventHandler<UserBeforeUpdateEvent>>(\n \"UserBeforeUpdateEventHandler\"\n);\n\nexport namespace UserBeforeUpdateEventHandler {\n export type Interface = IEventHandler<UserBeforeUpdateEvent>;\n export type Event = UserBeforeUpdateEvent;\n}\n\n// After Update Event\nexport class UserAfterUpdateEvent extends DomainEvent<UserAfterUpdatePayload> {\n eventType = \"user.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return UserAfterUpdateEventHandler;\n }\n}\n\n/** Hook into user lifecycle after a user is updated. */\nexport const UserAfterUpdateEventHandler = createAbstraction<IEventHandler<UserAfterUpdateEvent>>(\n \"UserAfterUpdateEventHandler\"\n);\n\nexport namespace UserAfterUpdateEventHandler {\n export type Interface = IEventHandler<UserAfterUpdateEvent>;\n export type Event = UserAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB;AACA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;;AAEA;AACA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
|
|
@@ -6,33 +6,7 @@ export declare const updateUserValidation: z.ZodObject<{
|
|
|
6
6
|
avatar: z.ZodNullable<z.ZodOptional<z.ZodObject<{
|
|
7
7
|
id: z.ZodString;
|
|
8
8
|
src: z.ZodString;
|
|
9
|
-
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
id: string;
|
|
14
|
-
src: string;
|
|
15
|
-
}>>>;
|
|
16
|
-
roles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
17
|
-
teams: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
18
|
-
}, "strip", z.ZodTypeAny, {
|
|
19
|
-
firstName?: string | undefined;
|
|
20
|
-
lastName?: string | undefined;
|
|
21
|
-
displayName?: string | undefined;
|
|
22
|
-
roles?: string[] | undefined;
|
|
23
|
-
teams?: string[] | undefined;
|
|
24
|
-
avatar?: {
|
|
25
|
-
id: string;
|
|
26
|
-
src: string;
|
|
27
|
-
} | null | undefined;
|
|
28
|
-
}, {
|
|
29
|
-
firstName?: string | undefined;
|
|
30
|
-
lastName?: string | undefined;
|
|
31
|
-
displayName?: string | undefined;
|
|
32
|
-
roles?: string[] | undefined;
|
|
33
|
-
teams?: string[] | undefined;
|
|
34
|
-
avatar?: {
|
|
35
|
-
id: string;
|
|
36
|
-
src: string;
|
|
37
|
-
} | null | undefined;
|
|
38
|
-
}>;
|
|
9
|
+
}, z.core.$strip>>>;
|
|
10
|
+
roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
teams: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
@@ -17,6 +17,7 @@ export interface IAdminUsersRepository {
|
|
|
17
17
|
id: string;
|
|
18
18
|
}>): void;
|
|
19
19
|
}
|
|
20
|
+
/** Persist and retrieve admin users. */
|
|
20
21
|
export declare const AdminUsersRepository: import("@webiny/di").Abstraction<IAdminUsersRepository>;
|
|
21
22
|
export declare namespace AdminUsersRepository {
|
|
22
23
|
type Interface = IAdminUsersRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","AdminUsersRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/types/users.js\";\nimport type { GetUserInput, ListUsersInput } from \"./types.js\";\nimport { UserNotFoundError, UserStorageError } from \"./errors.js\";\n\n// Repository error interface\nexport interface IAdminUsersRepositoryErrors {\n base: UserNotFoundError | UserStorageError;\n}\n\nexport type RepositoryError = IAdminUsersRepositoryErrors[keyof IAdminUsersRepositoryErrors];\n\n// Repository interface\nexport interface IAdminUsersRepository {\n get(params: GetUserInput): Promise<Result<AdminUser, RepositoryError>>;\n list(params: ListUsersInput): Promise<Result<AdminUser[], RepositoryError>>;\n create(user: AdminUser): Promise<Result<AdminUser, RepositoryError>>;\n update(user: AdminUser): Promise<Result<AdminUser, RepositoryError>>;\n delete(user: AdminUser): Promise<Result<void, RepositoryError>>;\n clearCache(keys: Array<{ tenant: string; id: string }>): void;\n}\n\n
|
|
1
|
+
{"version":3,"names":["createAbstraction","AdminUsersRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { AdminUser } from \"~/types/users.js\";\nimport type { GetUserInput, ListUsersInput } from \"./types.js\";\nimport { UserNotFoundError, UserStorageError } from \"./errors.js\";\n\n// Repository error interface\nexport interface IAdminUsersRepositoryErrors {\n base: UserNotFoundError | UserStorageError;\n}\n\nexport type RepositoryError = IAdminUsersRepositoryErrors[keyof IAdminUsersRepositoryErrors];\n\n// Repository interface\nexport interface IAdminUsersRepository {\n get(params: GetUserInput): Promise<Result<AdminUser, RepositoryError>>;\n list(params: ListUsersInput): Promise<Result<AdminUser[], RepositoryError>>;\n create(user: AdminUser): Promise<Result<AdminUser, RepositoryError>>;\n update(user: AdminUser): Promise<Result<AdminUser, RepositoryError>>;\n delete(user: AdminUser): Promise<Result<void, RepositoryError>>;\n clearCache(keys: Array<{ tenant: string; id: string }>): void;\n}\n\n/** Persist and retrieve admin users. */\nexport const AdminUsersRepository =\n createAbstraction<IAdminUsersRepository>(\"AdminUsersRepository\");\n\n// Namespace exports\nexport namespace AdminUsersRepository {\n export type Interface = IAdminUsersRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAMvD;;AAOA;;AAUA;AACA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAEpE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WcpContext","FeatureFlags","WcpContextWithFeatureFlagsDecoratorImpl","constructor","featureFlags","decoratee","getRawLicense","getProject","getProjectWithFeatureFlags","project","flags","get","console","log","package","features","multiTenancy","advancedPublishingWorkflow","enabled","isWorkflowsEnabled","advancedAccessControlLayer","isAaclEnabled","options","teams","isTeamsEnabled","privateFiles","isPrivateFilesEnabled","folderLevelPermissions","isFolderLevelPermissionsEnabled","hcmsFieldPermissions","auditLogs","isAuditLogsEnabled","recordLocking","isRecordLockingEnabled","fileManager","threatDetection","isFileManagerThreatDetectionEnabled","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","canUseHcmsFieldPermissions","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto","WcpContextWithFeatureFlagsDecorator","createDecorator","decorator","dependencies"],"sources":["WcpContextWithFeatureFlagsDecorator.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { WcpContext } from \"../abstractions.js\";\nimport { FeatureFlags } from \"../../../featureFlags/abstractions.js\";\n\nclass WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {\n constructor(\n private featureFlags: FeatureFlags.Interface,\n private decoratee: WcpContext.Interface\n ) {}\n\n getRawLicense() {\n return this.decoratee.getRawLicense();\n }\n\n getProject() {\n return this.decoratee.getProject();\n }\n\n getProjectWithFeatureFlags() {\n const project = this.decoratee.getProjectWithFeatureFlags();\n if (!project) {\n return null;\n }\n\n const flags = this.featureFlags.get();\n\n console.log(\"flags\", flags);\n return {\n ...project,\n package: {\n ...project.package,\n features: {\n ...project.package.features,\n multiTenancy: project.package.features.multiTenancy,\n advancedPublishingWorkflow: {\n ...project.package.features.advancedPublishingWorkflow,\n enabled: flags.isWorkflowsEnabled()\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isAaclEnabled()\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isTeamsEnabled()\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isPrivateFilesEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isFolderLevelPermissionsEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false,\n hcmsFieldPermissions:\n project.package.features.advancedAccessControlLayer.options\n .hcmsFieldPermissions\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isAuditLogsEnabled()\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isRecordLockingEnabled()\n ? project.package.features.recordLocking.enabled\n : false\n },\n fileManager: {\n ...project.package.features.fileManager,\n enabled: project.package.features.fileManager.enabled,\n options: {\n threatDetection: flags.isFileManagerThreatDetectionEnabled()\n ? project.package.features.fileManager.options.threatDetection\n : false\n }\n }\n }\n }\n };\n }\n\n getProjectEnvironment() {\n return this.decoratee.getProjectEnvironment();\n }\n\n getProjectLicense() {\n return this.decoratee.getProjectLicense();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl() {\n return this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();\n }\n\n canUseTeams() {\n return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isFolderLevelPermissionsEnabled()\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled()\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled()\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isFileManagerThreatDetectionEnabled()\n );\n }\n\n canUseWorkflows() {\n return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();\n }\n\n canUseHcmsFieldPermissions() {\n return this.decoratee.canUseHcmsFieldPermissions();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.ensureCanUseFeature(featureId);\n }\n\n async incrementSeats() {\n return this.decoratee.incrementSeats();\n }\n\n async decrementSeats() {\n return this.decoratee.decrementSeats();\n }\n\n async incrementTenants() {\n return this.decoratee.incrementTenants();\n }\n\n async decrementTenants() {\n return this.decoratee.decrementTenants();\n }\n\n toDto() {\n return this.decoratee.toDto();\n }\n}\n\nexport const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({\n decorator: WcpContextWithFeatureFlagsDecoratorImpl,\n dependencies: [FeatureFlags]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["WcpContext","FeatureFlags","WcpContextWithFeatureFlagsDecoratorImpl","constructor","featureFlags","decoratee","getRawLicense","getProject","getProjectWithFeatureFlags","project","flags","get","package","features","multiTenancy","advancedPublishingWorkflow","enabled","isWorkflowsEnabled","advancedAccessControlLayer","isAaclEnabled","options","teams","isTeamsEnabled","privateFiles","isPrivateFilesEnabled","folderLevelPermissions","isFolderLevelPermissionsEnabled","hcmsFieldPermissions","auditLogs","isAuditLogsEnabled","recordLocking","isRecordLockingEnabled","fileManager","threatDetection","isFileManagerThreatDetectionEnabled","getProjectEnvironment","getProjectLicense","canUseFeature","wcpFeatureId","canUseAacl","canUseTeams","canUseFolderLevelPermissions","canUsePrivateFiles","canUseAuditLogs","canUseRecordLocking","canUseFileManagerThreatDetection","canUseWorkflows","canUseHcmsFieldPermissions","ensureCanUseFeature","featureId","incrementSeats","decrementSeats","incrementTenants","decrementTenants","toDto","WcpContextWithFeatureFlagsDecorator","createDecorator","decorator","dependencies"],"sources":["WcpContextWithFeatureFlagsDecorator.ts"],"sourcesContent":["import type { WCP_FEATURE_LABEL } from \"@webiny/wcp\";\nimport { WcpContext } from \"../abstractions.js\";\nimport { FeatureFlags } from \"../../../featureFlags/abstractions.js\";\n\nclass WcpContextWithFeatureFlagsDecoratorImpl implements WcpContext.Interface {\n constructor(\n private featureFlags: FeatureFlags.Interface,\n private decoratee: WcpContext.Interface\n ) {}\n\n getRawLicense() {\n return this.decoratee.getRawLicense();\n }\n\n getProject() {\n return this.decoratee.getProject();\n }\n\n getProjectWithFeatureFlags() {\n const project = this.decoratee.getProjectWithFeatureFlags();\n if (!project) {\n return null;\n }\n\n const flags = this.featureFlags.get();\n\n return {\n ...project,\n package: {\n ...project.package,\n features: {\n ...project.package.features,\n multiTenancy: project.package.features.multiTenancy,\n advancedPublishingWorkflow: {\n ...project.package.features.advancedPublishingWorkflow,\n enabled: flags.isWorkflowsEnabled()\n ? project.package.features.advancedPublishingWorkflow.enabled\n : false\n },\n advancedAccessControlLayer: {\n ...project.package.features.advancedAccessControlLayer,\n enabled: flags.isAaclEnabled()\n ? project.package.features.advancedAccessControlLayer.enabled\n : false,\n options: {\n teams: flags.isTeamsEnabled()\n ? project.package.features.advancedAccessControlLayer.options.teams\n : false,\n privateFiles: flags.isPrivateFilesEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .privateFiles\n : false,\n folderLevelPermissions: flags.isFolderLevelPermissionsEnabled()\n ? project.package.features.advancedAccessControlLayer.options\n .folderLevelPermissions\n : false,\n hcmsFieldPermissions:\n project.package.features.advancedAccessControlLayer.options\n .hcmsFieldPermissions\n }\n },\n auditLogs: {\n ...project.package.features.auditLogs,\n enabled: flags.isAuditLogsEnabled()\n ? project.package.features.auditLogs.enabled\n : false\n },\n recordLocking: {\n ...project.package.features.recordLocking,\n enabled: flags.isRecordLockingEnabled()\n ? project.package.features.recordLocking.enabled\n : false\n },\n fileManager: {\n ...project.package.features.fileManager,\n enabled: project.package.features.fileManager.enabled,\n options: {\n threatDetection: flags.isFileManagerThreatDetectionEnabled()\n ? project.package.features.fileManager.options.threatDetection\n : false\n }\n }\n }\n }\n };\n }\n\n getProjectEnvironment() {\n return this.decoratee.getProjectEnvironment();\n }\n\n getProjectLicense() {\n return this.decoratee.getProjectLicense();\n }\n\n canUseFeature(wcpFeatureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.canUseFeature(wcpFeatureId);\n }\n\n canUseAacl() {\n return this.decoratee.canUseAacl() && this.featureFlags.get().isAaclEnabled();\n }\n\n canUseTeams() {\n return this.decoratee.canUseTeams() && this.featureFlags.get().isTeamsEnabled();\n }\n\n canUseFolderLevelPermissions() {\n return (\n this.decoratee.canUseFolderLevelPermissions() &&\n this.featureFlags.get().isFolderLevelPermissionsEnabled()\n );\n }\n\n canUsePrivateFiles() {\n return (\n this.decoratee.canUsePrivateFiles() && this.featureFlags.get().isPrivateFilesEnabled()\n );\n }\n\n canUseAuditLogs() {\n return this.decoratee.canUseAuditLogs() && this.featureFlags.get().isAuditLogsEnabled();\n }\n\n canUseRecordLocking() {\n return (\n this.decoratee.canUseRecordLocking() && this.featureFlags.get().isRecordLockingEnabled()\n );\n }\n\n canUseFileManagerThreatDetection() {\n return (\n this.decoratee.canUseFileManagerThreatDetection() &&\n this.featureFlags.get().isFileManagerThreatDetectionEnabled()\n );\n }\n\n canUseWorkflows() {\n return this.decoratee.canUseWorkflows() && this.featureFlags.get().isWorkflowsEnabled();\n }\n\n canUseHcmsFieldPermissions() {\n return this.decoratee.canUseHcmsFieldPermissions();\n }\n\n ensureCanUseFeature(featureId: keyof typeof WCP_FEATURE_LABEL) {\n return this.decoratee.ensureCanUseFeature(featureId);\n }\n\n async incrementSeats() {\n return this.decoratee.incrementSeats();\n }\n\n async decrementSeats() {\n return this.decoratee.decrementSeats();\n }\n\n async incrementTenants() {\n return this.decoratee.incrementTenants();\n }\n\n async decrementTenants() {\n return this.decoratee.decrementTenants();\n }\n\n toDto() {\n return this.decoratee.toDto();\n }\n}\n\nexport const WcpContextWithFeatureFlagsDecorator = WcpContext.createDecorator({\n decorator: WcpContextWithFeatureFlagsDecoratorImpl,\n dependencies: [FeatureFlags]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ interface NotAuthorizedResponseArgsType {
|
|
|
4
4
|
code: string | null;
|
|
5
5
|
data: any | null;
|
|
6
6
|
}
|
|
7
|
+
/** GraphQL not-authorized response helper. */
|
|
7
8
|
export declare class NotAuthorizedResponse extends ErrorResponse {
|
|
8
9
|
constructor({ message, code, data }?: Partial<NotAuthorizedResponseArgsType>);
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ErrorResponse","NotAuthorizedResponse","constructor","message","code","data"],"sources":["NotAuthorizedResponse.ts"],"sourcesContent":["import { ErrorResponse } from \"@webiny/handler-graphql/responses.js\";\n\ninterface NotAuthorizedResponseArgsType {\n message: string;\n code: string | null;\n data: any | null;\n}\n\nexport class NotAuthorizedResponse extends ErrorResponse {\n constructor({ message, code, data }: Partial<NotAuthorizedResponseArgsType> = {}) {\n super({\n message: message || \"Not authorized!\",\n code: code || \"SECURITY_NOT_AUTHORIZED\",\n data\n });\n }\n}\n\nexport default NotAuthorizedResponse;\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,sCAAsC;AAQpE,OAAO,MAAMC,qBAAqB,SAASD,aAAa,CAAC;EACrDE,WAAWA,CAAC;IAAEC,OAAO;IAAEC,IAAI;IAAEC;EAA6C,CAAC,GAAG,CAAC,CAAC,EAAE;IAC9E,KAAK,CAAC;MACFF,OAAO,EAAEA,OAAO,IAAI,iBAAiB;MACrCC,IAAI,EAAEA,IAAI,IAAI,yBAAyB;MACvCC;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,eAAeJ,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ErrorResponse","NotAuthorizedResponse","constructor","message","code","data"],"sources":["NotAuthorizedResponse.ts"],"sourcesContent":["import { ErrorResponse } from \"@webiny/handler-graphql/responses.js\";\n\ninterface NotAuthorizedResponseArgsType {\n message: string;\n code: string | null;\n data: any | null;\n}\n\n/** GraphQL not-authorized response helper. */\nexport class NotAuthorizedResponse extends ErrorResponse {\n constructor({ message, code, data }: Partial<NotAuthorizedResponseArgsType> = {}) {\n super({\n message: message || \"Not authorized!\",\n code: code || \"SECURITY_NOT_AUTHORIZED\",\n data\n });\n }\n}\n\nexport default NotAuthorizedResponse;\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,sCAAsC;AAQpE;AACA,OAAO,MAAMC,qBAAqB,SAASD,aAAa,CAAC;EACrDE,WAAWA,CAAC;IAAEC,OAAO;IAAEC,IAAI;IAAEC;EAA6C,CAAC,GAAG,CAAC,CAAC,EAAE;IAC9E,KAAK,CAAC;MACFF,OAAO,EAAEA,OAAO,IAAI,iBAAiB;MACrCC,IAAI,EAAEA,IAAI,IAAI,yBAAyB;MACvCC;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,eAAeJ,qBAAqB","ignoreList":[]}
|
package/idp/abstractions.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface IIdentityProvider {
|
|
|
19
19
|
isApplicable(token: string): boolean;
|
|
20
20
|
getIdentity(token: string): Promise<IProviderIdentityData | null>;
|
|
21
21
|
}
|
|
22
|
+
/** Generic identity provider for token-based authentication. */
|
|
22
23
|
export declare const IdentityProvider: import("@webiny/di").Abstraction<IIdentityProvider>;
|
|
23
24
|
export declare namespace IdentityProvider {
|
|
24
25
|
type Interface = IIdentityProvider;
|
|
@@ -29,6 +30,7 @@ export interface IJwtIdentityProvider {
|
|
|
29
30
|
isApplicable(token: IJwtPayload): boolean;
|
|
30
31
|
getIdentity(token: string, jwt: IJwt): Promise<IProviderIdentityData | null>;
|
|
31
32
|
}
|
|
33
|
+
/** JWT-specific identity provider for token validation. */
|
|
32
34
|
export declare const JwtIdentityProvider: import("@webiny/di").Abstraction<IJwtIdentityProvider>;
|
|
33
35
|
export declare namespace JwtIdentityProvider {
|
|
34
36
|
type Interface = IJwtIdentityProvider;
|
|
@@ -45,6 +47,7 @@ export interface IOidcIdentityProvider {
|
|
|
45
47
|
verifyToken?(token: string): Promise<IJwtPayload | undefined>;
|
|
46
48
|
verifyTokenClaims?(token: IJwtPayload): Promise<void>;
|
|
47
49
|
}
|
|
50
|
+
/** OIDC-compliant identity provider with issuer validation. */
|
|
48
51
|
export declare const OidcIdentityProvider: import("@webiny/di").Abstraction<IOidcIdentityProvider>;
|
|
49
52
|
export declare namespace OidcIdentityProvider {
|
|
50
53
|
type Interface = IOidcIdentityProvider;
|
|
@@ -54,6 +57,7 @@ export declare namespace OidcIdentityProvider {
|
|
|
54
57
|
interface IJwkCache {
|
|
55
58
|
getKeys(issuer: string): Promise<IJwk[]>;
|
|
56
59
|
}
|
|
60
|
+
/** Cache for JSON Web Keys used in JWT verification. */
|
|
57
61
|
export declare const JwkCache: import("@webiny/di").Abstraction<IJwkCache>;
|
|
58
62
|
export declare namespace JwkCache {
|
|
59
63
|
type Interface = IJwkCache;
|
package/idp/abstractions.js
CHANGED
|
@@ -2,12 +2,16 @@ import { createAbstraction } from "@webiny/feature/api";
|
|
|
2
2
|
|
|
3
3
|
// Generic Idp Provider
|
|
4
4
|
|
|
5
|
+
/** Generic identity provider for token-based authentication. */
|
|
5
6
|
export const IdentityProvider = createAbstraction("IdentityProvider");
|
|
7
|
+
/** JWT-specific identity provider for token validation. */
|
|
6
8
|
export const JwtIdentityProvider = createAbstraction("JwtIdentityProvider");
|
|
7
9
|
|
|
8
10
|
// OIDC Provider
|
|
9
11
|
|
|
12
|
+
/** OIDC-compliant identity provider with issuer validation. */
|
|
10
13
|
export const OidcIdentityProvider = createAbstraction("OidcIdentityProvider");
|
|
14
|
+
/** Cache for JSON Web Keys used in JWT verification. */
|
|
11
15
|
export const JwkCache = createAbstraction("JwkCache");
|
|
12
16
|
|
|
13
17
|
//# sourceMappingURL=abstractions.js.map
|
package/idp/abstractions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","IdentityProvider","JwtIdentityProvider","OidcIdentityProvider","JwkCache"],"sources":["abstractions.ts"],"sourcesContent":["import type { JwtPayload as IJwtPayload, JwtHeader as IJwtHeader } from \"jsonwebtoken\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { IdentityData as IIdentityData } from \"~/features/security/IdentityContext/Identity.js\";\nimport type { Jwk as IJwk } from \"~/features/security/utils/verifyJwtUsingJwk.js\";\n\nexport type IJwt = {\n header: IJwtHeader;\n payload: IJwtPayload;\n};\n\nexport type OptionalExternal<T> = Omit<T, \"external\"> & { external?: boolean };\n\nexport type IProviderIdentityData = Omit<IIdentityData, \"type\" | \"profile\"> & {\n /**\n * Defaults to `admin` it omitted.\n */\n type?: string;\n profile?: OptionalExternal<NonNullable<IIdentityData[\"profile\"]>>;\n};\n\n// Generic Idp Provider\nexport interface IIdentityProvider {\n isApplicable(token: string): boolean;\n getIdentity(token: string): Promise<IProviderIdentityData | null>;\n}\n\nexport const IdentityProvider = createAbstraction<IIdentityProvider>(\"IdentityProvider\");\n\nexport namespace IdentityProvider {\n export type Interface = IIdentityProvider;\n export type IdentityData = IProviderIdentityData;\n export type JwtPayload = IJwtPayload;\n}\n\nexport interface IJwtIdentityProvider {\n isApplicable(token: IJwtPayload): boolean;\n getIdentity(token: string, jwt: IJwt): Promise<IProviderIdentityData | null>;\n}\n\nexport const JwtIdentityProvider = createAbstraction<IJwtIdentityProvider>(\"JwtIdentityProvider\");\n\nexport namespace JwtIdentityProvider {\n export type Interface = IJwtIdentityProvider;\n export type Jwt = IJwt;\n export type JwtPayload = IJwtPayload;\n export type JwtHeader = IJwtHeader;\n export type IdentityData = IProviderIdentityData;\n}\n\n// OIDC Provider\nexport interface IOidcIdentityProvider {\n issuer: string;\n clientId: string;\n isApplicable(token: IJwtPayload): boolean;\n getIdentity(jwt: IJwtPayload): Promise<IProviderIdentityData>;\n verifyToken?(token: string): Promise<IJwtPayload | undefined>;\n verifyTokenClaims?(token: IJwtPayload): Promise<void>;\n}\n\nexport const OidcIdentityProvider =\n createAbstraction<IOidcIdentityProvider>(\"OidcIdentityProvider\");\n\nexport namespace OidcIdentityProvider {\n export type Interface = IOidcIdentityProvider;\n export type JwtPayload = IJwtPayload;\n export type IdentityData = IProviderIdentityData;\n}\n\ninterface IJwkCache {\n getKeys(issuer: string): Promise<IJwk[]>;\n}\n\nexport const JwkCache = createAbstraction<IJwkCache>(\"JwkCache\");\nexport namespace JwkCache {\n export type Interface = IJwkCache;\n export type Jwk = IJwk;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAmBvD;;AAMA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC;AAaxF,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAUjG;;AAUA,OAAO,MAAMG,oBAAoB,GAC7BH,iBAAiB,CAAwB,sBAAsB,CAAC;AAYpE,OAAO,MAAMI,QAAQ,GAAGJ,iBAAiB,CAAY,UAAU,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createAbstraction","IdentityProvider","JwtIdentityProvider","OidcIdentityProvider","JwkCache"],"sources":["abstractions.ts"],"sourcesContent":["import type { JwtPayload as IJwtPayload, JwtHeader as IJwtHeader } from \"jsonwebtoken\";\nimport { createAbstraction } from \"@webiny/feature/api\";\nimport type { IdentityData as IIdentityData } from \"~/features/security/IdentityContext/Identity.js\";\nimport type { Jwk as IJwk } from \"~/features/security/utils/verifyJwtUsingJwk.js\";\n\nexport type IJwt = {\n header: IJwtHeader;\n payload: IJwtPayload;\n};\n\nexport type OptionalExternal<T> = Omit<T, \"external\"> & { external?: boolean };\n\nexport type IProviderIdentityData = Omit<IIdentityData, \"type\" | \"profile\"> & {\n /**\n * Defaults to `admin` it omitted.\n */\n type?: string;\n profile?: OptionalExternal<NonNullable<IIdentityData[\"profile\"]>>;\n};\n\n// Generic Idp Provider\nexport interface IIdentityProvider {\n isApplicable(token: string): boolean;\n getIdentity(token: string): Promise<IProviderIdentityData | null>;\n}\n\n/** Generic identity provider for token-based authentication. */\nexport const IdentityProvider = createAbstraction<IIdentityProvider>(\"IdentityProvider\");\n\nexport namespace IdentityProvider {\n export type Interface = IIdentityProvider;\n export type IdentityData = IProviderIdentityData;\n export type JwtPayload = IJwtPayload;\n}\n\nexport interface IJwtIdentityProvider {\n isApplicable(token: IJwtPayload): boolean;\n getIdentity(token: string, jwt: IJwt): Promise<IProviderIdentityData | null>;\n}\n\n/** JWT-specific identity provider for token validation. */\nexport const JwtIdentityProvider = createAbstraction<IJwtIdentityProvider>(\"JwtIdentityProvider\");\n\nexport namespace JwtIdentityProvider {\n export type Interface = IJwtIdentityProvider;\n export type Jwt = IJwt;\n export type JwtPayload = IJwtPayload;\n export type JwtHeader = IJwtHeader;\n export type IdentityData = IProviderIdentityData;\n}\n\n// OIDC Provider\nexport interface IOidcIdentityProvider {\n issuer: string;\n clientId: string;\n isApplicable(token: IJwtPayload): boolean;\n getIdentity(jwt: IJwtPayload): Promise<IProviderIdentityData>;\n verifyToken?(token: string): Promise<IJwtPayload | undefined>;\n verifyTokenClaims?(token: IJwtPayload): Promise<void>;\n}\n\n/** OIDC-compliant identity provider with issuer validation. */\nexport const OidcIdentityProvider =\n createAbstraction<IOidcIdentityProvider>(\"OidcIdentityProvider\");\n\nexport namespace OidcIdentityProvider {\n export type Interface = IOidcIdentityProvider;\n export type JwtPayload = IJwtPayload;\n export type IdentityData = IProviderIdentityData;\n}\n\ninterface IJwkCache {\n getKeys(issuer: string): Promise<IJwk[]>;\n}\n\n/** Cache for JSON Web Keys used in JWT verification. */\nexport const JwkCache = createAbstraction<IJwkCache>(\"JwkCache\");\nexport namespace JwkCache {\n export type Interface = IJwkCache;\n export type Jwk = IJwk;\n}\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAmBvD;;AAMA;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC;AAaxF;AACA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC;;AAUjG;;AAUA;AACA,OAAO,MAAMG,oBAAoB,GAC7BH,iBAAiB,CAAwB,sBAAsB,CAAC;AAYpE;AACA,OAAO,MAAMI,QAAQ,GAAGJ,iBAAiB,CAAY,UAAU,CAAC","ignoreList":[]}
|