@joeygrable94/utm-src-pub-validators 0.0.101 → 0.0.102

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.cjs CHANGED
@@ -227,6 +227,442 @@ var IsValidName = v12__namespace.pipe(
227
227
  );
228
228
  var IsValidOrUndefinedName = v12__namespace.optional(IsValidName);
229
229
 
230
+ // src/permissions/permission.abac.ts
231
+ var ROLE_PERMISSIONS = {
232
+ authenticated: {
233
+ "user-account": {
234
+ list: false,
235
+ create: false,
236
+ read: false,
237
+ update: false,
238
+ delete: false
239
+ },
240
+ group: {
241
+ access: false,
242
+ billing: false,
243
+ manager: false,
244
+ admin: false,
245
+ list: false,
246
+ create: false,
247
+ read: false,
248
+ update: false,
249
+ delete: false
250
+ },
251
+ "group-user": {
252
+ list: false,
253
+ create: false,
254
+ read: false,
255
+ update: false,
256
+ delete: false
257
+ },
258
+ website: {
259
+ list: false,
260
+ create: false,
261
+ read: false,
262
+ update: false,
263
+ delete: false,
264
+ import: false,
265
+ export: false
266
+ },
267
+ "tracking-link": {
268
+ list: false,
269
+ create: false,
270
+ read: false,
271
+ update: false,
272
+ delete: false,
273
+ import: false,
274
+ export: false
275
+ },
276
+ source: {
277
+ list: false,
278
+ create: false,
279
+ read: false,
280
+ update: false,
281
+ delete: false,
282
+ import: false,
283
+ export: false
284
+ },
285
+ medium: {
286
+ list: false,
287
+ create: false,
288
+ read: false,
289
+ update: false,
290
+ delete: false,
291
+ import: false,
292
+ export: false
293
+ },
294
+ "campaign-id": {
295
+ list: false,
296
+ create: false,
297
+ read: false,
298
+ update: false,
299
+ delete: false,
300
+ import: false,
301
+ export: false
302
+ },
303
+ "campaign-phase": {
304
+ list: false,
305
+ create: false,
306
+ read: false,
307
+ update: false,
308
+ delete: false,
309
+ import: false,
310
+ export: false
311
+ },
312
+ "campaign-product": {
313
+ list: false,
314
+ create: false,
315
+ read: false,
316
+ update: false,
317
+ delete: false,
318
+ import: false,
319
+ export: false
320
+ },
321
+ "campaign-target": {
322
+ list: false,
323
+ create: false,
324
+ read: false,
325
+ update: false,
326
+ delete: false,
327
+ import: false,
328
+ export: false
329
+ },
330
+ "campaign-key": {
331
+ list: false,
332
+ create: false,
333
+ read: false,
334
+ update: false,
335
+ delete: false,
336
+ import: false,
337
+ export: false
338
+ },
339
+ content: {
340
+ list: false,
341
+ create: false,
342
+ read: false,
343
+ update: false,
344
+ delete: false,
345
+ import: false,
346
+ export: false
347
+ },
348
+ "creative-format": {
349
+ list: false,
350
+ create: false,
351
+ read: false,
352
+ update: false,
353
+ delete: false,
354
+ import: false,
355
+ export: false
356
+ },
357
+ "creative-format-variant": {
358
+ list: false,
359
+ create: false,
360
+ read: false,
361
+ update: false,
362
+ delete: false,
363
+ import: false,
364
+ export: false
365
+ },
366
+ term: {
367
+ list: false,
368
+ create: false,
369
+ read: false,
370
+ update: false,
371
+ delete: false,
372
+ import: false,
373
+ export: false
374
+ }
375
+ },
376
+ public: {
377
+ "user-account": {
378
+ list: false,
379
+ create: false,
380
+ read: false,
381
+ update: false,
382
+ delete: false
383
+ },
384
+ group: {
385
+ access: false,
386
+ billing: false,
387
+ manager: false,
388
+ admin: false,
389
+ list: false,
390
+ create: false,
391
+ read: false,
392
+ update: false,
393
+ delete: false
394
+ },
395
+ "group-user": {
396
+ list: false,
397
+ create: false,
398
+ read: false,
399
+ update: false,
400
+ delete: false
401
+ },
402
+ website: {
403
+ list: false,
404
+ create: false,
405
+ read: false,
406
+ update: false,
407
+ delete: false,
408
+ import: false,
409
+ export: false
410
+ },
411
+ "tracking-link": {
412
+ list: false,
413
+ create: false,
414
+ read: false,
415
+ update: false,
416
+ delete: false,
417
+ import: false,
418
+ export: false
419
+ },
420
+ source: {
421
+ list: false,
422
+ create: false,
423
+ read: false,
424
+ update: false,
425
+ delete: false,
426
+ import: false,
427
+ export: false
428
+ },
429
+ medium: {
430
+ list: false,
431
+ create: false,
432
+ read: false,
433
+ update: false,
434
+ delete: false,
435
+ import: false,
436
+ export: false
437
+ },
438
+ "campaign-id": {
439
+ list: false,
440
+ create: false,
441
+ read: false,
442
+ update: false,
443
+ delete: false,
444
+ import: false,
445
+ export: false
446
+ },
447
+ "campaign-phase": {
448
+ list: false,
449
+ create: false,
450
+ read: false,
451
+ update: false,
452
+ delete: false,
453
+ import: false,
454
+ export: false
455
+ },
456
+ "campaign-product": {
457
+ list: false,
458
+ create: false,
459
+ read: false,
460
+ update: false,
461
+ delete: false,
462
+ import: false,
463
+ export: false
464
+ },
465
+ "campaign-target": {
466
+ list: false,
467
+ create: false,
468
+ read: false,
469
+ update: false,
470
+ delete: false,
471
+ import: false,
472
+ export: false
473
+ },
474
+ "campaign-key": {
475
+ list: false,
476
+ create: false,
477
+ read: false,
478
+ update: false,
479
+ delete: false,
480
+ import: false,
481
+ export: false
482
+ },
483
+ content: {
484
+ list: false,
485
+ create: false,
486
+ read: false,
487
+ update: false,
488
+ delete: false,
489
+ import: false,
490
+ export: false
491
+ },
492
+ "creative-format": {
493
+ list: false,
494
+ create: false,
495
+ read: false,
496
+ update: false,
497
+ delete: false,
498
+ import: false,
499
+ export: false
500
+ },
501
+ "creative-format-variant": {
502
+ list: false,
503
+ create: false,
504
+ read: false,
505
+ update: false,
506
+ delete: false,
507
+ import: false,
508
+ export: false
509
+ },
510
+ term: {
511
+ list: false,
512
+ create: false,
513
+ read: false,
514
+ update: false,
515
+ delete: false,
516
+ import: false,
517
+ export: false
518
+ }
519
+ },
520
+ member: {
521
+ "user-account": {
522
+ list: true,
523
+ create: false,
524
+ read: true,
525
+ update: (u, p, d) => u.account.documentId === d.documentId,
526
+ delete: (u, p, d) => u.account.documentId === d.documentId
527
+ },
528
+ group: {
529
+ access: (u, p, d) => p.scopes.includes("group:access"),
530
+ billing: (u, p, d) => p.scopes.includes("group:billing"),
531
+ manager: (u, p, d) => p.scopes.includes("group:manager"),
532
+ admin: (u, p, d) => p.scopes.includes("group:admin"),
533
+ list: true,
534
+ create: true,
535
+ read: true,
536
+ update: true,
537
+ delete: true
538
+ },
539
+ "group-user": {
540
+ list: false,
541
+ create: false,
542
+ read: false,
543
+ update: false,
544
+ delete: false
545
+ },
546
+ website: {
547
+ list: (u, p, d) => p.scopes.includes("website:list"),
548
+ create: (u, p, d) => p.scopes.includes("website:create"),
549
+ read: (u, p, d) => p.scopes.includes("website:read"),
550
+ update: (u, p, d) => p.scopes.includes("website:update"),
551
+ delete: (u, p, d) => p.scopes.includes("website:delete"),
552
+ import: (u, p, d) => p.scopes.includes("website:import"),
553
+ export: (u, p, d) => p.scopes.includes("website:export")
554
+ },
555
+ "tracking-link": {
556
+ list: (u, p, d) => p.scopes.includes("tracking-link:list"),
557
+ create: (u, p, d) => p.scopes.includes("tracking-link:create"),
558
+ read: (u, p, d) => p.scopes.includes("tracking-link:read"),
559
+ update: (u, p, d) => p.scopes.includes("tracking-link:update"),
560
+ delete: (u, p, d) => p.scopes.includes("tracking-link:delete"),
561
+ import: (u, p, d) => p.scopes.includes("tracking-link:import"),
562
+ export: (u, p, d) => p.scopes.includes("tracking-link:export")
563
+ },
564
+ source: {
565
+ list: (u, p, d) => p.scopes.includes("source:list"),
566
+ create: (u, p, d) => p.scopes.includes("source:create"),
567
+ read: (u, p, d) => p.scopes.includes("source:read"),
568
+ update: (u, p, d) => p.scopes.includes("source:update"),
569
+ delete: (u, p, d) => p.scopes.includes("source:delete"),
570
+ import: (u, p, d) => p.scopes.includes("source:import"),
571
+ export: (u, p, d) => p.scopes.includes("source:export")
572
+ },
573
+ medium: {
574
+ list: (u, p, d) => p.scopes.includes("medium:list"),
575
+ create: (u, p, d) => p.scopes.includes("medium:create"),
576
+ read: (u, p, d) => p.scopes.includes("medium:read"),
577
+ update: (u, p, d) => p.scopes.includes("medium:update"),
578
+ delete: (u, p, d) => p.scopes.includes("medium:delete"),
579
+ import: (u, p, d) => p.scopes.includes("medium:import"),
580
+ export: (u, p, d) => p.scopes.includes("medium:export")
581
+ },
582
+ "campaign-id": {
583
+ list: (u, p, d) => p.scopes.includes("campaign-id:list"),
584
+ create: (u, p, d) => p.scopes.includes("campaign-id:create"),
585
+ read: (u, p, d) => p.scopes.includes("campaign-id:read"),
586
+ update: (u, p, d) => p.scopes.includes("campaign-id:update"),
587
+ delete: (u, p, d) => p.scopes.includes("campaign-id:delete"),
588
+ import: (u, p, d) => p.scopes.includes("campaign-id:import"),
589
+ export: (u, p, d) => p.scopes.includes("campaign-id:export")
590
+ },
591
+ "campaign-phase": {
592
+ list: (u, p, d) => p.scopes.includes("campaign-phase:list"),
593
+ create: (u, p, d) => p.scopes.includes("campaign-phase:create"),
594
+ read: (u, p, d) => p.scopes.includes("campaign-phase:read"),
595
+ update: (u, p, d) => p.scopes.includes("campaign-phase:update"),
596
+ delete: (u, p, d) => p.scopes.includes("campaign-phase:delete"),
597
+ import: (u, p, d) => p.scopes.includes("campaign-phase:import"),
598
+ export: (u, p, d) => p.scopes.includes("campaign-phase:export")
599
+ },
600
+ "campaign-product": {
601
+ list: (u, p, d) => p.scopes.includes("campaign-product:list"),
602
+ create: (u, p, d) => p.scopes.includes("campaign-product:create"),
603
+ read: (u, p, d) => p.scopes.includes("campaign-product:read"),
604
+ update: (u, p, d) => p.scopes.includes("campaign-product:update"),
605
+ delete: (u, p, d) => p.scopes.includes("campaign-product:delete"),
606
+ import: (u, p, d) => p.scopes.includes("campaign-product:import"),
607
+ export: (u, p, d) => p.scopes.includes("campaign-product:export")
608
+ },
609
+ "campaign-target": {
610
+ list: (u, p, d) => p.scopes.includes("campaign-target:list"),
611
+ create: (u, p, d) => p.scopes.includes("campaign-target:create"),
612
+ read: (u, p, d) => p.scopes.includes("campaign-target:read"),
613
+ update: (u, p, d) => p.scopes.includes("campaign-target:update"),
614
+ delete: (u, p, d) => p.scopes.includes("campaign-target:delete"),
615
+ import: (u, p, d) => p.scopes.includes("campaign-target:import"),
616
+ export: (u, p, d) => p.scopes.includes("campaign-target:export")
617
+ },
618
+ "campaign-key": {
619
+ list: (u, p, d) => p.scopes.includes("campaign-key:list"),
620
+ create: (u, p, d) => p.scopes.includes("campaign-key:create"),
621
+ read: (u, p, d) => p.scopes.includes("campaign-key:read"),
622
+ update: (u, p, d) => p.scopes.includes("campaign-key:update"),
623
+ delete: (u, p, d) => p.scopes.includes("campaign-key:delete"),
624
+ import: (u, p, d) => p.scopes.includes("campaign-key:import"),
625
+ export: (u, p, d) => p.scopes.includes("campaign-key:export")
626
+ },
627
+ content: {
628
+ list: (u, p, d) => p.scopes.includes("content:list"),
629
+ create: (u, p, d) => p.scopes.includes("content:create"),
630
+ read: (u, p, d) => p.scopes.includes("content:read"),
631
+ update: (u, p, d) => p.scopes.includes("content:update"),
632
+ delete: (u, p, d) => p.scopes.includes("content:delete"),
633
+ import: (u, p, d) => p.scopes.includes("content:import"),
634
+ export: (u, p, d) => p.scopes.includes("content:export")
635
+ },
636
+ "creative-format": {
637
+ list: (u, p, d) => p.scopes.includes("creative-format:list"),
638
+ create: (u, p, d) => p.scopes.includes("creative-format:create"),
639
+ read: (u, p, d) => p.scopes.includes("creative-format:read"),
640
+ update: (u, p, d) => p.scopes.includes("creative-format:update"),
641
+ delete: (u, p, d) => p.scopes.includes("creative-format:delete"),
642
+ import: (u, p, d) => p.scopes.includes("creative-format:import"),
643
+ export: (u, p, d) => p.scopes.includes("creative-format:export")
644
+ },
645
+ "creative-format-variant": {
646
+ list: (u, p, d) => p.scopes.includes("creative-format-variant:list"),
647
+ create: (u, p, d) => p.scopes.includes("creative-format-variant:create"),
648
+ read: (u, p, d) => p.scopes.includes("creative-format-variant:read"),
649
+ update: (u, p, d) => p.scopes.includes("creative-format-variant:update"),
650
+ delete: (u, p, d) => p.scopes.includes("creative-format-variant:delete"),
651
+ import: (u, p, d) => p.scopes.includes("creative-format-variant:import"),
652
+ export: (u, p, d) => p.scopes.includes("creative-format-variant:export")
653
+ },
654
+ term: {
655
+ list: (u, p, d) => p.scopes.includes("term:list"),
656
+ create: (u, p, d) => p.scopes.includes("term:create"),
657
+ read: (u, p, d) => p.scopes.includes("term:read"),
658
+ update: (u, p, d) => p.scopes.includes("term:update"),
659
+ delete: (u, p, d) => p.scopes.includes("term:delete"),
660
+ import: (u, p, d) => p.scopes.includes("term:import"),
661
+ export: (u, p, d) => p.scopes.includes("term:export")
662
+ }
663
+ }
664
+ };
665
+
230
666
  // src/permissions/permission.constants.ts
