alado 2.2.9 → 2.4.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/README.md +240 -26
- package/dist/decorators/access-control.d.ts +2 -0
- package/dist/decorators/access-control.js +14 -0
- package/dist/decorators/access-control.js.map +1 -0
- package/dist/decorators/http.js +1 -0
- package/dist/decorators/http.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -0
- package/dist/decorators/index.js +1 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/initialize-injector.js +1 -0
- package/dist/decorators/initialize-injector.js.map +1 -1
- package/dist/dto/access-control-config.d.ts +7 -0
- package/dist/dto/access-control-config.js +3 -0
- package/dist/dto/access-control-config.js.map +1 -0
- package/dist/dto/context.d.ts +2 -0
- package/dist/dto/index.d.ts +1 -0
- package/dist/dto/index.js +1 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/helpers/parser/access-control-checker.d.ts +2 -0
- package/dist/helpers/parser/access-control-checker.js +29 -0
- package/dist/helpers/parser/access-control-checker.js.map +1 -0
- package/dist/helpers/parser/index.d.ts +1 -0
- package/dist/helpers/parser/index.js +1 -0
- package/dist/helpers/parser/index.js.map +1 -1
- package/dist/helpers/validate/built-in/validator.d.ts +8 -2
- package/dist/helpers/validate/built-in/validator.js +72 -7
- package/dist/helpers/validate/built-in/validator.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/options/injector-options.d.ts +2 -1
- package/dist/request-processor/request-processor.js +7 -0
- package/dist/request-processor/request-processor.js.map +1 -1
- package/dist/router/router.js.map +1 -1
- package/package.json +10 -10
- package/ROADMAP.md +0 -0
package/README.md
CHANGED
|
@@ -46,6 +46,7 @@ Alado sits in a unique position — it has the **simplicity of Express**, the **
|
|
|
46
46
|
| Decorator-based routing | ✅ | ❌ | ❌ | ✅ |
|
|
47
47
|
| Built-in request validation | ✅ | ❌ | ✅ (schemas) | ✅ (pipes) |
|
|
48
48
|
| Built-in auth pipeline | ✅ | ❌ | ❌ | ✅ (guards) |
|
|
49
|
+
| Built-in access control | ✅ | ❌ | ❌ | ✅ (guards) |
|
|
49
50
|
| Auto OpenAPI 3.0 docs | ✅ | ❌ | ✅ (plugin) | ✅ (plugin) |
|
|
50
51
|
| Built-in file upload | ✅ | ❌ | ❌ | ❌ |
|
|
51
52
|
| Built-in body parsing | ✅ | ❌ (body-parser) | ✅ | ✅ |
|
|
@@ -122,6 +123,8 @@ src/
|
|
|
122
123
|
│ └── server.options.ts # AladoServerOptions
|
|
123
124
|
├── auth/
|
|
124
125
|
│ └── bearer.auth.ts # RequestAuthentication config
|
|
126
|
+
├── access-control/
|
|
127
|
+
│ └── access-control.ts # AccessControl decorator & types
|
|
125
128
|
└── modules/
|
|
126
129
|
└── user/
|
|
127
130
|
├── index.ts
|
|
@@ -405,7 +408,7 @@ class CredentialsDto {
|
|
|
405
408
|
|
|
406
409
|
## Validation
|
|
407
410
|
|
|
408
|
-
The project uses a built-in chainable validator — a lightweight
|
|
411
|
+
The project uses a built-in chainable validator — a lightweight, zero-dependency TypeScript validation library with sync and async support.
|
|
409
412
|
|
|
410
413
|
### Basic usage
|
|
411
414
|
|
|
@@ -421,10 +424,32 @@ const isUsername = validate
|
|
|
421
424
|
.build();
|
|
422
425
|
const isRole = validate.string().enum('admin', 'user', 'guest').required().build();
|
|
423
426
|
const isAge = validate.number().integer().min(18).max(120).required().build();
|
|
424
|
-
const isId = validate.objectId().required().build();
|
|
427
|
+
const isId = validate.string().objectId().required().build();
|
|
425
428
|
```
|
|
426
429
|
|
|
427
|
-
Each chain ends with `.build()` which returns
|
|
430
|
+
Each chain ends with `.build()` which returns `(input: any) => Promise<boolean>` — build once, reuse anywhere. For sync-only rules use `.buildSync()` to get a plain `boolean`.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### Entry points
|
|
435
|
+
|
|
436
|
+
```ts
|
|
437
|
+
validate.string(); // starts a string validator
|
|
438
|
+
validate.number(); // starts a number validator
|
|
439
|
+
validate.boolean(); // starts a boolean validator
|
|
440
|
+
validate.array(); // starts an array validator
|
|
441
|
+
validate.object(); // starts an object validator
|
|
442
|
+
validate.custom(fn); // starts with a custom rule
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
### Modifiers
|
|
448
|
+
|
|
449
|
+
| Method | Description |
|
|
450
|
+
| ------------- | ---------------------------------------------------------- |
|
|
451
|
+
| `.required()` | Input must be non-empty (not `null`, `undefined`, or `""`) |
|
|
452
|
+
| `.optional()` | Input may be absent — skips all rules if empty (default) |
|
|
428
453
|
|
|
429
454
|
---
|
|
430
455
|
|
|
@@ -432,13 +457,13 @@ Each chain ends with `.build()` which returns a plain `(input: any) => boolean`
|
|
|
432
457
|
|
|
433
458
|
**Type**
|
|
434
459
|
|
|
435
|
-
| Method | Description
|
|
436
|
-
| ----------- |
|
|
437
|
-
| `string()` | Must be a string
|
|
438
|
-
| `number()` | Must be a number (not NaN)
|
|
439
|
-
| `boolean()` | Must be a boolean
|
|
440
|
-
| `array()` | Must be an array
|
|
441
|
-
| `object()` | Must be a plain object
|
|
460
|
+
| Method | Description |
|
|
461
|
+
| ----------- | -------------------------------------------- |
|
|
462
|
+
| `string()` | Must be a string |
|
|
463
|
+
| `number()` | Must be a number (not NaN) |
|
|
464
|
+
| `boolean()` | Must be a boolean |
|
|
465
|
+
| `array()` | Must be an array |
|
|
466
|
+
| `object()` | Must be a plain object (not array, not null) |
|
|
442
467
|
|
|
443
468
|
**String**
|
|
444
469
|
|
|
@@ -447,35 +472,37 @@ Each chain ends with `.build()` which returns a plain `(input: any) => boolean`
|
|
|
447
472
|
| `min(n)` | Min length (string) or min value (number) |
|
|
448
473
|
| `max(n)` | Max length (string) or max value (number) |
|
|
449
474
|
| `length(n)` | Exact length |
|
|
450
|
-
| `regex(pattern)` | Must match
|
|
475
|
+
| `regex(pattern)` | Must match RegExp |
|
|
451
476
|
| `email()` | Valid email format |
|
|
452
477
|
| `uuid()` | Valid UUID v4 |
|
|
453
478
|
| `objectId()` | Valid MongoDB ObjectId (24-char hex) |
|
|
454
|
-
| `url()` | Valid URL
|
|
455
|
-
| `trim()` |
|
|
479
|
+
| `url()` | Valid URL (parsed by `new URL()`) |
|
|
480
|
+
| `trim()` | No leading/trailing whitespace |
|
|
456
481
|
|
|
457
482
|
**Number**
|
|
458
483
|
|
|
459
484
|
| Method | Description |
|
|
460
485
|
| ------------ | ------------------ |
|
|
461
486
|
| `integer()` | Must be an integer |
|
|
462
|
-
| `positive()` | Must be
|
|
463
|
-
| `negative()` | Must be
|
|
487
|
+
| `positive()` | Must be `> 0` |
|
|
488
|
+
| `negative()` | Must be `< 0` |
|
|
464
489
|
|
|
465
490
|
**Generic**
|
|
466
491
|
|
|
467
|
-
| Method | Description
|
|
468
|
-
| ----------------- |
|
|
469
|
-
| `enum(...values)` | Must be one of the provided values
|
|
470
|
-
| `custom(fn)` | Any custom `(value) => boolean
|
|
471
|
-
| `required()` | Reject `null`, `undefined`, and `''` |
|
|
472
|
-
| `optional()` | Allow `null`, `undefined`, and `''` (default) |
|
|
492
|
+
| Method | Description |
|
|
493
|
+
| ----------------- | ------------------------------------------------------------ |
|
|
494
|
+
| `enum(...values)` | Must be one of the provided values |
|
|
495
|
+
| `custom(fn)` | Any custom `(value) => boolean \| Promise<boolean>` function |
|
|
473
496
|
|
|
474
497
|
**Object**
|
|
475
498
|
|
|
476
|
-
| Method | Description
|
|
477
|
-
| --------------- |
|
|
478
|
-
| `shape(schema)` | Validate each key against a nested validator
|
|
499
|
+
| Method | Description |
|
|
500
|
+
| --------------- | ------------------------------------------------------------------- |
|
|
501
|
+
| `shape(schema)` | Validate each key against a nested validator |
|
|
502
|
+
| `minKeys(n)` | Object must have at least `n` keys |
|
|
503
|
+
| `maxKeys(n)` | Object must have at most `n` keys |
|
|
504
|
+
| `or(...keys)` | At least one of the listed keys must be present and non-empty |
|
|
505
|
+
| `xor(...keys)` | Exactly one of the listed keys must be present (mutually exclusive) |
|
|
479
506
|
|
|
480
507
|
**Array**
|
|
481
508
|
|
|
@@ -512,7 +539,7 @@ Shapes can be nested to any depth:
|
|
|
512
539
|
const isUser = validate
|
|
513
540
|
.object()
|
|
514
541
|
.shape({
|
|
515
|
-
id: validate.objectId().required().build(),
|
|
542
|
+
id: validate.string().objectId().required().build(),
|
|
516
543
|
email: validate.string().email().required().build(),
|
|
517
544
|
role: validate.string().enum('admin', 'user').required().build(),
|
|
518
545
|
address: validate
|
|
@@ -529,6 +556,103 @@ const isUser = validate
|
|
|
529
556
|
|
|
530
557
|
---
|
|
531
558
|
|
|
559
|
+
### Object key constraints and mutual exclusion
|
|
560
|
+
|
|
561
|
+
```ts
|
|
562
|
+
// at least one contact method required
|
|
563
|
+
const isContact = validate.object().or('email', 'phone').build();
|
|
564
|
+
|
|
565
|
+
// exactly one payment method
|
|
566
|
+
const isPayment = validate.object().xor('cardId', 'bankAccount').build();
|
|
567
|
+
|
|
568
|
+
// bounded key count
|
|
569
|
+
const isMeta = validate.object().minKeys(1).maxKeys(10).build();
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
---
|
|
573
|
+
|
|
574
|
+
### Cross-property conditionals
|
|
575
|
+
|
|
576
|
+
Rules that look at sibling fields. The `root` context is passed automatically through `.shape()`.
|
|
577
|
+
|
|
578
|
+
#### `.when(key, is, then, otherwise?)`
|
|
579
|
+
|
|
580
|
+
If `root[key] === is`, apply `then` validator; otherwise apply `otherwise` (optional). `is` can be a single value or an array of values.
|
|
581
|
+
|
|
582
|
+
```ts
|
|
583
|
+
const isContact = validate
|
|
584
|
+
.object()
|
|
585
|
+
.shape({
|
|
586
|
+
type: validate.string().required().build(),
|
|
587
|
+
contact: validate
|
|
588
|
+
.string()
|
|
589
|
+
.when(
|
|
590
|
+
'type',
|
|
591
|
+
'email',
|
|
592
|
+
validate.string().email().build(), // when type === 'email'
|
|
593
|
+
validate
|
|
594
|
+
.string()
|
|
595
|
+
.regex(/^\+\d+$/)
|
|
596
|
+
.build(), // otherwise (phone)
|
|
597
|
+
)
|
|
598
|
+
.required()
|
|
599
|
+
.build(),
|
|
600
|
+
})
|
|
601
|
+
.build();
|
|
602
|
+
|
|
603
|
+
await isContact({ type: 'email', contact: 'a@b.com' }); // true
|
|
604
|
+
await isContact({ type: 'phone', contact: '+123456' }); // true
|
|
605
|
+
await isContact({ type: 'email', contact: '+123456' }); // false
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Array `is` — match multiple values:
|
|
609
|
+
|
|
610
|
+
```ts
|
|
611
|
+
validate
|
|
612
|
+
.string()
|
|
613
|
+
.when(
|
|
614
|
+
'role',
|
|
615
|
+
[
|
|
616
|
+
'admin',
|
|
617
|
+
'superadmin',
|
|
618
|
+
],
|
|
619
|
+
allowedFn,
|
|
620
|
+
restrictedFn,
|
|
621
|
+
)
|
|
622
|
+
.build();
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
#### `.match(key, cases, fallback?)`
|
|
626
|
+
|
|
627
|
+
Switch-case style — dispatch to different validators based on `root[key]`.
|
|
628
|
+
|
|
629
|
+
```ts
|
|
630
|
+
const isLevel = validate
|
|
631
|
+
.object()
|
|
632
|
+
.shape({
|
|
633
|
+
role: validate.string().required().build(),
|
|
634
|
+
level: validate
|
|
635
|
+
.number()
|
|
636
|
+
.match(
|
|
637
|
+
'role',
|
|
638
|
+
{
|
|
639
|
+
admin: validate.number().min(5).build(),
|
|
640
|
+
viewer: validate.number().max(2).build(),
|
|
641
|
+
editor: validate.number().min(1).max(4).build(),
|
|
642
|
+
},
|
|
643
|
+
validate.number().positive().build(),
|
|
644
|
+
) // fallback
|
|
645
|
+
.required()
|
|
646
|
+
.build(),
|
|
647
|
+
})
|
|
648
|
+
.build();
|
|
649
|
+
|
|
650
|
+
await isLevel({ role: 'admin', level: 7 }); // true
|
|
651
|
+
await isLevel({ role: 'viewer', level: 3 }); // false — max 2
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
---
|
|
655
|
+
|
|
532
656
|
### Array items
|
|
533
657
|
|
|
534
658
|
```ts
|
|
@@ -547,7 +671,7 @@ const isOrderItems = validate
|
|
|
547
671
|
validate
|
|
548
672
|
.object()
|
|
549
673
|
.shape({
|
|
550
|
-
productId: validate.objectId().required().build(),
|
|
674
|
+
productId: validate.string().objectId().required().build(),
|
|
551
675
|
quantity: validate.number().integer().positive().required().build(),
|
|
552
676
|
price: validate.number().positive().required().build(),
|
|
553
677
|
})
|
|
@@ -561,6 +685,46 @@ const isOrderItems = validate
|
|
|
561
685
|
|
|
562
686
|
---
|
|
563
687
|
|
|
688
|
+
### Async validation
|
|
689
|
+
|
|
690
|
+
Any rule can return `Promise<boolean>`. Use `.custom()` for async rules.
|
|
691
|
+
|
|
692
|
+
```ts
|
|
693
|
+
const isAvailableEmail = validate
|
|
694
|
+
.string()
|
|
695
|
+
.email()
|
|
696
|
+
.required()
|
|
697
|
+
.custom(async (v) => {
|
|
698
|
+
const taken = await db.users.exists({ email: v });
|
|
699
|
+
return !taken;
|
|
700
|
+
})
|
|
701
|
+
.build();
|
|
702
|
+
|
|
703
|
+
const ok = await isAvailableEmail('new@example.com');
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
Rules run sequentially — cheap sync checks short-circuit before any async I/O fires. Inside `.shape()` and `.items()`, field validators run in parallel via `Promise.all`.
|
|
707
|
+
|
|
708
|
+
---
|
|
709
|
+
|
|
710
|
+
### Sync mode
|
|
711
|
+
|
|
712
|
+
If you have no async rules, use `.buildSync()` to get a plain `boolean` without `await`.
|
|
713
|
+
|
|
714
|
+
```ts
|
|
715
|
+
const isValidName = validate.string().min(2).max(50).buildSync();
|
|
716
|
+
|
|
717
|
+
isValidName('Pablo'); // true — no await needed
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
`.buildSync()` throws at runtime if any rule in the chain is async:
|
|
721
|
+
|
|
722
|
+
```
|
|
723
|
+
Error: Validator contains async rules — use .build() instead of .buildSync()
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
564
728
|
### Use with Alado `@validateProperty`
|
|
565
729
|
|
|
566
730
|
```ts
|
|
@@ -770,6 +934,56 @@ export const optionalAuth: RequestAuthentication = {
|
|
|
770
934
|
|
|
771
935
|
---
|
|
772
936
|
|
|
937
|
+
## Access Control
|
|
938
|
+
|
|
939
|
+
The `@accessControl` decorator enables fine-grained permission checking on route handlers by comparing values from the request against expected values.
|
|
940
|
+
|
|
941
|
+
### Configuration
|
|
942
|
+
|
|
943
|
+
```typescript
|
|
944
|
+
export type AccessControlConfig<T> = {
|
|
945
|
+
inputProperty: string; // Property path to extract from request (e.g., 'auth.user.id')
|
|
946
|
+
transformInputProperty?: (inputPropertyValue: unknown) => T | Promise<T>; // Optional transform
|
|
947
|
+
compareWithProperty?: string; // Property path to compare against
|
|
948
|
+
expectedValue?: T; // Expected value (if not using compareWithProperty)
|
|
949
|
+
statusCode: number; // HTTP status on access denial
|
|
950
|
+
message: string; // Error message on denial
|
|
951
|
+
};
|
|
952
|
+
```
|
|
953
|
+
|
|
954
|
+
Either provide `compareWithProperty` to compare two request values, or `expectedValue` to check against a fixed value.
|
|
955
|
+
|
|
956
|
+
### Usage Example
|
|
957
|
+
|
|
958
|
+
```typescript
|
|
959
|
+
@patch('/user/:id', { tags: ['User'] })
|
|
960
|
+
@accessControl([{
|
|
961
|
+
inputProperty: 'auth.user.id',
|
|
962
|
+
transformInputProperty: async (v: unknown) => v.toString(),
|
|
963
|
+
compareWithProperty: 'path.id',
|
|
964
|
+
statusCode: 403,
|
|
965
|
+
message: 'Access Denied'
|
|
966
|
+
}])
|
|
967
|
+
@withAuth(bearerAuth)
|
|
968
|
+
public async update(req: Request) {
|
|
969
|
+
// Only allow users to update their own profile
|
|
970
|
+
const { path, body } = req;
|
|
971
|
+
const user = DataStore.getUser(path.id);
|
|
972
|
+
if (user) {
|
|
973
|
+
DataStore.setUser(path.id, body as UserDto);
|
|
974
|
+
}
|
|
975
|
+
return { statusCode: user ? 200 : 404, body: user || { message: 'Not Found' } };
|
|
976
|
+
}
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
In this example, the decorator ensures `auth.user.id` matches `path.id` before the handler executes. If access is denied, a 403 response is returned.
|
|
980
|
+
|
|
981
|
+
### Multiple Rules
|
|
982
|
+
|
|
983
|
+
Pass multiple configs to `@accessControl([...])` to enforce multiple access rules - all must pass for the request to proceed.
|
|
984
|
+
|
|
985
|
+
---
|
|
986
|
+
|
|
773
987
|
## File Uploads
|
|
774
988
|
|
|
775
989
|
1. Define a files DTO:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.accessControl = accessControl;
|
|
4
|
+
const _injector_1 = require("../injector");
|
|
5
|
+
const initialize_injector_1 = require("./initialize-injector");
|
|
6
|
+
function accessControl(configs) {
|
|
7
|
+
(0, initialize_injector_1.initializeInjector)();
|
|
8
|
+
return function (...args) {
|
|
9
|
+
const [controller, method,] = args;
|
|
10
|
+
const key = `${controller.constructor.name}.${method}`;
|
|
11
|
+
_injector_1.injector.injected.accessControlMapping[key] = configs;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=access-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/decorators/access-control.ts"],"names":[],"mappings":";;AAIA,sCAUC;AAbD,yCAAqC;AACrC,+DAA2D;AAE3D,SAAgB,aAAa,CAAC,OAAmC;IAC/D,IAAA,wCAAkB,GAAE,CAAC;IACrB,OAAO,UAAU,GAAG,IAAW;QAC7B,MAAM,CACJ,UAAU,EACV,MAAM,EACP,GAAG,IAAI,CAAC;QACT,MAAM,GAAG,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;QACvD,oBAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/decorators/http.js
CHANGED
|
@@ -21,6 +21,7 @@ function callHttpMethod(httpMethod, path, options = {}) {
|
|
|
21
21
|
app[normalizedMethod](path, {
|
|
22
22
|
title: options.title || defaultDescription,
|
|
23
23
|
auth: _injector_1.injector.injected.authMapping[key] || undefined,
|
|
24
|
+
accessControl: _injector_1.injector.injected.accessControlMapping[key] || undefined,
|
|
24
25
|
options: {
|
|
25
26
|
allowUnknownFields: false,
|
|
26
27
|
isHidden: options.isHidden || false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/decorators/http.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/decorators/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export * from './validate-property';
|
|
|
4
4
|
export * from './transform-property';
|
|
5
5
|
export * from './file-upload-property';
|
|
6
6
|
export * from './with-auth';
|
|
7
|
+
export * from './access-control';
|
|
7
8
|
export * from './define-request';
|
|
8
9
|
export * from './define-response';
|
|
9
10
|
export * from './http';
|
package/dist/decorators/index.js
CHANGED
|
@@ -20,6 +20,7 @@ __exportStar(require("./validate-property"), exports);
|
|
|
20
20
|
__exportStar(require("./transform-property"), exports);
|
|
21
21
|
__exportStar(require("./file-upload-property"), exports);
|
|
22
22
|
__exportStar(require("./with-auth"), exports);
|
|
23
|
+
__exportStar(require("./access-control"), exports);
|
|
23
24
|
__exportStar(require("./define-request"), exports);
|
|
24
25
|
__exportStar(require("./define-response"), exports);
|
|
25
26
|
__exportStar(require("./http"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC;AACpC,uDAAqC;AACrC,yDAAuC;AACvC,8CAA4B;AAC5B,mDAAiC;AACjC,oDAAkC;AAClC,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,sDAAoC;AACpC,sDAAoC;AACpC,uDAAqC;AACrC,yDAAuC;AACvC,8CAA4B;AAC5B,mDAAiC;AACjC,mDAAiC;AACjC,oDAAkC;AAClC,yCAAuB"}
|
|
@@ -9,6 +9,7 @@ function initializeInjector() {
|
|
|
9
9
|
requestMapping: _injector_1.injector.injected.requestMapping || {},
|
|
10
10
|
responseMapping: _injector_1.injector.injected.responseMapping || {},
|
|
11
11
|
authMapping: _injector_1.injector.injected.authMapping || {},
|
|
12
|
+
accessControlMapping: _injector_1.injector.injected.accessControlMapping || {},
|
|
12
13
|
propertyDefinitionsMapping: _injector_1.injector.injected.propertyDefinitionsMapping || {},
|
|
13
14
|
controllers: _injector_1.injector.injected.controllers || {},
|
|
14
15
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-injector.js","sourceRoot":"","sources":["../../src/decorators/initialize-injector.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"initialize-injector.js","sourceRoot":"","sources":["../../src/decorators/initialize-injector.ts"],"names":[],"mappings":";;AAEA,gDAWC;AAbD,yCAAqC;AAErC,SAAgB,kBAAkB;IAChC,oBAAQ,CAAC,MAAM,CAAC;QACd,UAAU,EAAE,oBAAQ,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE;QAC9C,gBAAgB,EAAE,oBAAQ,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE;QAC1D,cAAc,EAAE,oBAAQ,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE;QACtD,eAAe,EAAE,oBAAQ,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE;QACxD,WAAW,EAAE,oBAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;QAChD,oBAAoB,EAAE,oBAAQ,CAAC,QAAQ,CAAC,oBAAoB,IAAI,EAAE;QAClE,0BAA0B,EAAE,oBAAQ,CAAC,QAAQ,CAAC,0BAA0B,IAAI,EAAE;QAC9E,WAAW,EAAE,oBAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;KACjD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AladoServerError } from './alado-server-error';
|
|
2
|
+
export type AccessControlConfig<T> = {
|
|
3
|
+
inputProperty: string;
|
|
4
|
+
transformInputProperty?: (inputPropertyValue: unknown) => T | Promise<T>;
|
|
5
|
+
compareWithProperty?: string;
|
|
6
|
+
expectedValue?: T;
|
|
7
|
+
} & AladoServerError;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control-config.js","sourceRoot":"","sources":["../../src/dto/access-control-config.ts"],"names":[],"mappings":""}
|
package/dist/dto/context.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ import { ContextOptions } from '../options';
|
|
|
2
2
|
import { RequestAuthentication } from './request-authentication';
|
|
3
3
|
import { Response } from './response';
|
|
4
4
|
import { ContextRequest } from './request';
|
|
5
|
+
import { AccessControlConfig } from './access-control-config';
|
|
5
6
|
export type Context<T> = {
|
|
6
7
|
title: string;
|
|
7
8
|
auth?: RequestAuthentication;
|
|
9
|
+
accessControl?: AccessControlConfig<any>[];
|
|
8
10
|
options: ContextOptions;
|
|
9
11
|
request: ContextRequest;
|
|
10
12
|
response: Response<Record<keyof T, any>>;
|
package/dist/dto/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './alado-server-logger';
|
|
|
4
4
|
export * from './request';
|
|
5
5
|
export * from './response';
|
|
6
6
|
export * from './property-definition';
|
|
7
|
+
export * from './access-control-config';
|
|
7
8
|
export * from './request-authentication';
|
|
8
9
|
export * from './route';
|
|
9
10
|
export * from './open-api-doc-object';
|
package/dist/dto/index.js
CHANGED
|
@@ -20,6 +20,7 @@ __exportStar(require("./alado-server-logger"), exports);
|
|
|
20
20
|
__exportStar(require("./request"), exports);
|
|
21
21
|
__exportStar(require("./response"), exports);
|
|
22
22
|
__exportStar(require("./property-definition"), exports);
|
|
23
|
+
__exportStar(require("./access-control-config"), exports);
|
|
23
24
|
__exportStar(require("./request-authentication"), exports);
|
|
24
25
|
__exportStar(require("./route"), exports);
|
|
25
26
|
__exportStar(require("./open-api-doc-object"), exports);
|
package/dist/dto/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,uDAAqC;AACrC,wDAAsC;AACtC,4CAA0B;AAC1B,6CAA2B;AAC3B,wDAAsC;AACtC,2DAAyC;AACzC,0CAAwB;AACxB,wDAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dto/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,uDAAqC;AACrC,wDAAsC;AACtC,4CAA0B;AAC1B,6CAA2B;AAC3B,wDAAsC;AACtC,0DAAwC;AACxC,2DAAyC;AACzC,0CAAwB;AACxB,wDAAsC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.accessControlChecker = accessControlChecker;
|
|
4
|
+
const accessor_1 = require("../accessor");
|
|
5
|
+
async function accessControlChecker(context, request) {
|
|
6
|
+
const { accessControl } = context;
|
|
7
|
+
let success = true;
|
|
8
|
+
for (const item of accessControl) {
|
|
9
|
+
const { inputProperty, transformInputProperty, statusCode, message, compareWithProperty, expectedValue } = item;
|
|
10
|
+
let providedValue = (0, accessor_1.getProperty)(request, inputProperty);
|
|
11
|
+
if (typeof transformInputProperty === 'function') {
|
|
12
|
+
providedValue = await transformInputProperty(providedValue);
|
|
13
|
+
}
|
|
14
|
+
if (expectedValue !== undefined) {
|
|
15
|
+
success = expectedValue === providedValue;
|
|
16
|
+
}
|
|
17
|
+
if (!success) {
|
|
18
|
+
return { statusCode, message };
|
|
19
|
+
}
|
|
20
|
+
if (compareWithProperty) {
|
|
21
|
+
const compareWithVale = (0, accessor_1.getProperty)(request, compareWithProperty);
|
|
22
|
+
success = compareWithVale === providedValue;
|
|
23
|
+
}
|
|
24
|
+
if (!success) {
|
|
25
|
+
return { statusCode, message };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=access-control-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control-checker.js","sourceRoot":"","sources":["../../../src/helpers/parser/access-control-checker.ts"],"names":[],"mappings":";;AAGA,oDA6BC;AA/BD,0CAA0C;AAEnC,KAAK,UAAU,oBAAoB,CAAC,OAAqB,EAAE,OAAY;IAC5E,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAEhH,IAAI,aAAa,GAAY,IAAA,sBAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEjE,IAAI,OAAO,sBAAsB,KAAK,UAAU,EAAE,CAAC;YACjD,aAAa,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,GAAG,aAAa,KAAK,aAAa,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,IAAA,sBAAW,EAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAClE,OAAO,GAAG,eAAe,KAAK,aAAa,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./access-control-checker"), exports);
|
|
17
18
|
__exportStar(require("./authenticate"), exports);
|
|
18
19
|
__exportStar(require("./body-parser"), exports);
|
|
19
20
|
__exportStar(require("./query-parser"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,gDAA8B;AAC9B,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/parser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,iDAA+B;AAC/B,gDAA8B;AAC9B,iDAA+B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type ValidatorFn = (input: any) => boolean
|
|
1
|
+
type ValidatorFn = (input: any, root?: any) => boolean | Promise<boolean>;
|
|
2
2
|
declare class Validator {
|
|
3
3
|
private rules;
|
|
4
4
|
private _required;
|
|
@@ -25,11 +25,17 @@ declare class Validator {
|
|
|
25
25
|
enum<T>(...values: T[]): Validator;
|
|
26
26
|
custom(fn: ValidatorFn): Validator;
|
|
27
27
|
shape(schema: Record<string, ValidatorFn>): Validator;
|
|
28
|
+
minKeys(n: number): Validator;
|
|
29
|
+
maxKeys(n: number): Validator;
|
|
30
|
+
or(...keys: string[]): Validator;
|
|
31
|
+
xor(...keys: string[]): Validator;
|
|
32
|
+
when(key: string, is: any, then: ValidatorFn, otherwise?: ValidatorFn): Validator;
|
|
33
|
+
match(key: string, cases: Record<string, ValidatorFn>, fallback?: ValidatorFn): Validator;
|
|
28
34
|
items(fn: ValidatorFn): Validator;
|
|
29
35
|
minItems(n: number): Validator;
|
|
30
36
|
maxItems(n: number): Validator;
|
|
31
37
|
unique(): Validator;
|
|
32
|
-
build():
|
|
38
|
+
build(): (input: any, root?: any) => Promise<boolean>;
|
|
33
39
|
}
|
|
34
40
|
export declare const validate: {
|
|
35
41
|
string: () => Validator;
|
|
@@ -88,15 +88,73 @@ class Validator {
|
|
|
88
88
|
}
|
|
89
89
|
// Object rules
|
|
90
90
|
shape(schema) {
|
|
91
|
+
return this.add((v, root) => {
|
|
92
|
+
if (typeof v !== 'object' || v === null || Array.isArray(v)) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
return Object.entries(schema).every(([key, fn,]) => fn(v[key], root ?? v));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
minKeys(n) {
|
|
99
|
+
return this.add((v) => typeof v === 'object' && v !== null && !Array.isArray(v) && Object.keys(v).length >= n);
|
|
100
|
+
}
|
|
101
|
+
maxKeys(n) {
|
|
102
|
+
return this.add((v) => typeof v === 'object' && v !== null && !Array.isArray(v) && Object.keys(v).length <= n);
|
|
103
|
+
}
|
|
104
|
+
// At least one of the listed keys must be present and non-empty
|
|
105
|
+
or(...keys) {
|
|
91
106
|
return this.add((v) => {
|
|
92
|
-
if (typeof v !== 'object' || v === null || Array.isArray(v))
|
|
107
|
+
if (typeof v !== 'object' || v === null || Array.isArray(v)) {
|
|
93
108
|
return false;
|
|
94
|
-
|
|
109
|
+
}
|
|
110
|
+
return keys.some((k) => v[k] !== undefined && v[k] !== null && v[k] !== '');
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Exactly one of the listed keys must be present and non-empty
|
|
114
|
+
xor(...keys) {
|
|
115
|
+
return this.add((v) => {
|
|
116
|
+
if (typeof v !== 'object' || v === null || Array.isArray(v)) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const present = keys.filter((k) => v[k] !== undefined && v[k] !== null && v[k] !== '');
|
|
120
|
+
return present.length === 1;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// Cross-property conditional rules
|
|
124
|
+
// when(key, is, then, otherwise?)
|
|
125
|
+
// e.g. when('type', 'email', v => validate.string().email().build()(v.address))
|
|
126
|
+
when(key, is, then, otherwise) {
|
|
127
|
+
return this.add((v, root) => {
|
|
128
|
+
const ctx = root ?? v;
|
|
129
|
+
if (typeof ctx !== 'object' || ctx === null) {
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
const matches = Array.isArray(is) ? is.includes(ctx[key]) : ctx[key] === is;
|
|
133
|
+
if (matches)
|
|
134
|
+
return then(v, ctx);
|
|
135
|
+
if (otherwise)
|
|
136
|
+
return otherwise(v, ctx);
|
|
137
|
+
return true;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
// switch-case style: .match('status', { active: fn, inactive: fn }, fallbackFn?)
|
|
141
|
+
match(key, cases, fallback) {
|
|
142
|
+
return this.add((v, root) => {
|
|
143
|
+
const ctx = root ?? v;
|
|
144
|
+
if (typeof ctx !== 'object' || ctx === null) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
const caseKey = String(ctx[key]);
|
|
148
|
+
const fn = cases[caseKey] ?? fallback;
|
|
149
|
+
if (!fn) {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
return fn(v, ctx);
|
|
95
153
|
});
|
|
96
154
|
}
|
|
97
155
|
// Array rules
|
|
98
156
|
items(fn) {
|
|
99
|
-
return this.add((v) => Array.isArray(v) && v.every(fn));
|
|
157
|
+
return this.add((v) => Array.isArray(v) && v.every((item) => fn(item)));
|
|
100
158
|
}
|
|
101
159
|
minItems(n) {
|
|
102
160
|
return this.add((v) => Array.isArray(v) && v.length >= n);
|
|
@@ -107,15 +165,22 @@ class Validator {
|
|
|
107
165
|
unique() {
|
|
108
166
|
return this.add((v) => Array.isArray(v) && new Set(v).size === v.length);
|
|
109
167
|
}
|
|
110
|
-
// Build
|
|
168
|
+
// Build
|
|
111
169
|
build() {
|
|
112
170
|
const rules = [...this.rules];
|
|
113
171
|
const required = this._required;
|
|
114
|
-
return (input) => {
|
|
172
|
+
return async (input, root) => {
|
|
115
173
|
const isEmpty = input === null || input === undefined || input === '';
|
|
116
|
-
if (isEmpty)
|
|
174
|
+
if (isEmpty) {
|
|
117
175
|
return !required;
|
|
118
|
-
|
|
176
|
+
}
|
|
177
|
+
for (const rule of rules) {
|
|
178
|
+
const ok = await rule(input, root);
|
|
179
|
+
if (!ok) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return true;
|
|
119
184
|
};
|
|
120
185
|
}
|
|
121
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/helpers/validate/built-in/validator.ts"],"names":[],"mappings":";;;AAEA,MAAM,SAAS;IACL,KAAK,GAAkB,EAAE,CAAC;IAC1B,SAAS,GAAG,KAAK,CAAC;IAElB,GAAG,CAAC,EAAe;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;IAEb,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;IAEf,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/helpers/validate/built-in/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { Context, ContextRequest, RequestAuthentication, Request, Response, Prop
|
|
|
2
2
|
export { AladoServerOptions, ContextOptions, CorsOptions, OpenApiDoc } from './options';
|
|
3
3
|
export { HttpMethod, httpStatus, ContentType } from './constants';
|
|
4
4
|
export { validate } from './helpers';
|
|
5
|
-
export { initializeApplication, defineRequest, defineResponse, fileUploadProperty, documentProperty, validateProperty, transformProperty, withAuth, get, del, head, patch, post, put, } from './decorators';
|
|
5
|
+
export { initializeApplication, defineRequest, defineResponse, fileUploadProperty, documentProperty, validateProperty, transformProperty, withAuth, accessControl, get, del, head, patch, post, put, } from './decorators';
|
|
6
6
|
export { AladoServer } from './alado-server';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AladoServer = exports.put = exports.post = exports.patch = exports.head = exports.del = exports.get = exports.withAuth = exports.transformProperty = exports.validateProperty = exports.documentProperty = exports.fileUploadProperty = exports.defineResponse = exports.defineRequest = exports.initializeApplication = exports.validate = exports.ContentType = exports.httpStatus = exports.HttpMethod = void 0;
|
|
3
|
+
exports.AladoServer = exports.put = exports.post = exports.patch = exports.head = exports.del = exports.get = exports.accessControl = exports.withAuth = exports.transformProperty = exports.validateProperty = exports.documentProperty = exports.fileUploadProperty = exports.defineResponse = exports.defineRequest = exports.initializeApplication = exports.validate = exports.ContentType = exports.httpStatus = exports.HttpMethod = void 0;
|
|
4
4
|
var _const_1 = require("./constants");
|
|
5
5
|
Object.defineProperty(exports, "HttpMethod", { enumerable: true, get: function () { return _const_1.HttpMethod; } });
|
|
6
6
|
Object.defineProperty(exports, "httpStatus", { enumerable: true, get: function () { return _const_1.httpStatus; } });
|
|
@@ -16,6 +16,7 @@ Object.defineProperty(exports, "documentProperty", { enumerable: true, get: func
|
|
|
16
16
|
Object.defineProperty(exports, "validateProperty", { enumerable: true, get: function () { return _decorator_1.validateProperty; } });
|
|
17
17
|
Object.defineProperty(exports, "transformProperty", { enumerable: true, get: function () { return _decorator_1.transformProperty; } });
|
|
18
18
|
Object.defineProperty(exports, "withAuth", { enumerable: true, get: function () { return _decorator_1.withAuth; } });
|
|
19
|
+
Object.defineProperty(exports, "accessControl", { enumerable: true, get: function () { return _decorator_1.accessControl; } });
|
|
19
20
|
Object.defineProperty(exports, "get", { enumerable: true, get: function () { return _decorator_1.get; } });
|
|
20
21
|
Object.defineProperty(exports, "del", { enumerable: true, get: function () { return _decorator_1.del; } });
|
|
21
22
|
Object.defineProperty(exports, "head", { enumerable: true, get: function () { return _decorator_1.head; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iCAA6D;AAApD,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,qGAAA,WAAW,OAAA;AAC5C,mCAAmC;AAA1B,mGAAA,QAAQ,OAAA;AACjB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAYA,iCAA6D;AAApD,oGAAA,UAAU,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,qGAAA,WAAW,OAAA;AAC5C,mCAAmC;AAA1B,mGAAA,QAAQ,OAAA;AACjB,yCAgBoB;AAflB,mHAAA,qBAAqB,OAAA;AACrB,2GAAA,aAAa,OAAA;AACb,4GAAA,cAAc,OAAA;AACd,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAChB,+GAAA,iBAAiB,OAAA;AACjB,sGAAA,QAAQ,OAAA;AACR,2GAAA,aAAa,OAAA;AACb,iGAAA,GAAG,OAAA;AACH,iGAAA,GAAG,OAAA;AACH,kGAAA,IAAI,OAAA;AACJ,mGAAA,KAAK,OAAA;AACL,kGAAA,IAAI,OAAA;AACJ,iGAAA,GAAG,OAAA;AAEL,iCAAqC;AAA5B,qGAAA,WAAW,OAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AladoServer } from '../alado-server';
|
|
2
|
-
import { FilePropertyDefinition, PropertyDefinition, RequestAuthentication } from '../dto';
|
|
2
|
+
import { AccessControlConfig, FilePropertyDefinition, PropertyDefinition, RequestAuthentication } from '../dto';
|
|
3
3
|
export type InjectorOptions = {
|
|
4
4
|
appMapping: Record<string, AladoServer>;
|
|
5
5
|
shadowAppMapping: Record<string, any>;
|
|
6
6
|
authMapping: Record<string, RequestAuthentication>;
|
|
7
|
+
accessControlMapping: Record<string, AccessControlConfig<any>[]>;
|
|
7
8
|
requestMapping: Record<string, Record<string, Record<string, PropertyDefinition | FilePropertyDefinition>>>;
|
|
8
9
|
responseMapping: Record<string, any>;
|
|
9
10
|
controllers: Record<string, Object>;
|
|
@@ -160,6 +160,13 @@ class RequestProcessor {
|
|
|
160
160
|
return this.respondError(res, authError, backgroundHeaders);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
+
// Access control
|
|
164
|
+
if (Array.isArray(context.accessControl) && context.accessControl.length) {
|
|
165
|
+
const accessError = await (0, _helper_1.accessControlChecker)(context, request);
|
|
166
|
+
if (accessError) {
|
|
167
|
+
return this.respondError(res, accessError, backgroundHeaders);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
163
170
|
// Validate request
|
|
164
171
|
for (const key in context.request) {
|
|
165
172
|
const error = await (0, _helper_1.validateRequestPart)(key, context, request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-processor.js","sourceRoot":"","sources":["../../src/request-processor/request-processor.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAC5B,2BAAsE;AAEtE,mCAAiD;AAGjD,
|
|
1
|
+
{"version":3,"file":"request-processor.js","sourceRoot":"","sources":["../../src/request-processor/request-processor.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAC5B,2BAAsE;AAEtE,mCAAiD;AAGjD,qCASiB;AAEjB,MAAM,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC;AACrE,MAAM,cAAc,GAAa,IAAA,gBAAW,EAAC,kBAAkB,CAAC,CAAC;AAEjE,MAAa,gBAAgB;IACV,OAAO,CAA0B;IAElD,YAAY,uBAAgD;QAC1D,IAAI,CAAC,OAAO,GAAG,uBAAuB,CAAC;IACzC,CAAC;IAES,OAAO,CAAC,GAAmB,EAAE,QAAuB,EAAE,oBAA4C,EAAE;QAC5G,IAAI,YAAiB,CAAC;QACtB,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAuB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QACxG,IAAI,WAAW,EAAE,UAAU,CAAC,oBAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACzF,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAES,YAAY,CAAC,GAAmB,EAAE,KAAuB,EAAE,UAAkC,EAAE;QACvG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvB,UAAU;YACV,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE;YACpF,IAAI,EAAE,EAAE,OAAO,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAoB,EAAE,GAAmB;QAC5D,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;YACxD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAChC,MAAM,GAAG,GAAG,IAAA,wBAAc,EAAC,GAAG,CAAC,GAAa,CAAC,CAAC;YAC9C,MAAM,EAAE,GAAY,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAY,IAAK,GAAG,CAAC,MAAM,EAAE,aAAwB,CAAC;YACvG,MAAM,MAAM,GAAY,GAAG,CAAC,OAAO,CAAC,MAAiB,IAAI,GAAG,CAAC;YAC7D,0BAA0B;YAC1B,IAAI,UAAU,EAAE,MAAM,EAAE,CAAC;gBACvB,IAAI,MAAM,KAAK,mBAAU,CAAC,GAAG,EAAE,CAAC;oBAC9B,IACE,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC;wBACrC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,IAAA,wBAAc,EAAC,UAAU,EAAE,KAAe,CAAC,CAAC;4BAC5D,CAAC;gCACC,EAAE;gCACF,GAAG;6BACJ,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAe,CAAC,CAAC;4BACxC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC7C,GAAG,KAAK,UAAU,EAAE,KAAK,CAAC,EAC5B,CAAC;wBACD,IAAI,QAAQ,GAAG,IAAA,WAAI,EAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,IAAA,wBAAc,EAAC,UAAU,CAAC,KAAe,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC1G,QAAQ,IAAI,GAAG,KAAK,IAAA,wBAAc,EAAC,UAAU,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpF,OAAO,IAAA,WAAM,EAAC,QAAQ,EAAE,cAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;4BAC9C,IAAI,GAAG,EAAE,CAAC;gCACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;oCACvB,UAAU,EAAE,GAAG;oCACf,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;oCACzC,IAAI,EAAE,WAAW;iCAClB,CAAC,CAAC;4BACL,CAAC;iCAAM,CAAC;gCACN,IAAA,qBAAgB,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACvC,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;yBAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;wBAChD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;4BACvB,UAAU,EAAE,GAAG;4BACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;4BAC/C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;yBAC3C,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YACD,qBAAqB;YACrB,MAAM,CACJ,GAAG,EACH,WAAW,EACZ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAoB,EAAE,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC;YACtE,MAAM,iBAAiB,GAA2B;gBAChD,8BAA8B,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvE,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClG,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClG,kCAAkC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;aAC5G,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpE,iBAAiB,CAAC,6BAA6B,CAAC,GAAG,MAAM,CAAC;gBAC5D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,6BAA6B,CAAC;oBAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAwB,IAAI,MAAM,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,YAAY;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,OAAO;gBACP,IAAI,UAAU,IAAI,MAAM,KAAK,mBAAU,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAkB,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;oBACtE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gBACxD,CAAC;gBAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;gBAEzC,gCAAgC;gBAChC,IAAI,IAAI,GAAQ,EAAE,CAAC;gBACnB,IAAI,OAAO,GAAW,EAAE,CAAC;gBACzB,IAAI,KAAK,GAAQ,EAAE,CAAC;gBACpB,IAAI,KAAK,GAAQ,EAAE,CAAC;gBAEpB,IAEI;oBACE,mBAAU,CAAC,GAAG;oBACd,mBAAU,CAAC,KAAK;oBAChB,mBAAU,CAAC,IAAI;iBAElB,CAAC,QAAQ,CAAC,MAAgB,CAAC,EAC5B,CAAC;oBACD,MAAM,CAAC,GAAG,MAAM,IAAA,oBAAU,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,gBAA0B,CAAC,CAAC;oBAC9E,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBACd,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;oBACpB,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBAClB,CAAC;gBAED,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC1B,KAAK,GAAG,IAAA,qBAAW,EAAC,WAAW,CAAC,CAAC;gBACnC,CAAC;gBAED,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;gBACxD,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBAClD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;gBAClD,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;gBAEpD,MAAM,OAAO,GAAY;oBACvB,OAAO,EAAE,GAAG;oBACZ,EAAE;oBACF,MAAM;oBACN,MAAM,EAAE,MAAoB;oBAC5B,GAAG;oBACH,IAAI,EAAE,EAAE;oBACR,OAAO;oBACP,IAAI;oBACJ,KAAK;iBACN,CAAC;gBACF,IAAI,IAAI,EAAE,CAAC;oBACT,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC5B,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;gBACxB,CAAC;gBACD,eAAe;gBACf,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,SAAS,GAAqB,MAAM,IAAA,sBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzE,IAAI,SAAS,EAAE,CAAC;wBACd,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;gBACD,iBAAiB;gBACjB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzE,MAAM,WAAW,GAAG,MAAM,IAAA,8BAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACjE,IAAI,WAAW,EAAE,CAAC;wBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;gBACD,mBAAmB;gBACnB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBAClC,MAAM,KAAK,GAAiC,MAAM,IAAA,6BAAmB,EACnE,GAA2B,EAC3B,OAAO,EACP,OAAO,CACR,CAAC;oBACF,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;gBACD,2BAA2B;gBAC3B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC1B,MAAM,KAAK,GAAiC,MAAM,IAAA,8BAAoB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzF,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;oBAC1D,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAkB,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;oBACvD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,CAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC5F,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,CAAU,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAES,QAAQ,CAAC,CAAQ;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAlND,4CAkNC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":";;;AAAA,mCAAiD;AAGjD,uCAA6C;AAC7C,qCAA0D;AAE1D,MAAM,iBAAiB,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alado",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Extremely fast, lightweight, robust framework for HTTP applications written in Node.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"HTTP",
|
|
@@ -24,21 +24,21 @@
|
|
|
24
24
|
"prepare": "husky"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"swagger-ui-dist": "5.32.
|
|
27
|
+
"swagger-ui-dist": "5.32.6"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@eslint/js": "^10.0.1",
|
|
31
|
-
"@types/node": "24.
|
|
31
|
+
"@types/node": "24.13.1",
|
|
32
32
|
"@types/prettier": "3.0.0",
|
|
33
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
34
|
-
"@typescript-eslint/parser": "8.
|
|
35
|
-
"eslint": "10.
|
|
33
|
+
"@typescript-eslint/eslint-plugin": "8.60.1",
|
|
34
|
+
"@typescript-eslint/parser": "8.60.1",
|
|
35
|
+
"eslint": "10.4.1",
|
|
36
36
|
"husky": "9.1.7",
|
|
37
|
-
"prettier": "3.8.
|
|
38
|
-
"prettier-plugin-multiline-arrays": "4.1.
|
|
39
|
-
"tsc-alias": "1.8.
|
|
37
|
+
"prettier": "3.8.3",
|
|
38
|
+
"prettier-plugin-multiline-arrays": "4.1.9",
|
|
39
|
+
"tsc-alias": "1.8.17",
|
|
40
40
|
"typescript": "5.9.3",
|
|
41
|
-
"typescript-eslint": "^8.
|
|
41
|
+
"typescript-eslint": "^8.60.1"
|
|
42
42
|
},
|
|
43
43
|
"repository": {
|
|
44
44
|
"type": "git",
|
package/ROADMAP.md
DELETED
|
File without changes
|