@stamhoofd/structures 2.1.1 → 2.1.3

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 (349) hide show
  1. package/dist/index.d.ts +19 -11
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +20 -11
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/Document.d.ts +11 -4
  6. package/dist/src/Document.d.ts.map +1 -1
  7. package/dist/src/Document.js +57 -7
  8. package/dist/src/Document.js.map +1 -1
  9. package/dist/src/Group.d.ts +10 -17
  10. package/dist/src/Group.d.ts.map +1 -1
  11. package/dist/src/Group.js +25 -22
  12. package/dist/src/Group.js.map +1 -1
  13. package/dist/src/GroupCategory.d.ts +11 -10
  14. package/dist/src/GroupCategory.d.ts.map +1 -1
  15. package/dist/src/GroupCategory.js +19 -36
  16. package/dist/src/GroupCategory.js.map +1 -1
  17. package/dist/src/GroupSettings.d.ts +11 -0
  18. package/dist/src/GroupSettings.d.ts.map +1 -1
  19. package/dist/src/GroupSettings.js +13 -0
  20. package/dist/src/GroupSettings.js.map +1 -1
  21. package/dist/src/Organization.d.ts +22 -12
  22. package/dist/src/Organization.d.ts.map +1 -1
  23. package/dist/src/Organization.js +38 -44
  24. package/dist/src/Organization.js.map +1 -1
  25. package/dist/src/OrganizationMetaData.d.ts +18 -1
  26. package/dist/src/OrganizationMetaData.d.ts.map +1 -1
  27. package/dist/src/OrganizationMetaData.js +23 -0
  28. package/dist/src/OrganizationMetaData.js.map +1 -1
  29. package/dist/src/Permissions.d.ts +134 -29
  30. package/dist/src/Permissions.d.ts.map +1 -1
  31. package/dist/src/Permissions.js +534 -115
  32. package/dist/src/Permissions.js.map +1 -1
  33. package/dist/src/Platform.d.ts +26 -1
  34. package/dist/src/Platform.d.ts.map +1 -1
  35. package/dist/src/Platform.js +72 -4
  36. package/dist/src/Platform.js.map +1 -1
  37. package/dist/src/RegistrationPeriod.d.ts +12 -1
  38. package/dist/src/RegistrationPeriod.d.ts.map +1 -1
  39. package/dist/src/RegistrationPeriod.js +21 -0
  40. package/dist/src/RegistrationPeriod.js.map +1 -1
  41. package/dist/src/User.d.ts +6 -3
  42. package/dist/src/User.d.ts.map +1 -1
  43. package/dist/src/User.js +52 -2
  44. package/dist/src/User.js.map +1 -1
  45. package/dist/src/Version.d.ts +1 -1
  46. package/dist/src/Version.js +1 -1
  47. package/dist/src/admin/OrganizationSummary.js +1 -1
  48. package/dist/src/admin/OrganizationSummary.js.map +1 -1
  49. package/dist/src/billing/STPackage.js +2 -2
  50. package/dist/src/billing/STPackage.js.map +1 -1
  51. package/dist/src/billing/STPackageBundle.js +2 -2
  52. package/dist/src/billing/STPackageBundle.js.map +1 -1
  53. package/dist/src/endpoints/RegisterResponse.d.ts +2 -2
  54. package/dist/src/endpoints/RegisterResponse.d.ts.map +1 -1
  55. package/dist/src/endpoints/RegisterResponse.js +2 -3
  56. package/dist/src/endpoints/RegisterResponse.js.map +1 -1
  57. package/dist/src/filters/PropertyFilter.d.ts +13 -10
  58. package/dist/src/filters/PropertyFilter.d.ts.map +1 -1
  59. package/dist/src/filters/PropertyFilter.js +35 -22
  60. package/dist/src/filters/PropertyFilter.js.map +1 -1
  61. package/dist/src/filters/new/FilteredRequest.d.ts +4 -1
  62. package/dist/src/filters/new/FilteredRequest.d.ts.map +1 -1
  63. package/dist/src/filters/new/FilteredRequest.js +18 -5
  64. package/dist/src/filters/new/FilteredRequest.js.map +1 -1
  65. package/dist/src/filters/new/InMemoryFilter.d.ts +7 -7
  66. package/dist/src/filters/new/InMemoryFilter.d.ts.map +1 -1
  67. package/dist/src/filters/new/InMemoryFilter.js +143 -49
  68. package/dist/src/filters/new/InMemoryFilter.js.map +1 -1
  69. package/dist/src/filters/new/Sorters.d.ts.map +1 -1
  70. package/dist/src/filters/new/Sorters.js +0 -2
  71. package/dist/src/filters/new/Sorters.js.map +1 -1
  72. package/dist/src/filters/new/StamhoofdFilter.d.ts +6 -3
  73. package/dist/src/filters/new/StamhoofdFilter.d.ts.map +1 -1
  74. package/dist/src/filters/new/StamhoofdFilter.js +11 -0
  75. package/dist/src/filters/new/StamhoofdFilter.js.map +1 -1
  76. package/dist/src/grouping/PaginatedResponse.d.ts +6 -6
  77. package/dist/src/grouping/PaginatedResponse.d.ts.map +1 -1
  78. package/dist/src/grouping/PaginatedResponse.js +3 -2
  79. package/dist/src/grouping/PaginatedResponse.js.map +1 -1
  80. package/dist/src/members/EmergencyContact.d.ts +1 -0
  81. package/dist/src/members/EmergencyContact.d.ts.map +1 -1
  82. package/dist/src/members/EmergencyContact.js +6 -1
  83. package/dist/src/members/EmergencyContact.js.map +1 -1
  84. package/dist/src/members/Member.d.ts +0 -10
  85. package/dist/src/members/Member.d.ts.map +1 -1
  86. package/dist/src/members/Member.js +0 -18
  87. package/dist/src/members/Member.js.map +1 -1
  88. package/dist/src/members/MemberDetails.d.ts +14 -35
  89. package/dist/src/members/MemberDetails.d.ts.map +1 -1
  90. package/dist/src/members/MemberDetails.js +137 -274
  91. package/dist/src/members/MemberDetails.js.map +1 -1
  92. package/dist/src/members/MemberWithRegistrations.d.ts +11 -17
  93. package/dist/src/members/MemberWithRegistrations.d.ts.map +1 -1
  94. package/dist/src/members/MemberWithRegistrations.js +9 -197
  95. package/dist/src/members/MemberWithRegistrations.js.map +1 -1
  96. package/dist/src/members/OrganizationRecordsConfiguration.d.ts +10 -48
  97. package/dist/src/members/OrganizationRecordsConfiguration.d.ts.map +1 -1
  98. package/dist/src/members/OrganizationRecordsConfiguration.js +8 -161
  99. package/dist/src/members/OrganizationRecordsConfiguration.js.map +1 -1
  100. package/dist/src/members/PlatformMember.d.ts +6 -6
  101. package/dist/src/members/PlatformMember.d.ts.map +1 -1
  102. package/dist/src/members/PlatformMember.js +17 -14
  103. package/dist/src/members/PlatformMember.js.map +1 -1
  104. package/dist/src/members/Registration.d.ts +4 -1
  105. package/dist/src/members/Registration.d.ts.map +1 -1
  106. package/dist/src/members/Registration.js +11 -2
  107. package/dist/src/members/Registration.js.map +1 -1
  108. package/dist/src/members/RegistrationWithMember.d.ts +0 -2
  109. package/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
  110. package/dist/src/members/RegistrationWithMember.js +0 -4
  111. package/dist/src/members/RegistrationWithMember.js.map +1 -1
  112. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +109 -63
  113. package/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +1 -1
  114. package/dist/src/members/checkout/RegisterCheckout.d.ts +98 -17
  115. package/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
  116. package/dist/src/members/checkout/RegisterCheckout.js +545 -22
  117. package/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
  118. package/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +1 -1
  119. package/dist/src/members/records/RecordCategory.d.ts +17 -16
  120. package/dist/src/members/records/RecordCategory.d.ts.map +1 -1
  121. package/dist/src/members/records/RecordCategory.js +38 -179
  122. package/dist/src/members/records/RecordCategory.js.map +1 -1
  123. package/dist/src/members/records/RecordConfigurationFactory.d.ts.map +1 -1
  124. package/dist/src/members/records/RecordConfigurationFactory.js +62 -45
  125. package/dist/src/members/records/RecordConfigurationFactory.js.map +1 -1
  126. package/dist/src/members/records/RecordFactory.d.ts.map +1 -1
  127. package/dist/src/members/records/RecordFactory.js +6 -12
  128. package/dist/src/members/records/RecordFactory.js.map +1 -1
  129. package/dist/src/members/records/RecordSettings.d.ts +2 -1
  130. package/dist/src/members/records/RecordSettings.d.ts.map +1 -1
  131. package/dist/src/members/records/RecordSettings.js +13 -4
  132. package/dist/src/members/records/RecordSettings.js.map +1 -1
  133. package/dist/src/webshops/Checkout.d.ts +11 -8
  134. package/dist/src/webshops/Checkout.d.ts.map +1 -1
  135. package/dist/src/webshops/Checkout.js +29 -71
  136. package/dist/src/webshops/Checkout.js.map +1 -1
  137. package/dist/src/webshops/TransferSettings.d.ts +1 -1
  138. package/dist/src/webshops/TransferSettings.d.ts.map +1 -1
  139. package/dist/src/webshops/TransferSettings.js +5 -8
  140. package/dist/src/webshops/TransferSettings.js.map +1 -1
  141. package/dist/src/webshops/Webshop.js +2 -2
  142. package/dist/src/webshops/Webshop.js.map +1 -1
  143. package/dist/src/webshops/WebshopMetaData.d.ts +8 -0
  144. package/dist/src/webshops/WebshopMetaData.d.ts.map +1 -1
  145. package/dist/src/webshops/WebshopMetaData.js +9 -1
  146. package/dist/src/webshops/WebshopMetaData.js.map +1 -1
  147. package/esm/dist/index.d.ts +19 -11
  148. package/esm/dist/index.d.ts.map +1 -1
  149. package/esm/dist/index.js +20 -11
  150. package/esm/dist/index.js.map +1 -1
  151. package/esm/dist/src/Document.d.ts +11 -4
  152. package/esm/dist/src/Document.d.ts.map +1 -1
  153. package/esm/dist/src/Document.js +57 -7
  154. package/esm/dist/src/Document.js.map +1 -1
  155. package/esm/dist/src/Group.d.ts +10 -17
  156. package/esm/dist/src/Group.d.ts.map +1 -1
  157. package/esm/dist/src/Group.js +26 -23
  158. package/esm/dist/src/Group.js.map +1 -1
  159. package/esm/dist/src/GroupCategory.d.ts +11 -10
  160. package/esm/dist/src/GroupCategory.d.ts.map +1 -1
  161. package/esm/dist/src/GroupCategory.js +20 -37
  162. package/esm/dist/src/GroupCategory.js.map +1 -1
  163. package/esm/dist/src/GroupSettings.d.ts +11 -0
  164. package/esm/dist/src/GroupSettings.d.ts.map +1 -1
  165. package/esm/dist/src/GroupSettings.js +13 -0
  166. package/esm/dist/src/GroupSettings.js.map +1 -1
  167. package/esm/dist/src/Organization.d.ts +22 -12
  168. package/esm/dist/src/Organization.d.ts.map +1 -1
  169. package/esm/dist/src/Organization.js +39 -45
  170. package/esm/dist/src/Organization.js.map +1 -1
  171. package/esm/dist/src/OrganizationMetaData.d.ts +18 -1
  172. package/esm/dist/src/OrganizationMetaData.d.ts.map +1 -1
  173. package/esm/dist/src/OrganizationMetaData.js +23 -0
  174. package/esm/dist/src/OrganizationMetaData.js.map +1 -1
  175. package/esm/dist/src/Permissions.d.ts +134 -29
  176. package/esm/dist/src/Permissions.d.ts.map +1 -1
  177. package/esm/dist/src/Permissions.js +529 -113
  178. package/esm/dist/src/Permissions.js.map +1 -1
  179. package/esm/dist/src/Platform.d.ts +26 -1
  180. package/esm/dist/src/Platform.d.ts.map +1 -1
  181. package/esm/dist/src/Platform.js +70 -4
  182. package/esm/dist/src/Platform.js.map +1 -1
  183. package/esm/dist/src/RegistrationPeriod.d.ts +12 -1
  184. package/esm/dist/src/RegistrationPeriod.d.ts.map +1 -1
  185. package/esm/dist/src/RegistrationPeriod.js +21 -0
  186. package/esm/dist/src/RegistrationPeriod.js.map +1 -1
  187. package/esm/dist/src/User.d.ts +6 -3
  188. package/esm/dist/src/User.d.ts.map +1 -1
  189. package/esm/dist/src/User.js +52 -2
  190. package/esm/dist/src/User.js.map +1 -1
  191. package/esm/dist/src/Version.d.ts +1 -1
  192. package/esm/dist/src/Version.js +1 -1
  193. package/esm/dist/src/admin/OrganizationSummary.js +1 -1
  194. package/esm/dist/src/admin/OrganizationSummary.js.map +1 -1
  195. package/esm/dist/src/billing/STPackage.js +2 -2
  196. package/esm/dist/src/billing/STPackage.js.map +1 -1
  197. package/esm/dist/src/billing/STPackageBundle.js +2 -2
  198. package/esm/dist/src/billing/STPackageBundle.js.map +1 -1
  199. package/esm/dist/src/endpoints/RegisterResponse.d.ts +2 -2
  200. package/esm/dist/src/endpoints/RegisterResponse.d.ts.map +1 -1
  201. package/esm/dist/src/endpoints/RegisterResponse.js +2 -3
  202. package/esm/dist/src/endpoints/RegisterResponse.js.map +1 -1
  203. package/esm/dist/src/filters/PropertyFilter.d.ts +13 -10
  204. package/esm/dist/src/filters/PropertyFilter.d.ts.map +1 -1
  205. package/esm/dist/src/filters/PropertyFilter.js +36 -23
  206. package/esm/dist/src/filters/PropertyFilter.js.map +1 -1
  207. package/esm/dist/src/filters/new/FilteredRequest.d.ts +4 -1
  208. package/esm/dist/src/filters/new/FilteredRequest.d.ts.map +1 -1
  209. package/esm/dist/src/filters/new/FilteredRequest.js +18 -6
  210. package/esm/dist/src/filters/new/FilteredRequest.js.map +1 -1
  211. package/esm/dist/src/filters/new/InMemoryFilter.d.ts +7 -7
  212. package/esm/dist/src/filters/new/InMemoryFilter.d.ts.map +1 -1
  213. package/esm/dist/src/filters/new/InMemoryFilter.js +142 -49
  214. package/esm/dist/src/filters/new/InMemoryFilter.js.map +1 -1
  215. package/esm/dist/src/filters/new/Sorters.d.ts.map +1 -1
  216. package/esm/dist/src/filters/new/Sorters.js +0 -2
  217. package/esm/dist/src/filters/new/Sorters.js.map +1 -1
  218. package/esm/dist/src/filters/new/StamhoofdFilter.d.ts +6 -3
  219. package/esm/dist/src/filters/new/StamhoofdFilter.d.ts.map +1 -1
  220. package/esm/dist/src/filters/new/StamhoofdFilter.js +9 -1
  221. package/esm/dist/src/filters/new/StamhoofdFilter.js.map +1 -1
  222. package/esm/dist/src/grouping/PaginatedResponse.d.ts +6 -6
  223. package/esm/dist/src/grouping/PaginatedResponse.d.ts.map +1 -1
  224. package/esm/dist/src/grouping/PaginatedResponse.js +3 -2
  225. package/esm/dist/src/grouping/PaginatedResponse.js.map +1 -1
  226. package/esm/dist/src/members/EmergencyContact.d.ts +1 -0
  227. package/esm/dist/src/members/EmergencyContact.d.ts.map +1 -1
  228. package/esm/dist/src/members/EmergencyContact.js +6 -1
  229. package/esm/dist/src/members/EmergencyContact.js.map +1 -1
  230. package/esm/dist/src/members/Member.d.ts +0 -10
  231. package/esm/dist/src/members/Member.d.ts.map +1 -1
  232. package/esm/dist/src/members/Member.js +1 -19
  233. package/esm/dist/src/members/Member.js.map +1 -1
  234. package/esm/dist/src/members/MemberDetails.d.ts +14 -35
  235. package/esm/dist/src/members/MemberDetails.d.ts.map +1 -1
  236. package/esm/dist/src/members/MemberDetails.js +139 -276
  237. package/esm/dist/src/members/MemberDetails.js.map +1 -1
  238. package/esm/dist/src/members/MemberWithRegistrations.d.ts +11 -17
  239. package/esm/dist/src/members/MemberWithRegistrations.d.ts.map +1 -1
  240. package/esm/dist/src/members/MemberWithRegistrations.js +9 -197
  241. package/esm/dist/src/members/MemberWithRegistrations.js.map +1 -1
  242. package/esm/dist/src/members/OrganizationRecordsConfiguration.d.ts +10 -48
  243. package/esm/dist/src/members/OrganizationRecordsConfiguration.d.ts.map +1 -1
  244. package/esm/dist/src/members/OrganizationRecordsConfiguration.js +8 -160
  245. package/esm/dist/src/members/OrganizationRecordsConfiguration.js.map +1 -1
  246. package/esm/dist/src/members/PlatformMember.d.ts +6 -6
  247. package/esm/dist/src/members/PlatformMember.d.ts.map +1 -1
  248. package/esm/dist/src/members/PlatformMember.js +17 -14
  249. package/esm/dist/src/members/PlatformMember.js.map +1 -1
  250. package/esm/dist/src/members/Registration.d.ts +4 -1
  251. package/esm/dist/src/members/Registration.d.ts.map +1 -1
  252. package/esm/dist/src/members/Registration.js +11 -2
  253. package/esm/dist/src/members/Registration.js.map +1 -1
  254. package/esm/dist/src/members/RegistrationWithMember.d.ts +0 -2
  255. package/esm/dist/src/members/RegistrationWithMember.d.ts.map +1 -1
  256. package/esm/dist/src/members/RegistrationWithMember.js +0 -4
  257. package/esm/dist/src/members/RegistrationWithMember.js.map +1 -1
  258. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js +109 -63
  259. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.test.js.map +1 -1
  260. package/esm/dist/src/members/checkout/RegisterCheckout.d.ts +98 -17
  261. package/esm/dist/src/members/checkout/RegisterCheckout.d.ts.map +1 -1
  262. package/esm/dist/src/members/checkout/RegisterCheckout.js +539 -20
  263. package/esm/dist/src/members/checkout/RegisterCheckout.js.map +1 -1
  264. package/esm/dist/src/members/checkout/UnknownMemberWithRegistrations.d.ts +1 -1
  265. package/esm/dist/src/members/records/RecordCategory.d.ts +17 -16
  266. package/esm/dist/src/members/records/RecordCategory.d.ts.map +1 -1
  267. package/esm/dist/src/members/records/RecordCategory.js +39 -179
  268. package/esm/dist/src/members/records/RecordCategory.js.map +1 -1
  269. package/esm/dist/src/members/records/RecordConfigurationFactory.d.ts.map +1 -1
  270. package/esm/dist/src/members/records/RecordConfigurationFactory.js +63 -46
  271. package/esm/dist/src/members/records/RecordConfigurationFactory.js.map +1 -1
  272. package/esm/dist/src/members/records/RecordFactory.d.ts.map +1 -1
  273. package/esm/dist/src/members/records/RecordFactory.js +6 -12
  274. package/esm/dist/src/members/records/RecordFactory.js.map +1 -1
  275. package/esm/dist/src/members/records/RecordSettings.d.ts +2 -1
  276. package/esm/dist/src/members/records/RecordSettings.d.ts.map +1 -1
  277. package/esm/dist/src/members/records/RecordSettings.js +13 -4
  278. package/esm/dist/src/members/records/RecordSettings.js.map +1 -1
  279. package/esm/dist/src/webshops/Checkout.d.ts +11 -8
  280. package/esm/dist/src/webshops/Checkout.d.ts.map +1 -1
  281. package/esm/dist/src/webshops/Checkout.js +30 -72
  282. package/esm/dist/src/webshops/Checkout.js.map +1 -1
  283. package/esm/dist/src/webshops/TransferSettings.d.ts +1 -1
  284. package/esm/dist/src/webshops/TransferSettings.d.ts.map +1 -1
  285. package/esm/dist/src/webshops/TransferSettings.js +1 -4
  286. package/esm/dist/src/webshops/TransferSettings.js.map +1 -1
  287. package/esm/dist/src/webshops/Webshop.js +2 -2
  288. package/esm/dist/src/webshops/Webshop.js.map +1 -1
  289. package/esm/dist/src/webshops/WebshopMetaData.d.ts +8 -0
  290. package/esm/dist/src/webshops/WebshopMetaData.d.ts.map +1 -1
  291. package/esm/dist/src/webshops/WebshopMetaData.js +9 -1
  292. package/esm/dist/src/webshops/WebshopMetaData.js.map +1 -1
  293. package/package.json +2 -2
  294. package/dist/src/grouping/KeychainedMembers.d.ts +0 -14
  295. package/dist/src/grouping/KeychainedMembers.d.ts.map +0 -1
  296. package/dist/src/grouping/KeychainedMembers.js +0 -27
  297. package/dist/src/grouping/KeychainedMembers.js.map +0 -1
  298. package/dist/src/grouping/KeychainedResponse.d.ts +0 -25
  299. package/dist/src/grouping/KeychainedResponse.d.ts.map +0 -1
  300. package/dist/src/grouping/KeychainedResponse.js +0 -38
  301. package/dist/src/grouping/KeychainedResponse.js.map +0 -1
  302. package/dist/src/members/EncryptedMemberWithRegistrations.d.ts +0 -8
  303. package/dist/src/members/EncryptedMemberWithRegistrations.d.ts.map +0 -1
  304. package/dist/src/members/EncryptedMemberWithRegistrations.js +0 -18
  305. package/dist/src/members/EncryptedMemberWithRegistrations.js.map +0 -1
  306. package/dist/src/members/checkout/RegisterCart.d.ts +0 -49
  307. package/dist/src/members/checkout/RegisterCart.d.ts.map +0 -1
  308. package/dist/src/members/checkout/RegisterCart.js +0 -207
  309. package/dist/src/members/checkout/RegisterCart.js.map +0 -1
  310. package/dist/src/members/checkout/RegisterCartPriceCalculator.d.ts +0 -41
  311. package/dist/src/members/checkout/RegisterCartPriceCalculator.d.ts.map +0 -1
  312. package/dist/src/members/checkout/RegisterCartPriceCalculator.js +0 -352
  313. package/dist/src/members/checkout/RegisterCartPriceCalculator.js.map +0 -1
  314. package/dist/src/members/checkout/RegisterCartValidator.d.ts +0 -35
  315. package/dist/src/members/checkout/RegisterCartValidator.d.ts.map +0 -1
  316. package/dist/src/members/checkout/RegisterCartValidator.js +0 -345
  317. package/dist/src/members/checkout/RegisterCartValidator.js.map +0 -1
  318. package/dist/src/members/checkout/RegisterItem.d.ts +0 -59
  319. package/dist/src/members/checkout/RegisterItem.d.ts.map +0 -1
  320. package/dist/src/members/checkout/RegisterItem.js +0 -148
  321. package/dist/src/members/checkout/RegisterItem.js.map +0 -1
  322. package/esm/dist/src/grouping/KeychainedMembers.d.ts +0 -14
  323. package/esm/dist/src/grouping/KeychainedMembers.d.ts.map +0 -1
  324. package/esm/dist/src/grouping/KeychainedMembers.js +0 -23
  325. package/esm/dist/src/grouping/KeychainedMembers.js.map +0 -1
  326. package/esm/dist/src/grouping/KeychainedResponse.d.ts +0 -25
  327. package/esm/dist/src/grouping/KeychainedResponse.d.ts.map +0 -1
  328. package/esm/dist/src/grouping/KeychainedResponse.js +0 -33
  329. package/esm/dist/src/grouping/KeychainedResponse.js.map +0 -1
  330. package/esm/dist/src/members/EncryptedMemberWithRegistrations.d.ts +0 -8
  331. package/esm/dist/src/members/EncryptedMemberWithRegistrations.d.ts.map +0 -1
  332. package/esm/dist/src/members/EncryptedMemberWithRegistrations.js +0 -14
  333. package/esm/dist/src/members/EncryptedMemberWithRegistrations.js.map +0 -1
  334. package/esm/dist/src/members/checkout/RegisterCart.d.ts +0 -49
  335. package/esm/dist/src/members/checkout/RegisterCart.d.ts.map +0 -1
  336. package/esm/dist/src/members/checkout/RegisterCart.js +0 -202
  337. package/esm/dist/src/members/checkout/RegisterCart.js.map +0 -1
  338. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.d.ts +0 -41
  339. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.d.ts.map +0 -1
  340. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.js +0 -347
  341. package/esm/dist/src/members/checkout/RegisterCartPriceCalculator.js.map +0 -1
  342. package/esm/dist/src/members/checkout/RegisterCartValidator.d.ts +0 -35
  343. package/esm/dist/src/members/checkout/RegisterCartValidator.d.ts.map +0 -1
  344. package/esm/dist/src/members/checkout/RegisterCartValidator.js +0 -341
  345. package/esm/dist/src/members/checkout/RegisterCartValidator.js.map +0 -1
  346. package/esm/dist/src/members/checkout/RegisterItem.d.ts +0 -59
  347. package/esm/dist/src/members/checkout/RegisterItem.d.ts.map +0 -1
  348. package/esm/dist/src/members/checkout/RegisterItem.js +0 -142
  349. package/esm/dist/src/members/checkout/RegisterItem.js.map +0 -1
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FilledUserPermissions = exports.UserPermissions = exports.Permissions = exports.PermissionsByRole = exports.PermissionRoleDetailed = exports.PermissionRole = exports.getPermissionLevelNumber = exports.PermissionLevel = void 0;
3
+ exports.LoadedPermissions = exports.Permissions = exports.PermissionsByRole = exports.PermissionRoleDetailed = exports.ResourcePermissions = exports.getPermissionResourceTypeName = exports.PermissionsResourceType = exports.PermissionRole = exports.getPermissionLevelName = exports.getPermissionLevelNumber = exports.AccessRightHelper = exports.AccessRight = exports.PermissionLevel = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const simple_encoding_1 = require("@simonbackx/simple-encoding");
6
6
  const utility_1 = require("@stamhoofd/utility");
