@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
package/dist/src/Permissions.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
-
|
|
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
|
-
*
|
|
179
|
+
* This is a cache so we can display the role description without fetching all resources
|
|
50
180
|
*/
|
|
51
|
-
this.
|
|
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
|
-
*
|
|
183
|
+
* Setting it to full gives all possible permissions for the resource
|
|
184
|
+
* Read/Write depends on resource
|
|
57
185
|
*/
|
|
58
|
-
this.
|
|
186
|
+
this.level = PermissionLevel.None;
|
|
59
187
|
/**
|
|
60
|
-
*
|
|
188
|
+
* More granular permissions related to this resource
|
|
61
189
|
*/
|
|
62
|
-
this.
|
|
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
|
-
*
|
|
245
|
+
* Generic access to all resources
|
|
65
246
|
*/
|
|
66
|
-
this.
|
|
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(
|
|
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
|
-
|
|
81
|
-
stack.push(
|
|
265
|
+
for (const right of this.accessRights) {
|
|
266
|
+
stack.push(AccessRightHelper.getDescription(right));
|
|
82
267
|
}
|
|
83
|
-
|
|
84
|
-
|
|
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 (
|
|
87
|
-
|
|
283
|
+
if (stack.length === 0) {
|
|
284
|
+
return "geen toegang";
|
|
88
285
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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 (
|
|
101
|
-
|
|
317
|
+
if (allInstance) {
|
|
318
|
+
return rInstance.merge(allInstance);
|
|
102
319
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
111
|
-
|
|
331
|
+
return base;
|
|
332
|
+
}
|
|
333
|
+
hasResourceAccess(type, id, level) {
|
|
334
|
+
var _a, _b;
|
|
335
|
+
if (this.hasAccess(level)) {
|
|
336
|
+
return true;
|
|
112
337
|
}
|
|
113
|
-
|
|
114
|
-
|
|
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
|
|
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)({
|
|
125
|
-
|
|
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)({
|
|
128
|
-
|
|
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, "
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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,
|
|
448
|
+
hasAccess(permissions, level) {
|
|
194
449
|
if (!permissions) {
|
|
195
450
|
return false;
|
|
196
451
|
}
|
|
197
|
-
return getPermissionLevelNumber(this.getPermissionLevel(permissions
|
|
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
|
|
203
|
-
return this.hasAccess(permissions,
|
|
457
|
+
hasFullAccess(permissions) {
|
|
458
|
+
return this.hasAccess(permissions, PermissionLevel.Full);
|
|
204
459
|
}
|
|
205
|
-
hasWriteAccess(permissions
|
|
206
|
-
return this.hasAccess(permissions,
|
|
460
|
+
hasWriteAccess(permissions) {
|
|
461
|
+
return this.hasAccess(permissions, PermissionLevel.Write);
|
|
207
462
|
}
|
|
208
|
-
hasReadAccess(permissions
|
|
209
|
-
return this.hasAccess(permissions,
|
|
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
|
-
* @
|
|
541
|
+
* @deprecated
|
|
542
|
+
* Use LoadedPermissions
|
|
264
543
|
*/
|
|
265
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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)({
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
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
|
-
*
|
|
358
|
-
* This helps with checking permissions.
|
|
610
|
+
* Identical to Permissions but with detailed roles, loaded from the organization or platform
|
|
359
611
|
*/
|
|
360
|
-
class
|
|
361
|
-
constructor(
|
|
362
|
-
|
|
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.
|
|
784
|
+
exports.LoadedPermissions = LoadedPermissions;
|
|
366
785
|
//# sourceMappingURL=Permissions.js.map
|