@webiny/api-core 6.0.0 → 6.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/domain/security/ApiToken.d.ts +1 -0
  2. package/domain/security/ApiToken.js +1 -0
  3. package/domain/security/ApiToken.js.map +1 -1
  4. package/exports/api/security.d.ts +2 -0
  5. package/exports/api/security.js +2 -0
  6. package/exports/api/security.js.map +1 -1
  7. package/features/buildParams/abstractions.d.ts +2 -0
  8. package/features/buildParams/abstractions.js +2 -0
  9. package/features/buildParams/abstractions.js.map +1 -1
  10. package/features/eventPublisher/abstractions.d.ts +2 -0
  11. package/features/eventPublisher/abstractions.js +3 -0
  12. package/features/eventPublisher/abstractions.js.map +1 -1
  13. package/features/keyValueStore/abstractions.d.ts +4 -0
  14. package/features/keyValueStore/abstractions.js +4 -0
  15. package/features/keyValueStore/abstractions.js.map +1 -1
  16. package/features/logger/abstractions.d.ts +1 -0
  17. package/features/logger/abstractions.js +1 -0
  18. package/features/logger/abstractions.js.map +1 -1
  19. package/features/security/IdentityContext/abstractions.d.ts +1 -0
  20. package/features/security/IdentityContext/abstractions.js +1 -0
  21. package/features/security/IdentityContext/abstractions.js.map +1 -1
  22. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js +1 -1
  23. package/features/security/apiKeys/CreateApiKey/CreateApiKeyUseCase.js.map +1 -1
  24. package/features/security/apiKeys/CreateApiKey/abstractions.d.ts +1 -0
  25. package/features/security/apiKeys/CreateApiKey/abstractions.js +1 -0
  26. package/features/security/apiKeys/CreateApiKey/abstractions.js.map +1 -1
  27. package/features/security/apiKeys/CreateApiKey/events.d.ts +2 -0
  28. package/features/security/apiKeys/CreateApiKey/events.js +4 -0
  29. package/features/security/apiKeys/CreateApiKey/events.js.map +1 -1
  30. package/features/security/apiKeys/DeleteApiKey/abstractions.d.ts +1 -0
  31. package/features/security/apiKeys/DeleteApiKey/abstractions.js +1 -0
  32. package/features/security/apiKeys/DeleteApiKey/abstractions.js.map +1 -1
  33. package/features/security/apiKeys/DeleteApiKey/events.d.ts +2 -0
  34. package/features/security/apiKeys/DeleteApiKey/events.js +4 -0
  35. package/features/security/apiKeys/DeleteApiKey/events.js.map +1 -1
  36. package/features/security/apiKeys/GetApiKey/abstractions.d.ts +1 -0
  37. package/features/security/apiKeys/GetApiKey/abstractions.js +1 -0
  38. package/features/security/apiKeys/GetApiKey/abstractions.js.map +1 -1
  39. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.d.ts +1 -0
  40. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js +1 -0
  41. package/features/security/apiKeys/GetApiKeyBySlug/abstractions.js.map +1 -1
  42. package/features/security/apiKeys/GetApiKeyByToken/abstractions.d.ts +1 -0
  43. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js +1 -0
  44. package/features/security/apiKeys/GetApiKeyByToken/abstractions.js.map +1 -1
  45. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js +1 -1
  46. package/features/security/apiKeys/ListApiKeys/ListApiKeysUseCase.js.map +1 -1
  47. package/features/security/apiKeys/ListApiKeys/abstractions.d.ts +1 -0
  48. package/features/security/apiKeys/ListApiKeys/abstractions.js +1 -0
  49. package/features/security/apiKeys/ListApiKeys/abstractions.js.map +1 -1
  50. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js +1 -1
  51. package/features/security/apiKeys/UpdateApiKey/UpdateApiKeyUseCase.js.map +1 -1
  52. package/features/security/apiKeys/UpdateApiKey/abstractions.d.ts +1 -0
  53. package/features/security/apiKeys/UpdateApiKey/abstractions.js +1 -0
  54. package/features/security/apiKeys/UpdateApiKey/abstractions.js.map +1 -1
  55. package/features/security/apiKeys/UpdateApiKey/events.d.ts +2 -0
  56. package/features/security/apiKeys/UpdateApiKey/events.js +4 -0
  57. package/features/security/apiKeys/UpdateApiKey/events.js.map +1 -1
  58. package/features/security/apiKeys/shared/abstractions.d.ts +5 -2
  59. package/features/security/apiKeys/shared/abstractions.js +3 -0
  60. package/features/security/apiKeys/shared/abstractions.js.map +1 -1
  61. package/features/security/apiKeys/shared/schemas.d.ts +10 -71
  62. package/features/security/apiKeys/shared/schemas.js +4 -4
  63. package/features/security/apiKeys/shared/schemas.js.map +1 -1
  64. package/features/security/authentication/AuthenticationContext/abstractions.d.ts +1 -0
  65. package/features/security/authentication/AuthenticationContext/abstractions.js +1 -0
  66. package/features/security/authentication/AuthenticationContext/abstractions.js.map +1 -1
  67. package/features/security/authentication/AuthenticationContext/events.d.ts +2 -0
  68. package/features/security/authentication/AuthenticationContext/events.js +4 -0
  69. package/features/security/authentication/AuthenticationContext/events.js.map +1 -1
  70. package/features/security/authentication/Authenticator/abstractions.d.ts +1 -0
  71. package/features/security/authentication/Authenticator/abstractions.js +1 -0
  72. package/features/security/authentication/Authenticator/abstractions.js.map +1 -1
  73. package/features/security/authorization/AuthorizationContext/abstractions.d.ts +2 -0
  74. package/features/security/authorization/AuthorizationContext/abstractions.js +2 -0
  75. package/features/security/authorization/AuthorizationContext/abstractions.js.map +1 -1
  76. package/features/security/authorization/Authorizer/abstractions.d.ts +1 -0
  77. package/features/security/authorization/Authorizer/abstractions.js +1 -0
  78. package/features/security/authorization/Authorizer/abstractions.js.map +1 -1
  79. package/features/security/login/abstractions.d.ts +1 -0
  80. package/features/security/login/abstractions.js +2 -0
  81. package/features/security/login/abstractions.js.map +1 -1
  82. package/features/security/roles/CreateRole/CreateRoleUseCase.d.ts +1 -3
  83. package/features/security/roles/CreateRole/CreateRoleUseCase.js +3 -7
  84. package/features/security/roles/CreateRole/CreateRoleUseCase.js.map +1 -1
  85. package/features/security/roles/CreateRole/abstractions.d.ts +1 -0
  86. package/features/security/roles/CreateRole/abstractions.js +1 -0
  87. package/features/security/roles/CreateRole/abstractions.js.map +1 -1
  88. package/features/security/roles/CreateRole/events.d.ts +2 -0
  89. package/features/security/roles/CreateRole/events.js +4 -0
  90. package/features/security/roles/CreateRole/events.js.map +1 -1
  91. package/features/security/roles/CreateRole/schema.d.ts +2 -20
  92. package/features/security/roles/CreateRole/schema.js +2 -2
  93. package/features/security/roles/CreateRole/schema.js.map +1 -1
  94. package/features/security/roles/DeleteRole/abstractions.d.ts +1 -0
  95. package/features/security/roles/DeleteRole/abstractions.js +1 -0
  96. package/features/security/roles/DeleteRole/abstractions.js.map +1 -1
  97. package/features/security/roles/DeleteRole/events.d.ts +2 -0
  98. package/features/security/roles/DeleteRole/events.js +4 -0
  99. package/features/security/roles/DeleteRole/events.js.map +1 -1
  100. package/features/security/roles/GetRole/abstractions.d.ts +1 -0
  101. package/features/security/roles/GetRole/abstractions.js +1 -0
  102. package/features/security/roles/GetRole/abstractions.js.map +1 -1
  103. package/features/security/roles/ListRoles/abstractions.d.ts +1 -0
  104. package/features/security/roles/ListRoles/abstractions.js +1 -0
  105. package/features/security/roles/ListRoles/abstractions.js.map +1 -1
  106. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js +1 -1
  107. package/features/security/roles/UpdateRole/UpdateRoleUseCase.js.map +1 -1
  108. package/features/security/roles/UpdateRole/abstractions.d.ts +1 -0
  109. package/features/security/roles/UpdateRole/abstractions.js +1 -0
  110. package/features/security/roles/UpdateRole/abstractions.js.map +1 -1
  111. package/features/security/roles/UpdateRole/events.d.ts +2 -0
  112. package/features/security/roles/UpdateRole/events.js +4 -0
  113. package/features/security/roles/UpdateRole/events.js.map +1 -1
  114. package/features/security/roles/UpdateRole/schema.d.ts +2 -18
  115. package/features/security/roles/UpdateRole/schema.js +2 -2
  116. package/features/security/roles/UpdateRole/schema.js.map +1 -1
  117. package/features/security/roles/feature.js +2 -0
  118. package/features/security/roles/feature.js.map +1 -1
  119. package/features/security/roles/shared/RoleProvider.d.ts +13 -0
  120. package/features/security/roles/shared/RoleProvider.js +29 -0
  121. package/features/security/roles/shared/RoleProvider.js.map +1 -0
  122. package/features/security/roles/shared/RolesRepository.d.ts +3 -1
  123. package/features/security/roles/shared/RolesRepository.js +19 -18
  124. package/features/security/roles/shared/RolesRepository.js.map +1 -1
  125. package/features/security/roles/shared/abstractions.d.ts +19 -0
  126. package/features/security/roles/shared/abstractions.js +3 -0
  127. package/features/security/roles/shared/abstractions.js.map +1 -1
  128. package/features/security/shared/abstractions.d.ts +5 -14
  129. package/features/security/shared/abstractions.js +3 -16
  130. package/features/security/shared/abstractions.js.map +1 -1
  131. package/features/security/teams/CreateTeam/CreateTeamUseCase.d.ts +1 -3
  132. package/features/security/teams/CreateTeam/CreateTeamUseCase.js +3 -7
  133. package/features/security/teams/CreateTeam/CreateTeamUseCase.js.map +1 -1
  134. package/features/security/teams/CreateTeam/abstractions.d.ts +1 -0
  135. package/features/security/teams/CreateTeam/abstractions.js +1 -0
  136. package/features/security/teams/CreateTeam/abstractions.js.map +1 -1
  137. package/features/security/teams/CreateTeam/events.d.ts +2 -0
  138. package/features/security/teams/CreateTeam/events.js +4 -0
  139. package/features/security/teams/CreateTeam/events.js.map +1 -1
  140. package/features/security/teams/CreateTeam/schema.d.ts +2 -12
  141. package/features/security/teams/DeleteTeam/abstractions.d.ts +1 -0
  142. package/features/security/teams/DeleteTeam/abstractions.js +1 -0
  143. package/features/security/teams/DeleteTeam/abstractions.js.map +1 -1
  144. package/features/security/teams/DeleteTeam/events.d.ts +2 -0
  145. package/features/security/teams/DeleteTeam/events.js +4 -0
  146. package/features/security/teams/DeleteTeam/events.js.map +1 -1
  147. package/features/security/teams/GetTeam/abstractions.d.ts +1 -0
  148. package/features/security/teams/GetTeam/abstractions.js +1 -0
  149. package/features/security/teams/GetTeam/abstractions.js.map +1 -1
  150. package/features/security/teams/ListTeams/abstractions.d.ts +1 -0
  151. package/features/security/teams/ListTeams/abstractions.js +1 -0
  152. package/features/security/teams/ListTeams/abstractions.js.map +1 -1
  153. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js +1 -1
  154. package/features/security/teams/UpdateTeam/UpdateTeamUseCase.js.map +1 -1
  155. package/features/security/teams/UpdateTeam/abstractions.d.ts +1 -0
  156. package/features/security/teams/UpdateTeam/abstractions.js +1 -0
  157. package/features/security/teams/UpdateTeam/abstractions.js.map +1 -1
  158. package/features/security/teams/UpdateTeam/events.d.ts +2 -0
  159. package/features/security/teams/UpdateTeam/events.js +4 -0
  160. package/features/security/teams/UpdateTeam/events.js.map +1 -1
  161. package/features/security/teams/UpdateTeam/schema.d.ts +2 -10
  162. package/features/security/teams/feature.js +6 -0
  163. package/features/security/teams/feature.js.map +1 -1
  164. package/features/security/teams/shared/TeamProvider.d.ts +13 -0
  165. package/features/security/teams/shared/TeamProvider.js +29 -0
  166. package/features/security/teams/shared/TeamProvider.js.map +1 -0
  167. package/features/security/teams/shared/TeamsRepository.js +20 -18
  168. package/features/security/teams/shared/TeamsRepository.js.map +1 -1
  169. package/features/security/teams/shared/abstractions.d.ts +18 -0
  170. package/features/security/teams/shared/abstractions.js +3 -0
  171. package/features/security/teams/shared/abstractions.js.map +1 -1
  172. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.d.ts +17 -0
  173. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js +76 -0
  174. package/features/security/teams/shared/decorators/TeamsRepositoryCachingDecorator.js.map +1 -0
  175. package/features/security/utils/verifyJwtUsingJwk.d.ts +2 -4
  176. package/features/security/utils/verifyJwtUsingJwk.js +1 -1
  177. package/features/security/utils/verifyJwtUsingJwk.js.map +1 -1
  178. package/features/system/InstallSystem/abstractions.d.ts +2 -3
  179. package/features/system/InstallSystem/abstractions.js +2 -3
  180. package/features/system/InstallSystem/abstractions.js.map +1 -1
  181. package/features/task/TaskController/abstractions.d.ts +1 -0
  182. package/features/task/TaskController/abstractions.js +1 -0
  183. package/features/task/TaskController/abstractions.js.map +1 -1
  184. package/features/task/TaskDefinition/abstractions.d.ts +1 -0
  185. package/features/task/TaskDefinition/abstractions.js +1 -0
  186. package/features/task/TaskDefinition/abstractions.js.map +1 -1
  187. package/features/task/TaskService/abstractions.d.ts +1 -0
  188. package/features/task/TaskService/abstractions.js +1 -0
  189. package/features/task/TaskService/abstractions.js.map +1 -1
  190. package/features/tenancy/CreateTenant/abstractions.d.ts +5 -3
  191. package/features/tenancy/CreateTenant/abstractions.js +5 -3
  192. package/features/tenancy/CreateTenant/abstractions.js.map +1 -1
  193. package/features/tenancy/DeleteTenant/abstractions.d.ts +5 -0
  194. package/features/tenancy/DeleteTenant/abstractions.js +5 -0
  195. package/features/tenancy/DeleteTenant/abstractions.js.map +1 -1
  196. package/features/tenancy/GetTenantById/abstractions.d.ts +3 -0
  197. package/features/tenancy/GetTenantById/abstractions.js +3 -9
  198. package/features/tenancy/GetTenantById/abstractions.js.map +1 -1
  199. package/features/tenancy/InstallTenant/abstractions.d.ts +3 -9
  200. package/features/tenancy/InstallTenant/abstractions.js +3 -12
  201. package/features/tenancy/InstallTenant/abstractions.js.map +1 -1
  202. package/features/tenancy/TenantContext/abstractions.d.ts +1 -0
  203. package/features/tenancy/TenantContext/abstractions.js +1 -0
  204. package/features/tenancy/TenantContext/abstractions.js.map +1 -1
  205. package/features/tenancy/UpdateTenant/abstractions.d.ts +5 -0
  206. package/features/tenancy/UpdateTenant/abstractions.js +5 -0
  207. package/features/tenancy/UpdateTenant/abstractions.js.map +1 -1
  208. package/features/users/CreateUser/CreateUserUseCase.js +1 -1
  209. package/features/users/CreateUser/CreateUserUseCase.js.map +1 -1
  210. package/features/users/CreateUser/abstractions.d.ts +1 -0
  211. package/features/users/CreateUser/abstractions.js +1 -1
  212. package/features/users/CreateUser/abstractions.js.map +1 -1
  213. package/features/users/CreateUser/events.d.ts +2 -0
  214. package/features/users/CreateUser/events.js +4 -0
  215. package/features/users/CreateUser/events.js.map +1 -1
  216. package/features/users/CreateUser/schema.d.ts +4 -36
  217. package/features/users/DeleteUser/abstractions.d.ts +1 -0
  218. package/features/users/DeleteUser/abstractions.js +1 -1
  219. package/features/users/DeleteUser/abstractions.js.map +1 -1
  220. package/features/users/DeleteUser/events.d.ts +2 -0
  221. package/features/users/DeleteUser/events.js +4 -0
  222. package/features/users/DeleteUser/events.js.map +1 -1
  223. package/features/users/GetUser/abstractions.d.ts +1 -0
  224. package/features/users/GetUser/abstractions.js +1 -1
  225. package/features/users/GetUser/abstractions.js.map +1 -1
  226. package/features/users/ListUserTeams/abstractions.d.ts +1 -0
  227. package/features/users/ListUserTeams/abstractions.js +1 -1
  228. package/features/users/ListUserTeams/abstractions.js.map +1 -1
  229. package/features/users/ListUsers/abstractions.d.ts +1 -0
  230. package/features/users/ListUsers/abstractions.js +1 -1
  231. package/features/users/ListUsers/abstractions.js.map +1 -1
  232. package/features/users/UpdateUser/UpdateUserUseCase.js +1 -1
  233. package/features/users/UpdateUser/UpdateUserUseCase.js.map +1 -1
  234. package/features/users/UpdateUser/abstractions.d.ts +1 -0
  235. package/features/users/UpdateUser/abstractions.js +1 -1
  236. package/features/users/UpdateUser/abstractions.js.map +1 -1
  237. package/features/users/UpdateUser/events.d.ts +2 -0
  238. package/features/users/UpdateUser/events.js +4 -0
  239. package/features/users/UpdateUser/events.js.map +1 -1
  240. package/features/users/UpdateUser/schema.d.ts +4 -30
  241. package/features/users/shared/abstractions.d.ts +1 -0
  242. package/features/users/shared/abstractions.js +1 -1
  243. package/features/users/shared/abstractions.js.map +1 -1
  244. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js +0 -1
  245. package/features/wcp/WcpContext/decorators/WcpContextWithFeatureFlagsDecorator.js.map +1 -1
  246. package/graphql/security/NotAuthorizedResponse.d.ts +1 -0
  247. package/graphql/security/NotAuthorizedResponse.js +1 -0
  248. package/graphql/security/NotAuthorizedResponse.js.map +1 -1
  249. package/idp/abstractions.d.ts +4 -0
  250. package/idp/abstractions.js +4 -0
  251. package/idp/abstractions.js.map +1 -1
  252. package/legacy/security/createSecurityContext.js +0 -11
  253. package/legacy/security/createSecurityContext.js.map +1 -1
  254. package/models/base/BaseModel.js +2 -2
  255. package/models/base/BaseModel.js.map +1 -1
  256. package/models/base/ModelBuilder.d.ts +2 -2
  257. package/models/base/ModelBuilder.js +21 -2
  258. package/models/base/ModelBuilder.js.map +1 -1
  259. package/models/cms/FieldBuilder.d.ts +3 -2
  260. package/models/cms/FieldBuilder.js +12 -17
  261. package/models/cms/FieldBuilder.js.map +1 -1
  262. package/models/cms/FieldBuilderRegistry.d.ts +1 -1
  263. package/models/cms/FieldBuilderRegistry.js.map +1 -1
  264. package/models/cms/FieldDefinitionsBuilder.d.ts +1 -0
  265. package/models/cms/FieldDefinitionsBuilder.js +13 -15
  266. package/models/cms/FieldDefinitionsBuilder.js.map +1 -1
  267. package/models/cms/PrivateCmsModelBuilder.js.map +1 -1
  268. package/models/cms/abstractions.d.ts +1 -1
  269. package/models/cms/abstractions.js.map +1 -1
  270. package/models/cms/fieldsBuilder.md +1 -1
  271. package/models/simple/Page/abstractions.d.ts +1 -11
  272. package/package.json +20 -20
  273. package/types/security.d.ts +13 -10
  274. package/types/security.js.map +1 -1
  275. package/features/security/shared/abstractions.ts.bak +0 -52
  276. package/legacy/security/plugins/SecurityRolePlugin.d.ts +0 -16
  277. package/legacy/security/plugins/SecurityRolePlugin.js +0 -33
  278. package/legacy/security/plugins/SecurityRolePlugin.js.map +0 -1
  279. package/legacy/security/plugins/SecurityTeamPlugin.d.ts +0 -16
  280. package/legacy/security/plugins/SecurityTeamPlugin.js +0 -33
  281. package/legacy/security/plugins/SecurityTeamPlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["mdbid","createImplementation","Result","TenantContext","EventPublisher","CreateRoleUseCase","UseCaseAbstraction","RolesRepository","IdentityContext","createRoleValidation","RoleBeforeCreateEvent","RoleAfterCreateEvent","NotAuthorizedError","RoleExistsError","RoleValidationError","CreateRoleUseCaseImpl","constructor","tenantContext","identityContext","eventPublisher","repository","execute","input","hasPermission","getPermission","fail","validation","safeParse","success","error","errors","message","tenant","getTenant","identity","getIdentity","data","existingRoleResult","get","slug","isOk","role","id","name","description","permissions","system","createdOn","Date","toISOString","createdBy","displayName","type","plugin","publish","result","create","isFail","ok","abstraction","implementation","dependencies"],"sources":["CreateRoleUseCase.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { TenantContext } from \"~/features/tenancy/TenantContext/index.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { CreateRoleUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { createRoleValidation } from \"./schema.js\";\nimport { RoleBeforeCreateEvent, RoleAfterCreateEvent } from \"./events.js\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nclass CreateRoleUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: RolesRepository.Interface\n ) {}\n\n async execute(input: CreateRoleInput): Promise<Result<Role, UseCaseAbstraction.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = createRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.errors[0].message));\n }\n\n const tenant = this.tenantContext.getTenant();\n const identity = this.identityContext.getIdentity();\n const data = validation.data;\n\n // Check if role with same slug already exists\n const existingRoleResult = await this.repository.get({ slug: data.slug });\n if (existingRoleResult.isOk()) {\n return Result.fail(new RoleExistsError(data.slug));\n }\n\n const role: Role = {\n id: mdbid(),\n name: data.name,\n slug: data.slug,\n description: data.description,\n permissions: data.permissions,\n system: input.system || false,\n tenant: tenant.id,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n plugin: false\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeCreateEvent({ role, input: validation.data })\n );\n\n const result = await this.repository.create(role);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterCreateEvent({ role, input: validation.data })\n );\n\n return Result.ok(role);\n }\n}\n\nexport const CreateRoleUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRoleUseCaseImpl,\n dependencies: [TenantContext, IdentityContext, EventPublisher, RolesRepository]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["mdbid","createImplementation","Result","EventPublisher","CreateRoleUseCase","UseCaseAbstraction","RolesRepository","IdentityContext","createRoleValidation","RoleBeforeCreateEvent","RoleAfterCreateEvent","NotAuthorizedError","RoleExistsError","RoleValidationError","CreateRoleUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","hasPermission","getPermission","fail","validation","safeParse","success","error","issues","message","identity","getIdentity","data","existingRoleResult","get","slug","isOk","role","id","name","description","permissions","system","createdOn","Date","toISOString","createdBy","displayName","type","plugin","publish","result","create","isFail","ok","abstraction","implementation","dependencies"],"sources":["CreateRoleUseCase.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { CreateRoleUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { createRoleValidation } from \"./schema.js\";\nimport { RoleBeforeCreateEvent, RoleAfterCreateEvent } from \"./events.js\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nclass CreateRoleUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: RolesRepository.Interface\n ) {}\n\n async execute(input: CreateRoleInput): Promise<Result<Role, UseCaseAbstraction.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = createRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.issues[0].message));\n }\n\n const identity = this.identityContext.getIdentity();\n const data = validation.data;\n\n // Check if role with same slug already exists\n const existingRoleResult = await this.repository.get({ slug: data.slug });\n if (existingRoleResult.isOk()) {\n return Result.fail(new RoleExistsError(data.slug));\n }\n\n const role: Role = {\n id: mdbid(),\n name: data.name,\n slug: data.slug,\n description: data.description,\n permissions: data.permissions,\n system: input.system || false,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n plugin: false\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeCreateEvent({ role, input: validation.data })\n );\n\n const result = await this.repository.create(role);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterCreateEvent({ role, input: validation.data })\n );\n\n return Result.ok(role);\n }\n}\n\nexport const CreateRoleUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateRoleUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, RolesRepository]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ type CreateRoleError = ICreateRoleErrors[keyof ICreateRoleErrors] | RolesReposit
11
11
  export interface ICreateRole {
12
12
  execute(input: CreateRoleInput): Promise<Result<Role, CreateRoleError>>;
13
13
  }
14
+ /** Create a new security role. */
14
15
  export declare const CreateRoleUseCase: import("@webiny/di").Abstraction<ICreateRole>;
15
16
  export declare namespace CreateRoleUseCase {
16
17
  type Interface = ICreateRole;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** Create a new security role. */
2
3
  export const CreateRoleUseCase = createAbstraction("CreateRoleUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nexport interface ICreateRoleErrors {\n notAuthorized: NotAuthorizedError;\n roleExists: RoleExistsError;\n validation: RoleValidationError;\n}\n\ntype CreateRoleError = ICreateRoleErrors[keyof ICreateRoleErrors] | RolesRepository.Error;\n\nexport interface ICreateRole {\n execute(input: CreateRoleInput): Promise<Result<Role, CreateRoleError>>;\n}\n\nexport const CreateRoleUseCase = createAbstraction<ICreateRole>(\"CreateRoleUseCase\");\n\nexport namespace CreateRoleUseCase {\n export type Interface = ICreateRole;\n export type Error = CreateRoleError;\n}\n\nexport interface RoleBeforeCreatePayload {\n role: Role;\n input: CreateRoleInput;\n}\n\nexport interface RoleAfterCreatePayload {\n role: Role;\n input: CreateRoleInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAkBvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CreateRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, CreateRoleInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError, RoleExistsError, RoleValidationError } from \"../shared/errors.js\";\n\nexport interface ICreateRoleErrors {\n notAuthorized: NotAuthorizedError;\n roleExists: RoleExistsError;\n validation: RoleValidationError;\n}\n\ntype CreateRoleError = ICreateRoleErrors[keyof ICreateRoleErrors] | RolesRepository.Error;\n\nexport interface ICreateRole {\n execute(input: CreateRoleInput): Promise<Result<Role, CreateRoleError>>;\n}\n\n/** Create a new security role. */\nexport const CreateRoleUseCase = createAbstraction<ICreateRole>(\"CreateRoleUseCase\");\n\nexport namespace CreateRoleUseCase {\n export type Interface = ICreateRole;\n export type Error = CreateRoleError;\n}\n\nexport interface RoleBeforeCreatePayload {\n role: Role;\n input: CreateRoleInput;\n}\n\nexport interface RoleAfterCreatePayload {\n role: Role;\n input: CreateRoleInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAkBvD;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC","ignoreList":[]}
@@ -5,6 +5,7 @@ export declare class RoleBeforeCreateEvent extends DomainEvent<RoleBeforeCreateP
5
5
  eventType: "role.beforeCreate";
6
6
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleBeforeCreateEvent>>;
7
7
  }
8
+ /** Hook into role lifecycle before a role is created. */
8
9
  export declare const RoleBeforeCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleBeforeCreateEvent>>;
9
10
  export declare namespace RoleBeforeCreateEventHandler {
10
11
  type Interface = IEventHandler<RoleBeforeCreateEvent>;
@@ -14,6 +15,7 @@ export declare class RoleAfterCreateEvent extends DomainEvent<RoleAfterCreatePay
14
15
  eventType: "role.afterCreate";
15
16
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleAfterCreateEvent>>;
16
17
  }
18
+ /** Hook into role lifecycle after a role is created. */
17
19
  export declare const RoleAfterCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleAfterCreateEvent>>;
18
20
  export declare namespace RoleAfterCreateEventHandler {
19
21
  type Interface = IEventHandler<RoleAfterCreateEvent>;
@@ -6,6 +6,8 @@ export class RoleBeforeCreateEvent extends DomainEvent {
6
6
  return RoleBeforeCreateEventHandler;
7
7
  }
8
8
  }
9
+
10
+ /** Hook into role lifecycle before a role is created. */
9
11
  export const RoleBeforeCreateEventHandler = createAbstraction("RoleBeforeCreateEventHandler");
10
12
  export class RoleAfterCreateEvent extends DomainEvent {
11
13
  eventType = "role.afterCreate";
@@ -13,6 +15,8 @@ export class RoleAfterCreateEvent extends DomainEvent {
13
15
  return RoleAfterCreateEventHandler;
14
16
  }
15
17
  }
18
+
19
+ /** Hook into role lifecycle after a role is created. */
16
20
  export const RoleAfterCreateEventHandler = createAbstraction("RoleAfterCreateEventHandler");
17
21
 
18
22
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeCreateEvent","eventType","getHandlerAbstraction","RoleBeforeCreateEventHandler","RoleAfterCreateEvent","RoleAfterCreateEventHandler"],"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 { RoleBeforeCreatePayload, RoleAfterCreatePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeCreateEvent extends DomainEvent<RoleBeforeCreatePayload> {\n eventType = \"role.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeCreateEventHandler;\n }\n}\n\nexport const RoleBeforeCreateEventHandler = createAbstraction<IEventHandler<RoleBeforeCreateEvent>>(\n \"RoleBeforeCreateEventHandler\"\n);\n\nexport namespace RoleBeforeCreateEventHandler {\n export type Interface = IEventHandler<RoleBeforeCreateEvent>;\n export type Event = RoleBeforeCreateEvent;\n}\n\nexport class RoleAfterCreateEvent extends DomainEvent<RoleAfterCreatePayload> {\n eventType = \"role.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterCreateEventHandler;\n }\n}\n\nexport const RoleAfterCreateEventHandler = createAbstraction<IEventHandler<RoleAfterCreateEvent>>(\n \"RoleAfterCreateEventHandler\"\n);\n\nexport namespace RoleAfterCreateEventHandler {\n export type Interface = IEventHandler<RoleAfterCreateEvent>;\n export type Event = RoleAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;AAEA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeCreateEvent","eventType","getHandlerAbstraction","RoleBeforeCreateEventHandler","RoleAfterCreateEvent","RoleAfterCreateEventHandler"],"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 { RoleBeforeCreatePayload, RoleAfterCreatePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeCreateEvent extends DomainEvent<RoleBeforeCreatePayload> {\n eventType = \"role.beforeCreate\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeCreateEventHandler;\n }\n}\n\n/** Hook into role lifecycle before a role is created. */\nexport const RoleBeforeCreateEventHandler = createAbstraction<IEventHandler<RoleBeforeCreateEvent>>(\n \"RoleBeforeCreateEventHandler\"\n);\n\nexport namespace RoleBeforeCreateEventHandler {\n export type Interface = IEventHandler<RoleBeforeCreateEvent>;\n export type Event = RoleBeforeCreateEvent;\n}\n\nexport class RoleAfterCreateEvent extends DomainEvent<RoleAfterCreatePayload> {\n eventType = \"role.afterCreate\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterCreateEventHandler;\n }\n}\n\n/** Hook into role lifecycle after a role is created. */\nexport const RoleAfterCreateEventHandler = createAbstraction<IEventHandler<RoleAfterCreateEvent>>(\n \"RoleAfterCreateEventHandler\"\n);\n\nexport namespace RoleAfterCreateEventHandler {\n export type Interface = IEventHandler<RoleAfterCreateEvent>;\n export type Event = RoleAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,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,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":[]}
@@ -5,23 +5,5 @@ export declare const createRoleValidation: z.ZodObject<{
5
5
  description: z.ZodDefault<z.ZodOptional<z.ZodString>>;
6
6
  permissions: z.ZodArray<z.ZodObject<{
7
7
  name: z.ZodString;
8
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
9
- name: z.ZodString;
10
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
11
- name: z.ZodString;
12
- }, z.ZodTypeAny, "passthrough">>, "many">;
13
- }, "strip", z.ZodTypeAny, {
14
- permissions: z.objectOutputType<{
15
- name: z.ZodString;
16
- }, z.ZodTypeAny, "passthrough">[];
17
- name: string;
18
- description: string;
19
- slug: string;
20
- }, {
21
- permissions: z.objectInputType<{
22
- name: z.ZodString;
23
- }, z.ZodTypeAny, "passthrough">[];
24
- name: string;
25
- slug: string;
26
- description?: string | undefined;
27
- }>;
8
+ }, z.core.$loose>>;
9
+ }, z.core.$strip>;
@@ -3,9 +3,9 @@ export const createRoleValidation = z.object({
3
3
  name: z.string().min(3),
4
4
  slug: z.string().min(3),
5
5
  description: z.string().max(500).optional().default(""),
6
- permissions: z.array(z.object({
6
+ permissions: z.array(z.looseObject({
7
7
  name: z.string()
8
- }).passthrough())
8
+ }))
9
9
  });