7
7
  const uuid_1 = require("uuid");
8
+ /**
9
+ * PermissionLevels are used to grant permissions to specific resources or system wide
10
+ */
8
11
  var PermissionLevel;
9
12
  (function (PermissionLevel) {
10
13
  /** No access */
@@ -16,6 +19,96 @@ var PermissionLevel;
16
19
  /** Full access */
17
20
  PermissionLevel["Full"] = "Full";
18
21
  })(PermissionLevel || (exports.PermissionLevel = PermissionLevel = {}));
22
+ /**
23
+ * More granular access rights to specific things in the system
24
+ */
25
+ var AccessRight;
26
+ (function (AccessRight) {
27
+ // Platform level permissions
28
+ /**
29
+ * Allows the user to log in as a full-access admin to a specific organization
30
+ */
31
+ AccessRight["PlatformLoginAs"] = "PlatformLoginAs";
32
+ // Organization level permissions
33
+ AccessRight["OrganizationCreateWebshops"] = "OrganizationCreateWebshops";
34
+ AccessRight["OrganizationManagePayments"] = "OrganizationManagePayments";
35
+ AccessRight["OrganizationFinanceDirector"] = "OrganizationFinanceDirector";
36
+ AccessRight["OrganizationCreateGroups"] = "OrganizationCreateGroups";
37
+ // Member data access rights
38
+ // Note: in order to read or write any data at all, a user first needs to have normal resource access to a group, category or organization
39
+ // So general data (name, birthday, gender, address, email, parents, emergency contacts) access can be controlled in that way (this doesn't have a separate access right).
40
+ AccessRight["MemberReadFinancialData"] = "MemberReadFinancialData";
41
+ AccessRight["MemberWriteFinancialData"] = "MemberWriteFinancialData";
42
+ // Webshop level permissions
43
+ AccessRight["WebshopScanTickets"] = "WebshopScanTickets";
44
+ })(AccessRight || (exports.AccessRight = AccessRight = {}));
45
+ class AccessRightHelper {
46
+ static getName(right) {
47
+ switch (right) {
48
+ case AccessRight.PlatformLoginAs: return 'Inloggen als hoofdbeheerder';
49
+ case AccessRight.OrganizationFinanceDirector: return 'Toegang tot volledige boekhouding';
50
+ case AccessRight.OrganizationManagePayments: return 'Overschrijvingen beheren';
51
+ case AccessRight.OrganizationCreateWebshops: return 'Webshops maken';
52
+ case AccessRight.OrganizationCreateGroups: return 'Groepen maken';
53
+ case AccessRight.WebshopScanTickets: return 'Tickets scannen';
54
+ // Member data
55
+ case AccessRight.MemberReadFinancialData: return 'Bekijk rekening leden';
56
+ case AccessRight.MemberWriteFinancialData: return 'Bewerk rekening leden';
57
+ }
58
+ }
59
+ static getNameShort(right) {
60
+ switch (right) {
61
+ case AccessRight.PlatformLoginAs: return 'Inloggen';
62
+ case AccessRight.OrganizationFinanceDirector: return 'Boekhouding';
63
+ case AccessRight.OrganizationManagePayments: return 'Overschrijvingen';
64
+ case AccessRight.OrganizationCreateWebshops: return 'Maken';
65
+ case AccessRight.OrganizationCreateGroups: return 'Maken';
66
+ case AccessRight.WebshopScanTickets: return 'Scannen';
67
+ // Member data
68
+ case AccessRight.MemberReadFinancialData: return 'Lidgeld bekijken';
69
+ case AccessRight.MemberWriteFinancialData: return 'Lidgeld bewerken';
70
+ }
71
+ }
72
+ static getDescription(right) {
73
+ switch (right) {
74
+ case AccessRight.PlatformLoginAs: return 'inloggen als hoofdbeheerder';
75
+ case AccessRight.OrganizationFinanceDirector: return 'volledige boekhouding';
76
+ case AccessRight.OrganizationManagePayments: return 'overschrijvingen';
77
+ case AccessRight.OrganizationCreateWebshops: return 'webshops maken';
78
+ case AccessRight.OrganizationCreateGroups: return 'groepen maken';
79
+ case AccessRight.WebshopScanTickets: return 'scannen van tickets';
80
+ // Member data
81
+ case AccessRight.MemberReadFinancialData: return 'Openstaande bedragen bekijken';
82
+ case AccessRight.MemberWriteFinancialData: return 'Openstaande bedragen bewerken';
83
+ }
84
+ }
85
+ /**
86
+ * If a user has a certain permission level, automatically grant the specific access right
87
+ * By default only full permissions gives all access rights, but you can tweak it:
88
+ * E.g., give webshop scan rights if you also have write access to that webshop
89
+ */
90
+ static autoGrantRightForLevel(right) {
91
+ switch (right) {
92
+ case AccessRight.WebshopScanTickets: return PermissionLevel.Write;
93
+ case AccessRight.OrganizationCreateGroups: return null; // Not included in full access
94
+ }
95
+ return PermissionLevel.Full;
96
+ }
97
+ /**
98
+ * Automatically grant a user access rights if they have a certain right
99
+ */
100
+ static autoInheritFrom(right) {
101
+ switch (right) {
102
+ // Finance director also has manage payments permissions automatically
103
+ case AccessRight.OrganizationManagePayments: return [AccessRight.OrganizationFinanceDirector];
104
+ // Finance director also can view and edit member financial data
105
+ case AccessRight.MemberReadFinancialData: return [AccessRight.OrganizationFinanceDirector];
106
+ case AccessRight.MemberWriteFinancialData: return [AccessRight.OrganizationFinanceDirector];
107
+ }
108
+ return [];
109
+ }
110
+ }
111
+ exports.AccessRightHelper = AccessRightHelper;
19
112
  function getPermissionLevelNumber(level) {
20
113
  switch (level) {
21
114
  case PermissionLevel.None: return 0;
@@ -29,6 +122,19 @@ function getPermissionLevelNumber(level) {
29
122
  }
30
123
  }
31
124
  exports.getPermissionLevelNumber = getPermissionLevelNumber;
125
+ function getPermissionLevelName(level) {
126
+ switch (level) {
127
+ case PermissionLevel.None: return 'Geen basistoegang';
128
+ case PermissionLevel.Read: return 'Lezen';
129
+ case PermissionLevel.Write: return 'Bewerken';
130
+ case PermissionLevel.Full: return 'Volledige toegang';
131
+ default: {
132
+ const l = level; // will throw compile error if new levels are added without editing this method
133
+ throw new Error("Unknown permission level " + l);
134
+ }
135
+ }
136
+ }
137
+ exports.getPermissionLevelName = getPermissionLevelName;
32
138
  class PermissionRole extends simple_encoding_1.AutoEncoder {
33
139
  constructor() {
34
140
  super(...arguments);
@@ -42,31 +148,110 @@ tslib_1.__decorate([
42
148
  tslib_1.__decorate([
43
149
  (0, simple_encoding_1.field)({ decoder: simple_encoding_1.StringDecoder })
44
150
  ], PermissionRole.prototype, "name", void 0);
45
- class PermissionRoleDetailed extends PermissionRole {
151
+ /**
152
+ * More granular access rights to specific things in the system
153
+ */
154
+ var PermissionsResourceType;
155
+ (function (PermissionsResourceType) {
156
+ PermissionsResourceType["Webshops"] = "Webshops";
157
+ PermissionsResourceType["Groups"] = "Groups";
158
+ PermissionsResourceType["GroupCategories"] = "GroupCategories";
159
+ PermissionsResourceType["OrganizationTags"] = "OrganizationTags";
160
+ PermissionsResourceType["RecordCategories"] = "RecordCategory";
161
+ })(PermissionsResourceType || (exports.PermissionsResourceType = PermissionsResourceType = {}));
162
+ function getPermissionResourceTypeName(type, plural = true) {
163
+ switch (type) {
164
+ case PermissionsResourceType.Webshops: return plural ? 'webshops' : 'webshop';
165
+ case PermissionsResourceType.Groups: return plural ? 'inschrijvingsgroepen' : 'inschrijvingsgroep';
166
+ case PermissionsResourceType.GroupCategories: return plural ? 'categorieën' : 'categorie';
167
+ case PermissionsResourceType.OrganizationTags: return plural ? 'tags' : 'tag';
168
+ case PermissionsResourceType.RecordCategories: return plural ? 'vragenlijsten' : 'vragenlijst';
169
+ }
170
+ }
171
+ exports.getPermissionResourceTypeName = getPermissionResourceTypeName;
172
+ /**
173
+ * More granular access rights to specific things in the system
174
+ */
175
+ class ResourcePermissions extends simple_encoding_1.AutoEncoder {
46
176
  constructor() {
47
177
  super(...arguments);
48
178
  /**
49
- * Generic access to all resources
179
+ * This is a cache so we can display the role description without fetching all resources
50
180
  */
51
- this.level = PermissionLevel.None;
52
- // Todo: all these flag based permissions should move to a flag list
53
- // so it is easier to add more permission levels in the future.
54
- // also, permission flags should be prefixed with either organization or platform (e.g. managing invoices of the platform vs managing finances of all organizations)
181
+ this.resourceName = "";
55
182
  /**
56
- * Access to open transfers
183
+ * Setting it to full gives all possible permissions for the resource
184
+ * Read/Write depends on resource
57
185
  */
58
- this.managePayments = false;
186
+ this.level = PermissionLevel.None;
59
187
  /**
60
- * Full payments access
188
+ * More granular permissions related to this resource
61
189
  */
62
- this.financeDirector = false;
190
+ this.accessRights = [];
191
+ }
192
+ hasAccess(level) {
193
+ return getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level);
194
+ }
195
+ hasAccessRight(right) {
196
+ const gl = AccessRightHelper.autoGrantRightForLevel(right);
197
+ return (gl && this.hasAccess(gl)) || this.accessRights.includes(right);
198
+ }
199
+ createInsertPatch(type, resourceId, roleOrPermissions) {
200
+ const patch = roleOrPermissions.static.patch({});
201
+ // First check if we need to insert the type
202
+ if (roleOrPermissions.resources.get(type)) {
203
+ // We need to patch
204
+ const p = new simple_encoding_1.PatchMap();
205
+ p.set(resourceId, this);
206
+ patch.resources.set(type, p);
207
+ }
208
+ else {
209
+ // No resources with this type yet
210
+ const p = new Map();
211
+ p.set(resourceId, this);
212
+ patch.resources.set(type, p);
213
+ }
214
+ return patch;
215
+ }
216
+ merge(other) {
217
+ const p = new ResourcePermissions();
218
+ p.level = this.level;
219
+ p.accessRights = this.accessRights.slice();
220
+ if (getPermissionLevelNumber(other.level) > getPermissionLevelNumber(p.level)) {
221
+ p.level = other.level;
222
+ }
223
+ for (const right of other.accessRights) {
224
+ if (!p.accessRights.includes(right)) {
225
+ p.accessRights.push(right);
226
+ }
227
+ }
228
+ return p;
229
+ }
230
+ }
231
+ exports.ResourcePermissions = ResourcePermissions;
232
+ tslib_1.__decorate([
233
+ (0, simple_encoding_1.field)({ decoder: simple_encoding_1.StringDecoder, field: 'n' })
234
+ ], ResourcePermissions.prototype, "resourceName", void 0);
235
+ tslib_1.__decorate([
236
+ (0, simple_encoding_1.field)({ decoder: new simple_encoding_1.EnumDecoder(PermissionLevel), field: "l" })
237
+ ], ResourcePermissions.prototype, "level", void 0);
238
+ tslib_1.__decorate([
239
+ (0, simple_encoding_1.field)({ decoder: new simple_encoding_1.ArrayDecoder(new simple_encoding_1.EnumDecoder(AccessRight)), field: "r" })
240
+ ], ResourcePermissions.prototype, "accessRights", void 0);
241
+ class PermissionRoleDetailed extends PermissionRole {
242
+ constructor() {
243
+ super(...arguments);
63
244
  /**
64
- * Can create new webshops = write
245
+ * Generic access to all resources
65
246
  */
66
- this.createWebshops = false;
247
+ this.level = PermissionLevel.None;
248
+ this.accessRights = [];
249
+ this.resources = new Map();
250
+ this.legacyManagePayments = false;
251
+ this.legacyFinanceDirector = false;
252
+ this.legacyCreateWebshops = false;
67
253
  }
68
- getDescription(webshops, groups) {
69
- var _a;
254
+ getDescription() {
70
255
  const stack = [];
71
256
  if (this.level === PermissionLevel.Read) {
72
257
  stack.push("alles lezen");
@@ -77,43 +262,87 @@ class PermissionRoleDetailed extends PermissionRole {
77
262
  if (this.level === PermissionLevel.Full) {
78
263
  stack.push("alles");
79
264
  }
80
- if (this.financeDirector) {
81
- stack.push("volledige boekhouding");
265
+ for (const right of this.accessRights) {
266
+ stack.push(AccessRightHelper.getDescription(right));
82
267
  }
83
- else if (this.managePayments) {
84
- stack.push("overschrijvingen");
268
+ for (const [type, resources] of this.resources) {
269
+ let count = 0;
270
+ if (resources.has('')) {
271
+ stack.push("alle " + getPermissionResourceTypeName(type, true));
272
+ continue;
273
+ }
274
+ for (const resource of resources.values()) {
275
+ if (resource.hasAccess(PermissionLevel.Read) || resource.accessRights.length > 0) {
276
+ count += 1;
277
+ }
278
+ }
279
+ if (count > 0) {
280
+ stack.push(count + " " + getPermissionResourceTypeName(type, count > 1));
281
+ }
85
282
  }
86
- if (this.createWebshops) {
87
- stack.push("webshops maken");
283
+ if (stack.length === 0) {
284
+ return "geen toegang";
88
285
  }
89
- let webshopCount = 0;
90
- for (const webshop of webshops) {
91
- if (webshop.privateMeta.permissions.roleHasAccess(this)) {
92
- webshopCount++;
93
- continue;
286
+ return utility_1.Formatter.capitalizeFirstLetter(utility_1.Formatter.joinLast(stack, ', ', ' en '));
287
+ }
288
+ hasAccess(level) {
289
+ return getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level);
290
+ }
291
+ hasAccessRight(right) {
292
+ const gl = AccessRightHelper.autoGrantRightForLevel(right);
293
+ if ((gl && this.hasAccess(gl)) || this.accessRights.includes(right)) {
294
+ return true;
295
+ }
296
+ const autoInherit = AccessRightHelper.autoInheritFrom(right);
297
+ for (const r of autoInherit) {
298
+ if (this.hasAccessRight(r)) {
299
+ return true;
94
300
  }
95
- if (webshop.privateMeta.scanPermissions.roleHasAccess(this)) {
96
- webshopCount++;
97
- continue;
301
+ }
302
+ return false;
303
+ }
304
+ getResourcePermissions(type, id) {
305
+ const resource = this.resources.get(type);
306
+ if (!resource) {
307
+ return null;
308
+ }
309
+ const rInstance = resource.get(id);
310
+ const allInstance = resource.get('');
311
+ if (!rInstance) {
312
+ if (allInstance) {
313
+ return allInstance;
98
314
  }
315
+ return null;
99
316
  }
100
- if (webshopCount > 0) {
101
- stack.push(webshopCount + " webshop" + (webshopCount > 1 ? "s" : ""));
317
+ if (allInstance) {
318
+ return rInstance.merge(allInstance);
102
319
  }
103
- let groupCount = 0;
104
- for (const group of groups) {
105
- if ((_a = group.privateSettings) === null || _a === void 0 ? void 0 : _a.permissions.roleHasAccess(this)) {
106
- groupCount++;
107
- continue;
320
+ return rInstance;
321
+ }
322
+ getMergedResourcePermissions(type, id) {
323
+ var _a;
324
+ let base = this.getResourcePermissions(type, id);
325
+ if (getPermissionLevelNumber(this.level) > getPermissionLevelNumber((_a = base === null || base === void 0 ? void 0 : base.level) !== null && _a !== void 0 ? _a : PermissionLevel.None)) {
326
+ if (!base) {
327
+ base = ResourcePermissions.create({ level: this.level });
108
328
  }
329
+ base.level = this.level;
109
330
  }
110
- if (groupCount > 0) {
111
- stack.push(groupCount + " groep" + (groupCount > 1 ? "en" : ""));
331
+ return base;
332
+ }
333
+ hasResourceAccess(type, id, level) {
334
+ var _a, _b;
335
+ if (this.hasAccess(level)) {
336
+ return true;
112
337
  }
113
- if (stack.length === 0) {
114
- return "geen toegang";
338
+ return (_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccess(level)) !== null && _b !== void 0 ? _b : false;
339
+ }
340
+ hasResourceAccessRight(type, id, right) {
341
+ var _a, _b;
342
+ if (this.hasAccessRight(right)) {
343
+ return true;
115
344
  }
116
- return utility_1.Formatter.capitalizeFirstLetter(utility_1.Formatter.joinLast(stack, ', ', ' en '));
345
+ return (_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccessRight(right)) !== null && _b !== void 0 ? _b : false;
117
346
  }
118
347
  }
119
348
  exports.PermissionRoleDetailed = PermissionRoleDetailed;
@@ -121,15 +350,44 @@ tslib_1.__decorate([
121
350
  (0, simple_encoding_1.field)({ decoder: new simple_encoding_1.EnumDecoder(PermissionLevel), version: 201 })
122
351
  ], PermissionRoleDetailed.prototype, "level", void 0);
123
352
  tslib_1.__decorate([
124
- (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder })
125
- ], PermissionRoleDetailed.prototype, "managePayments", void 0);
353
+ (0, simple_encoding_1.field)({
354
+ decoder: new simple_encoding_1.ArrayDecoder(new simple_encoding_1.EnumDecoder(AccessRight)),
355
+ version: 246,
356
+ upgrade: function () {
357
+ const base = [];
358
+ if (this.legacyManagePayments) {
359
+ base.push(AccessRight.OrganizationManagePayments);
360
+ }
361
+ if (this.legacyFinanceDirector) {
362
+ base.push(AccessRight.OrganizationFinanceDirector);
363
+ }
364
+ if (this.legacyCreateWebshops) {
365
+ base.push(AccessRight.OrganizationCreateWebshops);
366
+ }
367
+ return base;
368
+ }
369
+ })
370
+ ], PermissionRoleDetailed.prototype, "accessRights", void 0);
126
371
  tslib_1.__decorate([
127
- (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder, version: 199 })
128
- ], PermissionRoleDetailed.prototype, "financeDirector", void 0);
372
+ (0, simple_encoding_1.field)({
373
+ decoder: new simple_encoding_1.MapDecoder(new simple_encoding_1.EnumDecoder(PermissionsResourceType), new simple_encoding_1.MapDecoder(
374
+ // ID
375
+ simple_encoding_1.StringDecoder, ResourcePermissions)),
376
+ version: 248
377
+ })
378
+ ], PermissionRoleDetailed.prototype, "resources", void 0);
129
379
  tslib_1.__decorate([
130
- (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder })
131
- ], PermissionRoleDetailed.prototype, "createWebshops", void 0);
380
+ (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder, field: 'managePayments', optional: true })
381
+ ], PermissionRoleDetailed.prototype, "legacyManagePayments", void 0);
382
+ tslib_1.__decorate([
383
+ (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder, version: 199, field: 'financeDirector', optional: true })
384
+ ], PermissionRoleDetailed.prototype, "legacyFinanceDirector", void 0);
385
+ tslib_1.__decorate([
386
+ (0, simple_encoding_1.field)({ decoder: simple_encoding_1.BooleanDecoder, field: 'createWebshops', optional: true })
387
+ ], PermissionRoleDetailed.prototype, "legacyCreateWebshops", void 0);
132
388
  /**
389
+ * @deprecated
390
+ * Use resource types
133
391
  * Give access to a given resouce based by the roles of a user
134
392
  */
135
393
  class PermissionsByRole extends simple_encoding_1.AutoEncoder {
@@ -139,11 +397,8 @@ class PermissionsByRole extends simple_encoding_1.AutoEncoder {
139
397
  this.write = [];
140
398
  this.full = [];
141
399
  }
142
- /**
143
- * Whetever a given user has access to the members in this group.
144
- */
145
- getPermissionLevel(permissions, allRoles) {
146
- if (permissions.hasFullAccess(allRoles)) {
400
+ getPermissionLevel(permissions) {
401
+ if (permissions.hasFullAccess()) {
147
402
  return PermissionLevel.Full;
148
403
  }
149
404
  for (const role of this.full) {
@@ -151,7 +406,7 @@ class PermissionsByRole extends simple_encoding_1.AutoEncoder {
151
406
  return PermissionLevel.Full;
152
407
  }
153
408
  }
154
- if (permissions.hasWriteAccess(allRoles)) {
409
+ if (permissions.hasWriteAccess()) {
155
410
  return PermissionLevel.Write;
156
411
  }
157
412
  for (const role of this.write) {
@@ -159,7 +414,7 @@ class PermissionsByRole extends simple_encoding_1.AutoEncoder {
159
414
  return PermissionLevel.Write;
160
415
  }
161
416
  }
162
- if (permissions.hasReadAccess(allRoles)) {
417
+ if (permissions.hasReadAccess()) {
163
418
  return PermissionLevel.Read;
164
419
  }
165
420
  for (const role of this.read) {
@@ -190,23 +445,23 @@ class PermissionsByRole extends simple_encoding_1.AutoEncoder {
190
445
  }
191
446
  return PermissionLevel.None;
192
447
  }
193
- hasAccess(permissions, allRoles, level) {
448
+ hasAccess(permissions, level) {
194
449
  if (!permissions) {
195
450
  return false;
196
451
  }
197
- return getPermissionLevelNumber(this.getPermissionLevel(permissions, allRoles)) >= getPermissionLevelNumber(level);
452
+ return getPermissionLevelNumber(this.getPermissionLevel(permissions)) >= getPermissionLevelNumber(level);
198
453
  }
199
454
  roleHasAccess(role, level = PermissionLevel.Read) {
200
455
  return getPermissionLevelNumber(this.getRolePermissionLevel(role)) >= getPermissionLevelNumber(level);
201
456
  }
202
- hasFullAccess(permissions, allRoles) {
203
- return this.hasAccess(permissions, allRoles, PermissionLevel.Full);
457
+ hasFullAccess(permissions) {
458
+ return this.hasAccess(permissions, PermissionLevel.Full);
204
459
  }
205
- hasWriteAccess(permissions, allRoles) {
206
- return this.hasAccess(permissions, allRoles, PermissionLevel.Write);
460
+ hasWriteAccess(permissions) {
461
+ return this.hasAccess(permissions, PermissionLevel.Write);
207
462
  }
208
- hasReadAccess(permissions, allRoles) {
209
- return this.hasAccess(permissions, allRoles, PermissionLevel.Read);
463
+ hasReadAccess(permissions) {
464
+ return this.hasAccess(permissions, PermissionLevel.Read);
210
465
  }
211
466
  }
212
467
  exports.PermissionsByRole = PermissionsByRole;
@@ -232,7 +487,18 @@ class Permissions extends simple_encoding_1.AutoEncoder {
232
487
  */
233
488
  this.groups = [];
234
489
  this.roles = [];
490
+ /**
491
+ * Mostly for temporary access
492
+ */
493
+ this.resources = new Map();
235
494
  }
495
+ hasRole(role) {
496
+ return this.roles.find(r => r.id === role.id) !== undefined;
497
+ }
498
+ /**
499
+ * @deprecated
500
+ * Use LoadedPermissions
501
+ */
236
502
  hasAccess(allRoles, level) {
237
503
  if (getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level)) {
238
504
  // Someone with read / write access for the whole organization, also the same access for each group
@@ -250,19 +516,32 @@ class Permissions extends simple_encoding_1.AutoEncoder {
250
516
  }
251
517
  return false;
252
518
  }
519
+ /**
520
+ * @deprecated
521
+ * Use LoadedPermissions
522
+ */
253
523
  hasReadAccess(allRoles) {
254
524
  return this.hasAccess(allRoles, PermissionLevel.Read);
255
525
  }
526
+ /**
527
+ * @deprecated
528
+ * Use LoadedPermissions
529
+ */
256
530
  hasWriteAccess(allRoles) {
257
531
  return this.hasAccess(allRoles, PermissionLevel.Write);
258
532
  }
533
+ /**
534
+ * @deprecated
535
+ * Use LoadedPermissions
536
+ */
259
537
  hasFullAccess(allRoles) {
260
538
  return this.hasAccess(allRoles, PermissionLevel.Full);
261
539
  }
262
540
  /**
263
- * @param roles All available roles of the organizatino (to query)
541
+ * @deprecated
542
+ * Use LoadedPermissions
264
543
  */
265
- canCreateWebshops(allRoles) {
544
+ hasAccessRight(right, allRoles) {
266
545
  if (this.hasFullAccess(allRoles)) {
267
546
  return true;
268
547
  }
@@ -272,51 +551,31 @@ class Permissions extends simple_encoding_1.AutoEncoder {
272
551
  // Deleted role
273
552
  continue;
274
553
  }
275
- if (f.createWebshops) {
554
+ if (f.hasAccessRight(right)) {
276
555
  return true;
277
556
  }
278
557
  }
279
558
  return false;
280
559
  }
281
560
  /**
561
+ * @deprecated
562
+ * @param roles All available roles of the organizatino (to query)
563
+ */
564
+ canCreateWebshops(allRoles) {
565
+ return this.hasAccessRight(AccessRight.OrganizationCreateWebshops, allRoles);
566
+ }
567
+ /**
568
+ * @deprecated
282
569
  * @param roles All available roles of the organizatino (to query)
283
570
  */
284
571
  canManagePayments(allRoles) {
285
- if (this.hasFullAccess(allRoles)) {
286
- return true;
287
- }
288
- for (const r of this.roles) {
289
- const f = allRoles.find(rr => r.id === rr.id);
290
- if (!f) {
291
- // Deleted role
292
- continue;
293
- }
294
- if (f.financeDirector) {
295
- return true;
296
- }
297
- if (f.managePayments) {
298
- return true;
299
- }
300
- }
301
- return false;
572
+ return this.hasAccessRight(AccessRight.OrganizationManagePayments, allRoles) || this.hasAccessRight(AccessRight.OrganizationFinanceDirector, allRoles);
302
573
  }
303
574
  /**
575
+ * @deprecated
304
576
  */
305
577
  hasFinanceAccess(allRoles) {
306
- if (this.hasFullAccess(allRoles)) {
307
- return true;
308
- }
309
- for (const r of this.roles) {
310
- const f = allRoles.find(rr => r.id === rr.id);
311
- if (!f) {
312
- // Deleted role
313
- continue;
314
- }
315
- if (f.financeDirector) {
316
- return true;
317
- }
318
- }
319
- return false;
578
+ return this.hasAccessRight(AccessRight.OrganizationFinanceDirector, allRoles);
320
579
  }
321
580
  add(other) {
322
581
  if (getPermissionLevelNumber(this.level) < getPermissionLevelNumber(other.level)) {
@@ -339,28 +598,188 @@ tslib_1.__decorate([
339
598
  tslib_1.__decorate([
340
599
  (0, simple_encoding_1.field)({ decoder: new simple_encoding_1.ArrayDecoder(PermissionRole), version: 60 })
341
600
  ], Permissions.prototype, "roles", void 0);
342
- class UserPermissions extends simple_encoding_1.AutoEncoder {
343
- constructor() {
344
- super(...arguments);
345
- this.globalPermissions = Permissions.create({});
346
- this.organizationPermissions = new Map();
347
- }
348
- }
349
- exports.UserPermissions = UserPermissions;
350
601
  tslib_1.__decorate([
351
- (0, simple_encoding_1.field)({ decoder: Permissions })
352
- ], UserPermissions.prototype, "globalPermissions", void 0);
353
- tslib_1.__decorate([
354
- (0, simple_encoding_1.field)({ decoder: new simple_encoding_1.MapDecoder(simple_encoding_1.StringDecoder, Permissions) })
355
- ], UserPermissions.prototype, "organizationPermissions", void 0);
602
+ (0, simple_encoding_1.field)({
603
+ decoder: new simple_encoding_1.MapDecoder(new simple_encoding_1.EnumDecoder(PermissionsResourceType), new simple_encoding_1.MapDecoder(
604
+ // ID
605
+ simple_encoding_1.StringDecoder, ResourcePermissions)),
606
+ version: 249
607
+ })
608
+ ], Permissions.prototype, "resources", void 0);
356
609
  /**
357
- * Convenience class to combine both roles of an organization, platform and the permissions of a user.
358
- * This helps with checking permissions.
610
+ * Identical to Permissions but with detailed roles, loaded from the organization or platform
359
611
  */
360
- class FilledUserPermissions {
361
- constructor(userPermissions, allRoles) {
362
- // todo
612
+ class LoadedPermissions {
613
+ constructor(data) {
614
+ this.level = PermissionLevel.None;
615
+ this.roles = [];
616
+ this.resources = new Map();
617
+ Object.assign(this, data);
618
+ }
619
+ static create(data) {
620
+ return new LoadedPermissions(data);
621
+ }
622
+ static from(permissions, allRoles) {
623
+ return this.create({
624
+ level: permissions.level,
625
+ roles: permissions.roles.flatMap(role => {
626
+ const d = allRoles.find(a => a.id === role.id);
627
+ if (d) {
628
+ return [d];
629
+ }
630
+ return [];
631
+ }),
632
+ resources: permissions.resources
633
+ });
634
+ }
635
+ getResourcePermissions(type, id) {
636
+ const resource = this.resources.get(type);
637
+ if (!resource) {
638
+ return null;
639
+ }
640
+ const rInstance = resource.get(id);
641
+ const allInstance = resource.get('');
642
+ if (!rInstance) {
643
+ if (allInstance) {
644
+ return allInstance;
645
+ }
646
+ return null;
647
+ }
648
+ if (allInstance) {
649
+ return rInstance.merge(allInstance);
650
+ }
651
+ return rInstance;
652
+ }
653
+ getMergedResourcePermissions(type, id) {
654
+ var _a;
655
+ let base = this.getResourcePermissions(type, id);
656
+ for (const role of this.roles) {
657
+ const r = role.getMergedResourcePermissions(type, id);
658
+ if (r) {
659
+ if (base) {
660
+ base.merge(r);
661
+ }
662
+ else {
663
+ base = r;
664
+ }
665
+ }
666
+ }
667
+ if (getPermissionLevelNumber(this.level) > getPermissionLevelNumber((_a = base === null || base === void 0 ? void 0 : base.level) !== null && _a !== void 0 ? _a : PermissionLevel.None)) {
668
+ if (!base) {
669
+ base = ResourcePermissions.create({ level: this.level });
670
+ }
671
+ base.level = this.level;
672
+ }
673
+ return base;
674
+ }
675
+ hasRole(role) {
676
+ return this.roles.find(r => r.id === role.id) !== undefined;
677
+ }
678
+ hasAccess(level) {
679
+ if (getPermissionLevelNumber(this.level) >= getPermissionLevelNumber(level)) {
680
+ // Someone with read / write access for the whole organization, also the same access for each group
681
+ return true;
682
+ }
683
+ for (const f of this.roles) {
684
+ if (f.hasAccess(level)) {
685
+ return true;
686
+ }
687
+ }
688
+ return false;
689
+ }
690
+ hasResourceAccess(type, id, level) {
691
+ var _a, _b;
692
+ if (this.hasAccess(level)) {
693
+ return true;
694
+ }
695
+ if ((_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccess(level)) !== null && _b !== void 0 ? _b : false) {
696
+ return true;
697
+ }
698
+ for (const r of this.roles) {
699
+ if (r.hasResourceAccess(type, id, level)) {
700
+ return true;
701
+ }
702
+ }
703
+ return false;
704
+ }
705
+ hasResourceAccessRight(type, id, right) {
706
+ var _a, _b;
707
+ if (this.hasAccessRight(right)) {
708
+ return true;
709
+ }
710
+ if ((_b = (_a = this.getResourcePermissions(type, id)) === null || _a === void 0 ? void 0 : _a.hasAccessRight(right)) !== null && _b !== void 0 ? _b : false) {
711
+ return true;
712
+ }
713
+ for (const r of this.roles) {
714
+ if (r.hasResourceAccessRight(type, id, right)) {
715
+ return true;
716
+ }
717
+ }
718
+ const autoInherit = AccessRightHelper.autoInheritFrom(right);
719
+ for (const r of autoInherit) {
720
+ if (this.hasResourceAccessRight(type, id, r)) {
721
+ return true;
722
+ }
723
+ }
724
+ return false;
725
+ }
726
+ hasReadAccess() {
727
+ return this.hasAccess(PermissionLevel.Read);
728
+ }
729
+ hasWriteAccess() {
730
+ return this.hasAccess(PermissionLevel.Write);
731
+ }
732
+ hasFullAccess() {
733
+ return this.hasAccess(PermissionLevel.Full);
734
+ }
735
+ hasAccessRight(right) {
736
+ const gl = AccessRightHelper.autoGrantRightForLevel(right);
737
+ if (gl && this.hasAccess(gl)) {
738
+ return true;
739
+ }
740
+ for (const f of this.roles) {
741
+ if (f.hasAccessRight(right)) {
742
+ return true;
743
+ }
744
+ }
745
+ const autoInherit = AccessRightHelper.autoInheritFrom(right);
746
+ for (const r of autoInherit) {
747
+ if (this.hasAccessRight(r)) {
748
+ return true;
749
+ }
750
+ }
751
+ return false;
752
+ }
753
+ merge(other) {
754
+ const p = LoadedPermissions.create({});
755
+ p.level = this.level;
756
+ p.roles = this.roles.slice();
757
+ p.resources = new Map(this.resources);
758
+ if (getPermissionLevelNumber(other.level) > getPermissionLevelNumber(p.level)) {
759
+ p.level = other.level;
760
+ }
761
+ for (const [type, r] of other.resources) {
762
+ for (const [id, resource] of r) {
763
+ if (!p.resources.has(type)) {
764
+ p.resources.set(type, new Map());
765
+ }
766
+ const current = p.resources.get(type).get(id);
767
+ if (!current) {
768
+ p.resources.get(type).set(id, resource);
769
+ }
770
+ else {
771
+ p.resources.get(type).set(id, current.merge(resource));
772
+ }
773
+ }
774
+ }
775
+ for (const role of other.roles) {
776
+ const current = p.roles.find(r => r.id === role.id);
777
+ if (!current) {
778
+ p.roles.push(role);
779
+ }
780
+ }
781
+ return p;
363
782
  }
364
783
  }
365
- exports.FilledUserPermissions = FilledUserPermissions;
784
+ exports.LoadedPermissions = LoadedPermissions;
366
785
  //# sourceMappingURL=Permissions.js.map