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