10
10
 
11
11
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["z","createRoleValidation","object","name","string","min","slug","description","max","optional","default","permissions","array","passthrough"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const createRoleValidation = z.object({\n name: z.string().min(3),\n slug: z.string().min(3),\n description: z.string().max(500).optional().default(\"\"),\n permissions: z.array(z.object({ name: z.string() }).passthrough())\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,oBAAoB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACzCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACvBC,IAAI,EAAEN,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACvBE,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,GAAG,CAAC,GAAG,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,EAAE,CAAC;EACvDC,WAAW,EAAEX,CAAC,CAACY,KAAK,CAACZ,CAAC,CAACE,MAAM,CAAC;IAAEC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC;EAAE,CAAC,CAAC,CAACS,WAAW,CAAC,CAAC;AACrE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["z","createRoleValidation","object","name","string","min","slug","description","max","optional","default","permissions","array","looseObject"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const createRoleValidation = z.object({\n name: z.string().min(3),\n slug: z.string().min(3),\n description: z.string().max(500).optional().default(\"\"),\n permissions: z.array(z.looseObject({ name: z.string() }))\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,oBAAoB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACzCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACvBC,IAAI,EAAEN,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACvBE,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,GAAG,CAAC,GAAG,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,OAAO,CAAC,EAAE,CAAC;EACvDC,WAAW,EAAEX,CAAC,CAACY,KAAK,CAACZ,CAAC,CAACa,WAAW,CAAC;IAAEV,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC;EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC","ignoreList":[]}
@@ -10,6 +10,7 @@ type DeleteRoleError = IDeleteRoleErrors[keyof IDeleteRoleErrors] | RolesReposit
10
10
  export interface IDeleteRole {
11
11
  execute(id: string): Promise<Result<void, DeleteRoleError>>;
12
12
  }
13
+ /** Delete a security role. */
13
14
  export declare const DeleteRoleUseCase: import("@webiny/di").Abstraction<IDeleteRole>;
14
15
  export declare namespace DeleteRoleUseCase {
15
16
  type Interface = IDeleteRole;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** Delete a security role. */
2
3
  export const DeleteRoleUseCase = createAbstraction("DeleteRoleUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError, CannotDeletePluginRolesError } from \"../shared/errors.js\";\n\nexport interface IDeleteRoleErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeletePlugin: CannotDeletePluginRolesError;\n}\n\ntype DeleteRoleError = IDeleteRoleErrors[keyof IDeleteRoleErrors] | RolesRepository.Error;\n\nexport interface IDeleteRole {\n execute(id: string): Promise<Result<void, DeleteRoleError>>;\n}\n\nexport const DeleteRoleUseCase = createAbstraction<IDeleteRole>(\"DeleteRoleUseCase\");\n\nexport namespace DeleteRoleUseCase {\n export type Interface = IDeleteRole;\n export type Error = DeleteRoleError;\n}\n\nexport interface RoleBeforeDeletePayload {\n role: Role;\n}\n\nexport interface RoleAfterDeletePayload {\n role: Role;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAiBvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DeleteRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError, CannotDeletePluginRolesError } from \"../shared/errors.js\";\n\nexport interface IDeleteRoleErrors {\n notAuthorized: NotAuthorizedError;\n cannotDeletePlugin: CannotDeletePluginRolesError;\n}\n\ntype DeleteRoleError = IDeleteRoleErrors[keyof IDeleteRoleErrors] | RolesRepository.Error;\n\nexport interface IDeleteRole {\n execute(id: string): Promise<Result<void, DeleteRoleError>>;\n}\n\n/** Delete a security role. */\nexport const DeleteRoleUseCase = createAbstraction<IDeleteRole>(\"DeleteRoleUseCase\");\n\nexport namespace DeleteRoleUseCase {\n export type Interface = IDeleteRole;\n export type Error = DeleteRoleError;\n}\n\nexport interface RoleBeforeDeletePayload {\n role: Role;\n}\n\nexport interface RoleAfterDeletePayload {\n role: Role;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAiBvD;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAc,mBAAmB,CAAC","ignoreList":[]}
@@ -5,6 +5,7 @@ export declare class RoleBeforeDeleteEvent extends DomainEvent<RoleBeforeDeleteP
5
5
  eventType: "role.beforeDelete";
6
6
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleBeforeDeleteEvent>>;
7
7
  }
8
+ /** Hook into role lifecycle before a role is deleted. */
8
9
  export declare const RoleBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleBeforeDeleteEvent>>;
9
10
  export declare namespace RoleBeforeDeleteEventHandler {
10
11
  type Interface = IEventHandler<RoleBeforeDeleteEvent>;
@@ -14,6 +15,7 @@ export declare class RoleAfterDeleteEvent extends DomainEvent<RoleAfterDeletePay
14
15
  eventType: "role.afterDelete";
15
16
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleAfterDeleteEvent>>;
16
17
  }
18
+ /** Hook into role lifecycle after a role is deleted. */
17
19
  export declare const RoleAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleAfterDeleteEvent>>;
18
20
  export declare namespace RoleAfterDeleteEventHandler {
19
21
  type Interface = IEventHandler<RoleAfterDeleteEvent>;
@@ -6,6 +6,8 @@ export class RoleBeforeDeleteEvent extends DomainEvent {
6
6
  return RoleBeforeDeleteEventHandler;
7
7
  }
8
8
  }
9
+
10
+ /** Hook into role lifecycle before a role is deleted. */
9
11
  export const RoleBeforeDeleteEventHandler = createAbstraction("RoleBeforeDeleteEventHandler");
10
12
  export class RoleAfterDeleteEvent extends DomainEvent {
11
13
  eventType = "role.afterDelete";
@@ -13,6 +15,8 @@ export class RoleAfterDeleteEvent extends DomainEvent {
13
15
  return RoleAfterDeleteEventHandler;
14
16
  }
15
17
  }
18
+
19
+ /** Hook into role lifecycle after a role is deleted. */
16
20
  export const RoleAfterDeleteEventHandler = createAbstraction("RoleAfterDeleteEventHandler");
17
21
 
18
22
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeDeleteEvent","eventType","getHandlerAbstraction","RoleBeforeDeleteEventHandler","RoleAfterDeleteEvent","RoleAfterDeleteEventHandler"],"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 { RoleBeforeDeletePayload, RoleAfterDeletePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeDeleteEvent extends DomainEvent<RoleBeforeDeletePayload> {\n eventType = \"role.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeDeleteEventHandler;\n }\n}\n\nexport const RoleBeforeDeleteEventHandler = createAbstraction<IEventHandler<RoleBeforeDeleteEvent>>(\n \"RoleBeforeDeleteEventHandler\"\n);\n\nexport namespace RoleBeforeDeleteEventHandler {\n export type Interface = IEventHandler<RoleBeforeDeleteEvent>;\n export type Event = RoleBeforeDeleteEvent;\n}\n\nexport class RoleAfterDeleteEvent extends DomainEvent<RoleAfterDeletePayload> {\n eventType = \"role.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterDeleteEventHandler;\n }\n}\n\nexport const RoleAfterDeleteEventHandler = createAbstraction<IEventHandler<RoleAfterDeleteEvent>>(\n \"RoleAfterDeleteEventHandler\"\n);\n\nexport namespace RoleAfterDeleteEventHandler {\n export type Interface = IEventHandler<RoleAfterDeleteEvent>;\n export type Event = RoleAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;AAEA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeDeleteEvent","eventType","getHandlerAbstraction","RoleBeforeDeleteEventHandler","RoleAfterDeleteEvent","RoleAfterDeleteEventHandler"],"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 { RoleBeforeDeletePayload, RoleAfterDeletePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeDeleteEvent extends DomainEvent<RoleBeforeDeletePayload> {\n eventType = \"role.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into role lifecycle before a role is deleted. */\nexport const RoleBeforeDeleteEventHandler = createAbstraction<IEventHandler<RoleBeforeDeleteEvent>>(\n \"RoleBeforeDeleteEventHandler\"\n);\n\nexport namespace RoleBeforeDeleteEventHandler {\n export type Interface = IEventHandler<RoleBeforeDeleteEvent>;\n export type Event = RoleBeforeDeleteEvent;\n}\n\nexport class RoleAfterDeleteEvent extends DomainEvent<RoleAfterDeletePayload> {\n eventType = \"role.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterDeleteEventHandler;\n }\n}\n\n/** Hook into role lifecycle after a role is deleted. */\nexport const RoleAfterDeleteEventHandler = createAbstraction<IEventHandler<RoleAfterDeleteEvent>>(\n \"RoleAfterDeleteEventHandler\"\n);\n\nexport namespace RoleAfterDeleteEventHandler {\n export type Interface = IEventHandler<RoleAfterDeleteEvent>;\n export type Event = RoleAfterDeleteEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,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,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":[]}
@@ -9,6 +9,7 @@ type GetRoleError = IGetRoleErrors[keyof IGetRoleErrors] | RolesRepository.Error
9
9
  export interface IGetRole {
10
10
  execute(params: GetRoleInput): Promise<Result<Role, GetRoleError>>;
11
11
  }
12
+ /** Retrieve a security role. */
12
13
  export declare const GetRoleUseCase: import("@webiny/di").Abstraction<IGetRole>;
13
14
  export declare namespace GetRoleUseCase {
14
15
  type Interface = IGetRole;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** Retrieve a security role. */
2
3
  export const GetRoleUseCase = createAbstraction("GetRoleUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, GetRoleInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError } from \"../shared/errors.js\";\n\nexport interface IGetRoleErrors {\n notAuthorized: NotAuthorizedError;\n}\n\ntype GetRoleError = IGetRoleErrors[keyof IGetRoleErrors] | RolesRepository.Error;\n\nexport interface IGetRole {\n execute(params: GetRoleInput): Promise<Result<Role, GetRoleError>>;\n}\n\nexport const GetRoleUseCase = createAbstraction<IGetRole>(\"GetRoleUseCase\");\n\nexport namespace GetRoleUseCase {\n export type Interface = IGetRole;\n export type Error = GetRoleError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAgBvD,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","GetRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, GetRoleInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError } from \"../shared/errors.js\";\n\nexport interface IGetRoleErrors {\n notAuthorized: NotAuthorizedError;\n}\n\ntype GetRoleError = IGetRoleErrors[keyof IGetRoleErrors] | RolesRepository.Error;\n\nexport interface IGetRole {\n execute(params: GetRoleInput): Promise<Result<Role, GetRoleError>>;\n}\n\n/** Retrieve a security role. */\nexport const GetRoleUseCase = createAbstraction<IGetRole>(\"GetRoleUseCase\");\n\nexport namespace GetRoleUseCase {\n export type Interface = IGetRole;\n export type Error = GetRoleError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAgBvD;AACA,OAAO,MAAMC,cAAc,GAAGD,iBAAiB,CAAW,gBAAgB,CAAC","ignoreList":[]}
@@ -9,6 +9,7 @@ type ListRolesError = IListRolesErrors[keyof IListRolesErrors] | RolesRepository
9
9
  export interface IListRoles {
10
10
  execute(params?: ListRolesInput): Promise<Result<Role[], ListRolesError>>;
11
11
  }
12
+ /** List all security roles. */
12
13
  export declare const ListRolesUseCase: import("@webiny/di").Abstraction<IListRoles>;
13
14
  export declare namespace ListRolesUseCase {
14
15
  type Interface = IListRoles;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** List all security roles. */
2
3
  export const ListRolesUseCase = createAbstraction("ListRolesUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListRolesUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, ListRolesInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError } from \"../shared/errors.js\";\n\nexport interface IListRolesErrors {\n notAuthorized: NotAuthorizedError;\n}\n\ntype ListRolesError = IListRolesErrors[keyof IListRolesErrors] | RolesRepository.Error;\n\nexport interface IListRoles {\n execute(params?: ListRolesInput): Promise<Result<Role[], ListRolesError>>;\n}\n\nexport const ListRolesUseCase = createAbstraction<IListRoles>(\"ListRolesUseCase\");\n\nexport namespace ListRolesUseCase {\n export type Interface = IListRoles;\n export type Error = ListRolesError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAgBvD,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","ListRolesUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, ListRolesInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { NotAuthorizedError } from \"../shared/errors.js\";\n\nexport interface IListRolesErrors {\n notAuthorized: NotAuthorizedError;\n}\n\ntype ListRolesError = IListRolesErrors[keyof IListRolesErrors] | RolesRepository.Error;\n\nexport interface IListRoles {\n execute(params?: ListRolesInput): Promise<Result<Role[], ListRolesError>>;\n}\n\n/** List all security roles. */\nexport const ListRolesUseCase = createAbstraction<IListRoles>(\"ListRolesUseCase\");\n\nexport namespace ListRolesUseCase {\n export type Interface = IListRoles;\n export type Error = ListRolesError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAgBvD;AACA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAa,kBAAkB,CAAC","ignoreList":[]}
@@ -19,7 +19,7 @@ class UpdateRoleUseCaseImpl {
19
19
  }
20
20
  const validation = updateRoleValidation.safeParse(input);
21
21
  if (!validation.success) {
22
- return Result.fail(new RoleValidationError(validation.error.errors[0].message));
22
+ return Result.fail(new RoleValidationError(validation.error.issues[0].message));
23
23
  }
24
24
  const existingResult = await this.repository.get({
25
25
  id
@@ -1 +1 @@
1
- {"version":3,"names":["Result","UpdateRoleUseCase","UseCase","RolesRepository","IdentityContext","EventPublisher","updateRoleValidation","RoleBeforeUpdateEvent","RoleAfterUpdateEvent","NotAuthorizedError","CannotUpdatePluginRolesError","RoleValidationError","UpdateRoleUseCaseImpl","constructor","repository","identityContext","eventPublisher","execute","id","input","hasPermission","getPermission","fail","validation","safeParse","success","error","errors","message","existingResult","get","isFail","existingRole","value","plugin","updatedRole","data","publish","original","updated","result","update","ok","createImplementation","implementation","dependencies"],"sources":["UpdateRoleUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateRoleUseCase as UseCase } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { updateRoleValidation } from \"./schema.js\";\nimport { RoleBeforeUpdateEvent, RoleAfterUpdateEvent } from \"./events.js\";\nimport type { Role, UpdateRoleInput } from \"../shared/types.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginRolesError,\n RoleValidationError\n} from \"../shared/errors.js\";\n\nclass UpdateRoleUseCaseImpl implements UseCase.Interface {\n private repository: RolesRepository.Interface;\n private identityContext: IdentityContext.Interface;\n private eventPublisher: EventPublisher.Interface;\n\n constructor(\n repository: RolesRepository.Interface,\n identityContext: IdentityContext.Interface,\n eventPublisher: EventPublisher.Interface\n ) {\n this.repository = repository;\n this.identityContext = identityContext;\n this.eventPublisher = eventPublisher;\n }\n\n async execute(id: string, input: UpdateRoleInput): Promise<Result<Role, UseCase.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = updateRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.errors[0].message));\n }\n\n const existingResult = await this.repository.get({ id });\n if (existingResult.isFail()) {\n return Result.fail(existingResult.error);\n }\n\n const existingRole = existingResult.value;\n\n // Check if role is created via plugin\n if (existingRole.plugin) {\n return Result.fail(new CannotUpdatePluginRolesError());\n }\n\n const updatedRole: Role = {\n ...existingRole,\n ...validation.data\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeUpdateEvent({\n original: existingRole,\n updated: updatedRole,\n input: validation.data\n })\n );\n\n const result = await this.repository.update(updatedRole);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterUpdateEvent({\n original: existingRole,\n updated: updatedRole,\n input: validation.data\n })\n );\n\n return Result.ok(updatedRole);\n }\n}\n\nexport const UpdateRoleUseCase = UseCase.createImplementation({\n implementation: UpdateRoleUseCaseImpl,\n dependencies: [RolesRepository, IdentityContext, EventPublisher]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,OAAO;AACrC,SAASC,eAAe;AACxB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB,EAAEC,oBAAoB;AAEpD,SACIC,kBAAkB,EAClBC,4BAA4B,EAC5BC,mBAAmB;AAGvB,MAAMC,qBAAqB,CAA8B;EAKrDC,WAAWA,CACPC,UAAqC,EACrCC,eAA0C,EAC1CC,cAAwC,EAC1C;IACE,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,cAAc,GAAGA,cAAc;EACxC;EAEA,MAAMC,OAAOA,CAACC,EAAU,EAAEC,KAAsB,EAAwC;IACpF,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,aAAa,CAAC,eAAe,CAAC;IAC/E,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOpB,MAAM,CAACsB,IAAI,CAAC,IAAIb,kBAAkB,CAAC,CAAC,CAAC;IAChD;IAEA,MAAMc,UAAU,GAAGjB,oBAAoB,CAACkB,SAAS,CAACL,KAAK,CAAC;IACxD,IAAI,CAACI,UAAU,CAACE,OAAO,EAAE;MACrB,OAAOzB,MAAM,CAACsB,IAAI,CAAC,IAAIX,mBAAmB,CAACY,UAAU,CAACG,KAAK,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;IACnF;IAEA,MAAMC,cAAc,GAAG,MAAM,IAAI,CAACf,UAAU,CAACgB,GAAG,CAAC;MAAEZ;IAAG,CAAC,CAAC;IACxD,IAAIW,cAAc,CAACE,MAAM,CAAC,CAAC,EAAE;MACzB,OAAO/B,MAAM,CAACsB,IAAI,CAACO,cAAc,CAACH,KAAK,CAAC;IAC5C;IAEA,MAAMM,YAAY,GAAGH,cAAc,CAACI,KAAK;;IAEzC;IACA,IAAID,YAAY,CAACE,MAAM,EAAE;MACrB,OAAOlC,MAAM,CAACsB,IAAI,CAAC,IAAIZ,4BAA4B,CAAC,CAAC,CAAC;IAC1D;IAEA,MAAMyB,WAAiB,GAAG;MACtB,GAAGH,YAAY;MACf,GAAGT,UAAU,CAACa;IAClB,CAAC;IAED,MAAM,IAAI,CAACpB,cAAc,CAACqB,OAAO,CAC7B,IAAI9B,qBAAqB,CAAC;MACtB+B,QAAQ,EAAEN,YAAY;MACtBO,OAAO,EAAEJ,WAAW;MACpBhB,KAAK,EAAEI,UAAU,CAACa;IACtB,CAAC,CACL,CAAC;IAED,MAAMI,MAAM,GAAG,MAAM,IAAI,CAAC1B,UAAU,CAAC2B,MAAM,CAACN,WAAW,CAAC;IAExD,IAAIK,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAO/B,MAAM,CAACsB,IAAI,CAACkB,MAAM,CAACd,KAAK,CAAC;IACpC;IAEA,MAAM,IAAI,CAACV,cAAc,CAACqB,OAAO,CAC7B,IAAI7B,oBAAoB,CAAC;MACrB8B,QAAQ,EAAEN,YAAY;MACtBO,OAAO,EAAEJ,WAAW;MACpBhB,KAAK,EAAEI,UAAU,CAACa;IACtB,CAAC,CACL,CAAC;IAED,OAAOpC,MAAM,CAAC0C,EAAE,CAACP,WAAW,CAAC;EACjC;AACJ;AAEA,OAAO,MAAMlC,iBAAiB,GAAGC,OAAO,CAACyC,oBAAoB,CAAC;EAC1DC,cAAc,EAAEhC,qBAAqB;EACrCiC,YAAY,EAAE,CAAC1C,eAAe,EAAEC,eAAe,EAAEC,cAAc;AACnE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","UpdateRoleUseCase","UseCase","RolesRepository","IdentityContext","EventPublisher","updateRoleValidation","RoleBeforeUpdateEvent","RoleAfterUpdateEvent","NotAuthorizedError","CannotUpdatePluginRolesError","RoleValidationError","UpdateRoleUseCaseImpl","constructor","repository","identityContext","eventPublisher","execute","id","input","hasPermission","getPermission","fail","validation","safeParse","success","error","issues","message","existingResult","get","isFail","existingRole","value","plugin","updatedRole","data","publish","original","updated","result","update","ok","createImplementation","implementation","dependencies"],"sources":["UpdateRoleUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateRoleUseCase as UseCase } from \"./abstractions.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport { IdentityContext } from \"../../IdentityContext/abstractions.js\";\nimport { EventPublisher } from \"~/features/eventPublisher/index.js\";\nimport { updateRoleValidation } from \"./schema.js\";\nimport { RoleBeforeUpdateEvent, RoleAfterUpdateEvent } from \"./events.js\";\nimport type { Role, UpdateRoleInput } from \"../shared/types.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginRolesError,\n RoleValidationError\n} from \"../shared/errors.js\";\n\nclass UpdateRoleUseCaseImpl implements UseCase.Interface {\n private repository: RolesRepository.Interface;\n private identityContext: IdentityContext.Interface;\n private eventPublisher: EventPublisher.Interface;\n\n constructor(\n repository: RolesRepository.Interface,\n identityContext: IdentityContext.Interface,\n eventPublisher: EventPublisher.Interface\n ) {\n this.repository = repository;\n this.identityContext = identityContext;\n this.eventPublisher = eventPublisher;\n }\n\n async execute(id: string, input: UpdateRoleInput): Promise<Result<Role, UseCase.Error>> {\n const hasPermission = await this.identityContext.getPermission(\"security.role\");\n if (!hasPermission) {\n return Result.fail(new NotAuthorizedError());\n }\n\n const validation = updateRoleValidation.safeParse(input);\n if (!validation.success) {\n return Result.fail(new RoleValidationError(validation.error.issues[0].message));\n }\n\n const existingResult = await this.repository.get({ id });\n if (existingResult.isFail()) {\n return Result.fail(existingResult.error);\n }\n\n const existingRole = existingResult.value;\n\n // Check if role is created via plugin\n if (existingRole.plugin) {\n return Result.fail(new CannotUpdatePluginRolesError());\n }\n\n const updatedRole: Role = {\n ...existingRole,\n ...validation.data\n };\n\n await this.eventPublisher.publish(\n new RoleBeforeUpdateEvent({\n original: existingRole,\n updated: updatedRole,\n input: validation.data\n })\n );\n\n const result = await this.repository.update(updatedRole);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(\n new RoleAfterUpdateEvent({\n original: existingRole,\n updated: updatedRole,\n input: validation.data\n })\n );\n\n return Result.ok(updatedRole);\n }\n}\n\nexport const UpdateRoleUseCase = UseCase.createImplementation({\n implementation: UpdateRoleUseCaseImpl,\n dependencies: [RolesRepository, IdentityContext, EventPublisher]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,iBAAiB,IAAIC,OAAO;AACrC,SAASC,eAAe;AACxB,SAASC,eAAe;AACxB,SAASC,cAAc;AACvB,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB,EAAEC,oBAAoB;AAEpD,SACIC,kBAAkB,EAClBC,4BAA4B,EAC5BC,mBAAmB;AAGvB,MAAMC,qBAAqB,CAA8B;EAKrDC,WAAWA,CACPC,UAAqC,EACrCC,eAA0C,EAC1CC,cAAwC,EAC1C;IACE,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,cAAc,GAAGA,cAAc;EACxC;EAEA,MAAMC,OAAOA,CAACC,EAAU,EAAEC,KAAsB,EAAwC;IACpF,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,aAAa,CAAC,eAAe,CAAC;IAC/E,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOpB,MAAM,CAACsB,IAAI,CAAC,IAAIb,kBAAkB,CAAC,CAAC,CAAC;IAChD;IAEA,MAAMc,UAAU,GAAGjB,oBAAoB,CAACkB,SAAS,CAACL,KAAK,CAAC;IACxD,IAAI,CAACI,UAAU,CAACE,OAAO,EAAE;MACrB,OAAOzB,MAAM,CAACsB,IAAI,CAAC,IAAIX,mBAAmB,CAACY,UAAU,CAACG,KAAK,CAACC,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;IACnF;IAEA,MAAMC,cAAc,GAAG,MAAM,IAAI,CAACf,UAAU,CAACgB,GAAG,CAAC;MAAEZ;IAAG,CAAC,CAAC;IACxD,IAAIW,cAAc,CAACE,MAAM,CAAC,CAAC,EAAE;MACzB,OAAO/B,MAAM,CAACsB,IAAI,CAACO,cAAc,CAACH,KAAK,CAAC;IAC5C;IAEA,MAAMM,YAAY,GAAGH,cAAc,CAACI,KAAK;;IAEzC;IACA,IAAID,YAAY,CAACE,MAAM,EAAE;MACrB,OAAOlC,MAAM,CAACsB,IAAI,CAAC,IAAIZ,4BAA4B,CAAC,CAAC,CAAC;IAC1D;IAEA,MAAMyB,WAAiB,GAAG;MACtB,GAAGH,YAAY;MACf,GAAGT,UAAU,CAACa;IAClB,CAAC;IAED,MAAM,IAAI,CAACpB,cAAc,CAACqB,OAAO,CAC7B,IAAI9B,qBAAqB,CAAC;MACtB+B,QAAQ,EAAEN,YAAY;MACtBO,OAAO,EAAEJ,WAAW;MACpBhB,KAAK,EAAEI,UAAU,CAACa;IACtB,CAAC,CACL,CAAC;IAED,MAAMI,MAAM,GAAG,MAAM,IAAI,CAAC1B,UAAU,CAAC2B,MAAM,CAACN,WAAW,CAAC;IAExD,IAAIK,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAO/B,MAAM,CAACsB,IAAI,CAACkB,MAAM,CAACd,KAAK,CAAC;IACpC;IAEA,MAAM,IAAI,CAACV,cAAc,CAACqB,OAAO,CAC7B,IAAI7B,oBAAoB,CAAC;MACrB8B,QAAQ,EAAEN,YAAY;MACtBO,OAAO,EAAEJ,WAAW;MACpBhB,KAAK,EAAEI,UAAU,CAACa;IACtB,CAAC,CACL,CAAC;IAED,OAAOpC,MAAM,CAAC0C,EAAE,CAACP,WAAW,CAAC;EACjC;AACJ;AAEA,OAAO,MAAMlC,iBAAiB,GAAGC,OAAO,CAACyC,oBAAoB,CAAC;EAC1DC,cAAc,EAAEhC,qBAAqB;EACrCiC,YAAY,EAAE,CAAC1C,eAAe,EAAEC,eAAe,EAAEC,cAAc;AACnE,CAAC,CAAC","ignoreList":[]}
@@ -11,6 +11,7 @@ type UpdateRoleUseCaseError = IUpdateRoleUseCaseErrors[keyof IUpdateRoleUseCaseE
11
11
  export interface IUpdateRoleUseCase {
12
12
  execute(id: string, input: UpdateRoleUseCaseInput): Promise<Result<Role, UpdateRoleUseCaseError>>;
13
13
  }
14
+ /** Update an existing security role. */
14
15
  export declare const UpdateRoleUseCase: import("@webiny/di").Abstraction<IUpdateRoleUseCase>;
15
16
  export declare namespace UpdateRoleUseCase {
16
17
  type Interface = IUpdateRoleUseCase;
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ /** Update an existing security role. */
2
3
  export const UpdateRoleUseCase = createAbstraction("UpdateRoleUseCase");
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","UpdateRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, UpdateRoleInput as UpdateRoleUseCaseInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginRolesError,\n RoleValidationError\n} from \"../shared/errors.js\";\n\nexport interface IUpdateRoleUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n cannotUpdatePlugin: CannotUpdatePluginRolesError;\n validation: RoleValidationError;\n}\n\ntype UpdateRoleUseCaseError =\n | IUpdateRoleUseCaseErrors[keyof IUpdateRoleUseCaseErrors]\n | RolesRepository.Error;\n\nexport interface IUpdateRoleUseCase {\n execute(\n id: string,\n input: UpdateRoleUseCaseInput\n ): Promise<Result<Role, UpdateRoleUseCaseError>>;\n}\n\nexport const UpdateRoleUseCase = createAbstraction<IUpdateRoleUseCase>(\"UpdateRoleUseCase\");\n\nexport namespace UpdateRoleUseCase {\n export type Interface = IUpdateRoleUseCase;\n export type Error = UpdateRoleUseCaseError;\n}\n\nexport interface RoleBeforeUpdatePayload {\n original: Role;\n updated: Role;\n input: UpdateRoleUseCaseInput;\n}\n\nexport interface RoleAfterUpdatePayload {\n original: Role;\n updated: Role;\n input: UpdateRoleUseCaseInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AA2BvD,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","UpdateRoleUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { Role, UpdateRoleInput as UpdateRoleUseCaseInput } from \"../shared/types.js\";\nimport { RolesRepository } from \"../shared/abstractions.js\";\nimport {\n NotAuthorizedError,\n CannotUpdatePluginRolesError,\n RoleValidationError\n} from \"../shared/errors.js\";\n\nexport interface IUpdateRoleUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n cannotUpdatePlugin: CannotUpdatePluginRolesError;\n validation: RoleValidationError;\n}\n\ntype UpdateRoleUseCaseError =\n | IUpdateRoleUseCaseErrors[keyof IUpdateRoleUseCaseErrors]\n | RolesRepository.Error;\n\nexport interface IUpdateRoleUseCase {\n execute(\n id: string,\n input: UpdateRoleUseCaseInput\n ): Promise<Result<Role, UpdateRoleUseCaseError>>;\n}\n\n/** Update an existing security role. */\nexport const UpdateRoleUseCase = createAbstraction<IUpdateRoleUseCase>(\"UpdateRoleUseCase\");\n\nexport namespace UpdateRoleUseCase {\n export type Interface = IUpdateRoleUseCase;\n export type Error = UpdateRoleUseCaseError;\n}\n\nexport interface RoleBeforeUpdatePayload {\n original: Role;\n updated: Role;\n input: UpdateRoleUseCaseInput;\n}\n\nexport interface RoleAfterUpdatePayload {\n original: Role;\n updated: Role;\n input: UpdateRoleUseCaseInput;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AA2BvD;AACA,OAAO,MAAMC,iBAAiB,GAAGD,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
@@ -5,6 +5,7 @@ export declare class RoleBeforeUpdateEvent extends DomainEvent<RoleBeforeUpdateP
5
5
  eventType: "role.beforeUpdate";
6
6
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleBeforeUpdateEvent>>;
7
7
  }
8
+ /** Hook into role lifecycle before a role is updated. */
8
9
  export declare const RoleBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleBeforeUpdateEvent>>;
9
10
  export declare namespace RoleBeforeUpdateEventHandler {
10
11
  type Interface = IEventHandler<RoleBeforeUpdateEvent>;
@@ -14,6 +15,7 @@ export declare class RoleAfterUpdateEvent extends DomainEvent<RoleAfterUpdatePay
14
15
  eventType: "role.afterUpdate";
15
16
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<RoleAfterUpdateEvent>>;
16
17
  }
18
+ /** Hook into role lifecycle after a role is updated. */
17
19
  export declare const RoleAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<RoleAfterUpdateEvent>>;
18
20
  export declare namespace RoleAfterUpdateEventHandler {
19
21
  type Interface = IEventHandler<RoleAfterUpdateEvent>;
@@ -6,6 +6,8 @@ export class RoleBeforeUpdateEvent extends DomainEvent {
6
6
  return RoleBeforeUpdateEventHandler;
7
7
  }
8
8
  }
9
+
10
+ /** Hook into role lifecycle before a role is updated. */
9
11
  export const RoleBeforeUpdateEventHandler = createAbstraction("RoleBeforeUpdateEventHandler");
10
12
  export class RoleAfterUpdateEvent extends DomainEvent {
11
13
  eventType = "role.afterUpdate";
@@ -13,6 +15,8 @@ export class RoleAfterUpdateEvent extends DomainEvent {
13
15
  return RoleAfterUpdateEventHandler;
14
16
  }
15
17
  }
18
+
19
+ /** Hook into role lifecycle after a role is updated. */
16
20
  export const RoleAfterUpdateEventHandler = createAbstraction("RoleAfterUpdateEventHandler");
17
21
 
18
22
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeUpdateEvent","eventType","getHandlerAbstraction","RoleBeforeUpdateEventHandler","RoleAfterUpdateEvent","RoleAfterUpdateEventHandler"],"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 { RoleBeforeUpdatePayload, RoleAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeUpdateEvent extends DomainEvent<RoleBeforeUpdatePayload> {\n eventType = \"role.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeUpdateEventHandler;\n }\n}\n\nexport const RoleBeforeUpdateEventHandler = createAbstraction<IEventHandler<RoleBeforeUpdateEvent>>(\n \"RoleBeforeUpdateEventHandler\"\n);\n\nexport namespace RoleBeforeUpdateEventHandler {\n export type Interface = IEventHandler<RoleBeforeUpdateEvent>;\n export type Event = RoleBeforeUpdateEvent;\n}\n\nexport class RoleAfterUpdateEvent extends DomainEvent<RoleAfterUpdatePayload> {\n eventType = \"role.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterUpdateEventHandler;\n }\n}\n\nexport const RoleAfterUpdateEventHandler = createAbstraction<IEventHandler<RoleAfterUpdateEvent>>(\n \"RoleAfterUpdateEventHandler\"\n);\n\nexport namespace RoleAfterUpdateEventHandler {\n export type Interface = IEventHandler<RoleAfterUpdateEvent>;\n export type Event = RoleAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGL,iBAAiB,CACzD,8BACJ,CAAC;AAOD,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,2BAA2B;EACtC;AACJ;AAEA,OAAO,MAAMA,2BAA2B,GAAGP,iBAAiB,CACxD,6BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","RoleBeforeUpdateEvent","eventType","getHandlerAbstraction","RoleBeforeUpdateEventHandler","RoleAfterUpdateEvent","RoleAfterUpdateEventHandler"],"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 { RoleBeforeUpdatePayload, RoleAfterUpdatePayload } from \"./abstractions.js\";\n\nexport class RoleBeforeUpdateEvent extends DomainEvent<RoleBeforeUpdatePayload> {\n eventType = \"role.beforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return RoleBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into role lifecycle before a role is updated. */\nexport const RoleBeforeUpdateEventHandler = createAbstraction<IEventHandler<RoleBeforeUpdateEvent>>(\n \"RoleBeforeUpdateEventHandler\"\n);\n\nexport namespace RoleBeforeUpdateEventHandler {\n export type Interface = IEventHandler<RoleBeforeUpdateEvent>;\n export type Event = RoleBeforeUpdateEvent;\n}\n\nexport class RoleAfterUpdateEvent extends DomainEvent<RoleAfterUpdatePayload> {\n eventType = \"role.afterUpdate\" as const;\n\n getHandlerAbstraction() {\n return RoleAfterUpdateEventHandler;\n }\n}\n\n/** Hook into role lifecycle after a role is updated. */\nexport const RoleAfterUpdateEventHandler = createAbstraction<IEventHandler<RoleAfterUpdateEvent>>(\n \"RoleAfterUpdateEventHandler\"\n);\n\nexport namespace RoleAfterUpdateEventHandler {\n export type Interface = IEventHandler<RoleAfterUpdateEvent>;\n export type Event = RoleAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW;AAIpB,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,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":[]}
@@ -4,21 +4,5 @@ export declare const updateRoleValidation: z.ZodObject<{
4
4
  description: z.ZodOptional<z.ZodString>;
5
5
  permissions: z.ZodOptional<z.ZodArray<z.ZodObject<{
6
6
  name: z.ZodString;
7
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
8
- name: z.ZodString;
9
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
10
- name: z.ZodString;
11
- }, z.ZodTypeAny, "passthrough">>, "many">>;
12
- }, "strip", z.ZodTypeAny, {
13
- permissions?: z.objectOutputType<{
14
- name: z.ZodString;
15
- }, z.ZodTypeAny, "passthrough">[] | undefined;
16
- name?: string | undefined;
17
- description?: string | undefined;
18
- }, {
19
- permissions?: z.objectInputType<{
20
- name: z.ZodString;
21
- }, z.ZodTypeAny, "passthrough">[] | undefined;
22
- name?: string | undefined;
23
- description?: string | undefined;
24
- }>;
7
+ }, z.core.$loose>>>;
8
+ }, z.core.$strip>;
@@ -2,9 +2,9 @@ import { z } from "zod";
2
2
  export const updateRoleValidation = z.object({
3
3
  name: z.string().min(3).optional(),
4
4
  description: z.string().max(500).optional(),
5
- permissions: z.array(z.object({
5
+ permissions: z.array(z.looseObject({
6
6
  name: z.string()
7
- }).passthrough()).optional()
7
+ })).optional()
8
8
  });
9
9
 
10
10
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["z","updateRoleValidation","object","name","string","min","optional","description","max","permissions","array","passthrough"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const updateRoleValidation = z.object({\n name: z.string().min(3).optional(),\n description: z.string().max(500).optional(),\n permissions: z.array(z.object({ name: z.string() }).passthrough()).optional()\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,oBAAoB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACzCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAClCC,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,GAAG,CAAC,GAAG,CAAC,CAACF,QAAQ,CAAC,CAAC;EAC3CG,WAAW,EAAET,CAAC,CAACU,KAAK,CAACV,CAAC,CAACE,MAAM,CAAC;IAAEC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC;EAAE,CAAC,CAAC,CAACO,WAAW,CAAC,CAAC,CAAC,CAACL,QAAQ,CAAC;AAChF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["z","updateRoleValidation","object","name","string","min","optional","description","max","permissions","array","looseObject"],"sources":["schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const updateRoleValidation = z.object({\n name: z.string().min(3).optional(),\n description: z.string().max(500).optional(),\n permissions: z.array(z.looseObject({ name: z.string() })).optional()\n});\n"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AAEvB,OAAO,MAAMC,oBAAoB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACzCC,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAClCC,WAAW,EAAEP,CAAC,CAACI,MAAM,CAAC,CAAC,CAACI,GAAG,CAAC,GAAG,CAAC,CAACF,QAAQ,CAAC,CAAC;EAC3CG,WAAW,EAAET,CAAC,CAACU,KAAK,CAACV,CAAC,CAACW,WAAW,CAAC;IAAER,IAAI,EAAEH,CAAC,CAACI,MAAM,CAAC;EAAE,CAAC,CAAC,CAAC,CAACE,QAAQ,CAAC;AACvE,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { RolesRepository } from "./shared/RolesRepository.js";
3
+ import { RoleProvider } from "./shared/RoleProvider.js";
3
4
  import { RolesRepositoryCachingDecorator } from "./shared/decorators/RolesRepositoryCachingDecorator.js";
4
5
  import { GetRoleFeature } from "./GetRole/feature.js";
5
6
  import { ListRolesFeature } from "./ListRoles/feature.js";
@@ -12,6 +13,7 @@ export const RolesFeature = createFeature({
12
13
  register(container) {
13
14
  // Register repository in singleton scope
14
15
  container.register(RolesRepository).inSingletonScope();
16
+ container.register(RoleProvider).inSingletonScope();
15
17
 
16
18
  // Register caching decorator
17
19
  container.registerDecorator(RolesRepositoryCachingDecorator);
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","RolesRepository","RolesRepositoryCachingDecorator","GetRoleFeature","ListRolesFeature","CreateRoleFeature","UpdateRoleFeature","DeleteRoleFeature","RoleInstaller","RolesFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { RolesRepository } from \"./shared/RolesRepository.js\";\nimport { RolesRepositoryCachingDecorator } from \"./shared/decorators/RolesRepositoryCachingDecorator.js\";\nimport { GetRoleFeature } from \"./GetRole/feature.js\";\nimport { ListRolesFeature } from \"./ListRoles/feature.js\";\nimport { CreateRoleFeature } from \"./CreateRole/feature.js\";\nimport { UpdateRoleFeature } from \"./UpdateRole/feature.js\";\nimport { DeleteRoleFeature } from \"./DeleteRole/feature.js\";\nimport { RoleInstaller } from \"~/features/security/roles/Installer/RolesInstaller.js\";\n\nexport const RolesFeature = createFeature({\n name: \"Roles\",\n register(container) {\n // Register repository in singleton scope\n container.register(RolesRepository).inSingletonScope();\n\n // Register caching decorator\n container.registerDecorator(RolesRepositoryCachingDecorator);\n\n // Register all use cases\n GetRoleFeature.register(container);\n ListRolesFeature.register(container);\n CreateRoleFeature.register(container);\n UpdateRoleFeature.register(container);\n DeleteRoleFeature.register(container);\n\n container.register(RoleInstaller);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASC,+BAA+B;AACxC,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,aAAa;AAEtB,OAAO,MAAMC,YAAY,GAAGT,aAAa,CAAC;EACtCU,IAAI,EAAE,OAAO;EACbC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACV,eAAe,CAAC,CAACY,gBAAgB,CAAC,CAAC;;IAEtD;IACAD,SAAS,CAACE,iBAAiB,CAACZ,+BAA+B,CAAC;;IAE5D;IACAC,cAAc,CAACQ,QAAQ,CAACC,SAAS,CAAC;IAClCR,gBAAgB,CAACO,QAAQ,CAACC,SAAS,CAAC;IACpCP,iBAAiB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACrCN,iBAAiB,CAACK,QAAQ,CAACC,SAAS,CAAC;IACrCL,iBAAiB,CAACI,QAAQ,CAACC,SAAS,CAAC;IAErCA,SAAS,CAACD,QAAQ,CAACH,aAAa,CAAC;EACrC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createFeature","RolesRepository","RoleProvider","RolesRepositoryCachingDecorator","GetRoleFeature","ListRolesFeature","CreateRoleFeature","UpdateRoleFeature","DeleteRoleFeature","RoleInstaller","RolesFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { RolesRepository } from \"./shared/RolesRepository.js\";\nimport { RoleProvider } from \"./shared/RoleProvider.js\";\nimport { RolesRepositoryCachingDecorator } from \"./shared/decorators/RolesRepositoryCachingDecorator.js\";\nimport { GetRoleFeature } from \"./GetRole/feature.js\";\nimport { ListRolesFeature } from \"./ListRoles/feature.js\";\nimport { CreateRoleFeature } from \"./CreateRole/feature.js\";\nimport { UpdateRoleFeature } from \"./UpdateRole/feature.js\";\nimport { DeleteRoleFeature } from \"./DeleteRole/feature.js\";\nimport { RoleInstaller } from \"~/features/security/roles/Installer/RolesInstaller.js\";\n\nexport const RolesFeature = createFeature({\n name: \"Roles\",\n register(container) {\n // Register repository in singleton scope\n container.register(RolesRepository).inSingletonScope();\n container.register(RoleProvider).inSingletonScope();\n\n // Register caching decorator\n container.registerDecorator(RolesRepositoryCachingDecorator);\n\n // Register all use cases\n GetRoleFeature.register(container);\n ListRolesFeature.register(container);\n CreateRoleFeature.register(container);\n UpdateRoleFeature.register(container);\n DeleteRoleFeature.register(container);\n\n container.register(RoleInstaller);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AACxB,SAASC,YAAY;AACrB,SAASC,+BAA+B;AACxC,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,aAAa;AAEtB,OAAO,MAAMC,YAAY,GAAGV,aAAa,CAAC;EACtCW,IAAI,EAAE,OAAO;EACbC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACX,eAAe,CAAC,CAACa,gBAAgB,CAAC,CAAC;IACtDD,SAAS,CAACD,QAAQ,CAACV,YAAY,CAAC,CAACY,gBAAgB,CAAC,CAAC;;IAEnD;IACAD,SAAS,CAACE,iBAAiB,CAACZ,+BAA+B,CAAC;;IAE5D;IACAC,cAAc,CAACQ,QAAQ,CAACC,SAAS,CAAC;IAClCR,gBAAgB,CAACO,QAAQ,CAACC,SAAS,CAAC;IACpCP,iBAAiB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACrCN,iBAAiB,CAACK,QAAQ,CAACC,SAAS,CAAC;IACrCL,iBAAiB,CAACI,QAAQ,CAACC,SAAS,CAAC;IAErCA,SAAS,CAACD,QAAQ,CAACH,aAAa,CAAC;EACrC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { RolesProvider } from "../../../../features/security/shared/abstractions.js";
2
+ import { RoleFactory } from "./abstractions.js";
3
+ import type { Role } from "./types.js";
4
+ declare class RoleProviderImpl implements RolesProvider.Interface {
5
+ private roleFactories;
6
+ private cache;
7
+ constructor(roleFactories: RoleFactory.Interface[]);
8
+ getRoles(): Promise<Role[]>;
9
+ }
10
+ export declare const RoleProvider: typeof RoleProviderImpl & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("~/features/security/shared/abstractions.js").IRolesProvider>;
12
+ };
13
+ export {};
@@ -0,0 +1,29 @@
1
+ import { RolesProvider } from "../../shared/abstractions.js";
2
+ import { RoleFactory } from "./abstractions.js";
3
+ class RoleProviderImpl {
4
+ constructor(roleFactories) {
5
+ this.roleFactories = roleFactories;
6
+ }
7
+ async getRoles() {
8
+ if (this.cache === undefined) {
9
+ const results = await Promise.all(this.roleFactories.map(factory => factory.execute()));
10
+ this.cache = results.flat().map(codeRole => ({
11
+ ...codeRole,
12
+ id: codeRole.slug,
13
+ createdOn: null,
14
+ createdBy: null,
15
+ system: codeRole.system ?? false,
16
+ plugin: true
17
+ }));
18
+ }
19
+ return this.cache;
20
+ }
21
+ }
22
+ export const RoleProvider = RolesProvider.createImplementation({
23
+ implementation: RoleProviderImpl,
24
+ dependencies: [[RoleFactory, {
25
+ multiple: true
26
+ }]]
27
+ });
28
+
29
+ //# sourceMappingURL=RoleProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RolesProvider","RoleFactory","RoleProviderImpl","constructor","roleFactories","getRoles","cache","undefined","results","Promise","all","map","factory","execute","flat","codeRole","id","slug","createdOn","createdBy","system","plugin","RoleProvider","createImplementation","implementation","dependencies","multiple"],"sources":["RoleProvider.ts"],"sourcesContent":["import { RolesProvider } from \"~/features/security/shared/abstractions.js\";\nimport { RoleFactory } from \"./abstractions.js\";\nimport type { Role } from \"./types.js\";\n\nclass RoleProviderImpl implements RolesProvider.Interface {\n private cache: Role[] | undefined;\n\n constructor(private roleFactories: RoleFactory.Interface[]) {}\n\n async getRoles(): Promise<Role[]> {\n if (this.cache === undefined) {\n const results = await Promise.all(this.roleFactories.map(factory => factory.execute()));\n this.cache = results.flat().map<Role>(codeRole => ({\n ...codeRole,\n id: codeRole.slug,\n createdOn: null,\n createdBy: null,\n system: codeRole.system ?? false,\n plugin: true\n }));\n }\n\n return this.cache;\n }\n}\n\nexport const RoleProvider = RolesProvider.createImplementation({\n implementation: RoleProviderImpl,\n dependencies: [[RoleFactory, { multiple: true }]]\n});\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,WAAW;AAGpB,MAAMC,gBAAgB,CAAoC;EAGtDC,WAAWA,CAASC,aAAsC,EAAE;IAAA,KAAxCA,aAAsC,GAAtCA,aAAsC;EAAG;EAE7D,MAAMC,QAAQA,CAAA,EAAoB;IAC9B,IAAI,IAAI,CAACC,KAAK,KAAKC,SAAS,EAAE;MAC1B,MAAMC,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,IAAI,CAACN,aAAa,CAACO,GAAG,CAACC,OAAO,IAAIA,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;MACvF,IAAI,CAACP,KAAK,GAAGE,OAAO,CAACM,IAAI,CAAC,CAAC,CAACH,GAAG,CAAOI,QAAQ,KAAK;QAC/C,GAAGA,QAAQ;QACXC,EAAE,EAAED,QAAQ,CAACE,IAAI;QACjBC,SAAS,EAAE,IAAI;QACfC,SAAS,EAAE,IAAI;QACfC,MAAM,EAAEL,QAAQ,CAACK,MAAM,IAAI,KAAK;QAChCC,MAAM,EAAE;MACZ,CAAC,CAAC,CAAC;IACP;IAEA,OAAO,IAAI,CAACf,KAAK;EACrB;AACJ;AAEA,OAAO,MAAMgB,YAAY,GAAGtB,aAAa,CAACuB,oBAAoB,CAAC;EAC3DC,cAAc,EAAEtB,gBAAgB;EAChCuB,YAAY,EAAE,CAAC,CAACxB,WAAW,EAAE;IAAEyB,QAAQ,EAAE;EAAK,CAAC,CAAC;AACpD,CAAC,CAAC","ignoreList":[]}
@@ -14,5 +14,7 @@ declare class RolesRepositoryImpl implements RepositoryAbstraction.Interface {
14
14
  update(role: Role): Promise<Result<void, RepositoryAbstraction.Error>>;
15
15
  delete(role: Role): Promise<Result<void, RepositoryAbstraction.Error>>;
16
16
  }
17
- export declare const RolesRepository: import("@webiny/di").Implementation<typeof RolesRepositoryImpl>;
17
+ export declare const RolesRepository: typeof RolesRepositoryImpl & {
18
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IRolesRepository>;
19
+ };
18
20
  export {};