231
667
  var GROUP_ENTITY_PERMISSIONS = {
232
668
  group: ["admin", "manager", "billing", "access"],
@@ -260,12 +696,24 @@ var GROUP_ENTITY_PERMISSIONS = {
260
696
  ],
261
697
  term: ["list", "create", "read", "update", "delete", "export", "import"]
262
698
  };
699
+ var GROUP_ENTITY_KEYS = Object.keys(
700
+ GROUP_ENTITY_PERMISSIONS
701
+ );
263
702
  var GROUP_ENTITY_SCOPES = Object.entries(
264
703
  GROUP_ENTITY_PERMISSIONS
265
704
  ).flatMap(
266
705
  ([entity, actions]) => actions.map((action) => `${entity}:${action}`)
267
706
  );
268
707
 
708
+ // src/permissions/permission.utilities.ts
709
+ function hasPermission(user, permissions, resource, action, data) {
710
+ var _a;
711
+ const permission = (_a = ROLE_PERMISSIONS[user.role.type][resource]) == null ? void 0 : _a[action];
712
+ if (permission == null) return false;
713
+ if (typeof permission === "boolean") return permission;
714
+ return data != null && permission(user, permissions, data);
715
+ }
716
+
269
717
  // src/validators/validators-group-users.ts
270
718
  var IsValidGroupUserScopes = v12__namespace.pipe(
271
719
  v12__namespace.array(
@@ -3437,6 +3885,9 @@ exports.DEFAULT_MEDIUMS = DEFAULT_MEDIUMS;
3437
3885
  exports.DEFAULT_SOURCES = DEFAULT_SOURCES;
3438
3886
  exports.ERROR_MESSAGE_REGEX_DOMAIN = ERROR_MESSAGE_REGEX_DOMAIN;
3439
3887
  exports.ERROR_MESSAGE_REGEX_VALUE = ERROR_MESSAGE_REGEX_VALUE;
3888
+ exports.GROUP_ENTITY_KEYS = GROUP_ENTITY_KEYS;
3889
+ exports.GROUP_ENTITY_PERMISSIONS = GROUP_ENTITY_PERMISSIONS;
3890
+ exports.GROUP_ENTITY_SCOPES = GROUP_ENTITY_SCOPES;
3440
3891
  exports.GROUP_PAGINATION_DEFAULT_SIZE_LIMIT = GROUP_PAGINATION_DEFAULT_SIZE_LIMIT;
3441
3892
  exports.GROUP_PAGINATION_MAX_SIZE_LIMIT = GROUP_PAGINATION_MAX_SIZE_LIMIT;
3442
3893
  exports.GROUP_USER_PAGINATION_DEFAULT_SIZE_LIMIT = GROUP_USER_PAGINATION_DEFAULT_SIZE_LIMIT;
@@ -3586,6 +4037,7 @@ exports.MEDIUM_PAGINATION_DEFAULT_SIZE_LIMIT = MEDIUM_PAGINATION_DEFAULT_SIZE_LI
3586
4037
  exports.MEDIUM_PAGINATION_MAX_SIZE_LIMIT = MEDIUM_PAGINATION_MAX_SIZE_LIMIT;
3587
4038
  exports.REGEX_DOMAIN = REGEX_DOMAIN;
3588
4039
  exports.REGEX_VALUE = REGEX_VALUE;
4040
+ exports.ROLE_PERMISSIONS = ROLE_PERMISSIONS;
3589
4041
  exports.SBaseCampaignIdDocument = SBaseCampaignIdDocument;
3590
4042
  exports.SBaseCampaignKeyDocument = SBaseCampaignKeyDocument;
3591
4043
  exports.SBaseCampaignPhaseDocument = SBaseCampaignPhaseDocument;
@@ -3955,6 +4407,7 @@ exports.WEBSITE_PAGINATION_DEFAULT_SIZE_LIMIT = WEBSITE_PAGINATION_DEFAULT_SIZE_
3955
4407
  exports.WEBSITE_PAGINATION_MAX_SIZE_LIMIT = WEBSITE_PAGINATION_MAX_SIZE_LIMIT;
3956
4408
  exports.datePlusDays = datePlusDays;
3957
4409
  exports.dateToday = dateToday;
4410
+ exports.hasPermission = hasPermission;
3958
4411
  exports.isStrapiAttributeError = isStrapiAttributeError;
3959
4412
  exports.isStrapiStandardError = isStrapiStandardError;
3960
4413
  exports.isValidationFailure = isValidationFailure;