@stamhoofd/backend 2.69.0 → 2.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/backend",
3
- "version": "2.69.0",
3
+ "version": "2.70.0",
4
4
  "main": "./dist/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -37,14 +37,14 @@
37
37
  "@simonbackx/simple-encoding": "2.19.0",
38
38
  "@simonbackx/simple-endpoints": "1.15.0",
39
39
  "@simonbackx/simple-logging": "^1.0.1",
40
- "@stamhoofd/backend-i18n": "2.69.0",
41
- "@stamhoofd/backend-middleware": "2.69.0",
42
- "@stamhoofd/email": "2.69.0",
43
- "@stamhoofd/models": "2.69.0",
44
- "@stamhoofd/queues": "2.69.0",
45
- "@stamhoofd/sql": "2.69.0",
46
- "@stamhoofd/structures": "2.69.0",
47
- "@stamhoofd/utility": "2.69.0",
40
+ "@stamhoofd/backend-i18n": "2.70.0",
41
+ "@stamhoofd/backend-middleware": "2.70.0",
42
+ "@stamhoofd/email": "2.70.0",
43
+ "@stamhoofd/models": "2.70.0",
44
+ "@stamhoofd/queues": "2.70.0",
45
+ "@stamhoofd/sql": "2.70.0",
46
+ "@stamhoofd/structures": "2.70.0",
47
+ "@stamhoofd/utility": "2.70.0",
48
48
  "archiver": "^7.0.1",
49
49
  "aws-sdk": "^2.885.0",
50
50
  "axios": "1.6.8",
@@ -64,5 +64,5 @@
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  },
67
- "gitHead": "1cc1c8c1109298b0c712b1e7ddf7ef37054be5a9"
67
+ "gitHead": "5c6f4bbab24bf118b45da350bdaf3c62756909ad"
68
68
  }
@@ -13,9 +13,9 @@ import { AuthenticatedStructures } from '../../../helpers/AuthenticatedStructure
13
13
  import { Context } from '../../../helpers/Context';
14
14
  import { MembershipCharger } from '../../../helpers/MembershipCharger';
15
15
  import { MemberUserSyncer } from '../../../helpers/MemberUserSyncer';
16
+ import { SetupStepUpdater } from '../../../helpers/SetupStepUpdater';
16
17
  import { PlatformMembershipService } from '../../../services/PlatformMembershipService';
17
18
  import { RegistrationService } from '../../../services/RegistrationService';
18
- import { SetupStepUpdater } from '../../../helpers/SetupStepUpdater';
19
19
 
20
20
  type Params = Record<string, never>;
21
21
  type Query = undefined;
@@ -446,7 +446,11 @@ export class PatchOrganizationMembersEndpoint extends Endpoint<Params, Query, Bo
446
446
  throw Context.auth.error('Je hebt niet voldoende rechten om deze aansluiting toe te voegen');
447
447
  }
448
448
 
449
- if (!platform.config.membershipTypes.find(t => t.id === put.membershipTypeId)) {
449
+ const putForOrganization = await Context.auth.getOrganization(put.organizationId);
450
+
451
+ const membershipType = platform.config.membershipTypes.find(t => t.id === put.membershipTypeId);
452
+
453
+ if (!membershipType) {
450
454
  throw new SimpleError({
451
455
  code: 'invalid_field',
452
456
  field: 'membershipTypeId',
@@ -455,6 +459,28 @@ export class PatchOrganizationMembersEndpoint extends Endpoint<Params, Query, Bo
455
459
  });
456
460
  }
457
461
 
462
+ const organizationTags = putForOrganization.meta.tags ?? [];
463
+ const memberDefaultAgeGroupIds: string[] = [];
464
+
465
+ for (const r of member.registrations) {
466
+ if (r.periodId !== put.periodId || r.deactivatedAt !== null || r.registeredAt === null || r.group.defaultAgeGroupId === null) {
467
+ continue;
468
+ }
469
+
470
+ memberDefaultAgeGroupIds.push(r.group.defaultAgeGroupId);
471
+ }
472
+
473
+ const isEnabled = membershipType.isEnabled(organizationTags, memberDefaultAgeGroupIds);
474
+
475
+ if (!isEnabled) {
476
+ throw new SimpleError({
477
+ code: 'invalid_field',
478
+ field: 'membershipTypeId',
479
+ message: 'Invalid membership type',
480
+ human: 'Dit aansluitingstype is niet toegestaan voor dit lid',
481
+ });
482
+ }
483
+
458
484
  // Check duplicate memberships
459
485
  const existing = await MemberPlatformMembership.select()
460
486
  .where('memberId', member.id)