@authup/access 1.0.0-beta.69 → 1.0.0-beta.70
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 +230 -0
- package/dist/index.d.mts +75 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +100 -1
- package/dist/index.mjs.map +1 -1
- package/dist/permission/index.d.ts +1 -0
- package/dist/permission/index.d.ts.map +1 -1
- package/dist/permission/record/index.d.ts +3 -0
- package/dist/permission/record/index.d.ts.map +1 -0
- package/dist/permission/record/module.d.ts +36 -0
- package/dist/permission/record/module.d.ts.map +1 -0
- package/dist/permission/record/types.d.ts +41 -0
- package/dist/permission/record/types.d.ts.map +1 -0
- package/package.json +5 -5
package/README.md
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/authup/authup/master/.github/assets/logo.svg" alt="Authup logo" width="96" height="96" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">@authup/access</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Evaluate Authup permissions and policies in your own process, with the same engine the server uses.</b><br>
|
|
9
|
+
Your API decides "may this token update this row?" locally, instead of asking Authup on every request.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/@authup/access"><img src="https://img.shields.io/npm/v/@authup/access" alt="npm version" /></a>
|
|
14
|
+
<a href="https://github.com/authup/authup/actions/workflows/main.yml"><img src="https://github.com/authup/authup/actions/workflows/main.yml/badge.svg" alt="CI" /></a>
|
|
15
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="License: Apache-2.0" /></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="#installation"><b>Installation</b></a> · <a href="#usage">Usage</a> · <a href="#api">API</a> · <a href="https://authup.org">Documentation</a>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Why @authup/access?
|
|
25
|
+
|
|
26
|
+
In Authup a grant is more than a permission name. Each grant carries a realm reach (`own`, `ownOrNull`, `any`) and optional policies (attributes, identity, time, date, realm match, composites), and a permission can carry policies of its own. Re-implementing that model in every API that receives an Authup token is how the API and the server end up disagreeing. This package is the model itself: the server-core service evaluates every management API request with it, and so can you.
|
|
27
|
+
|
|
28
|
+
| Concern | Without it | With it |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| **Permission checks** | `if (token.permissions.includes('user_update'))`, which ignores realm reach and policies | `evaluateRecord(evaluator, { name: 'user_update', realm })` answers the way the server would |
|
|
31
|
+
| **Realm reach** | Hand-written tenant comparisons per route | `own`, `ownOrNull` and `any` are evaluated per grant against the record's realm |
|
|
32
|
+
| **Policies** | A second, partial implementation of attribute, time and identity rules | The built-in policy evaluators, plus your own types through `PolicyEngine` |
|
|
33
|
+
| **Stale data** | Silent denials after a permission is added on the server | `AuthorizationCatalogStaleError` says the copy is old, so you refetch |
|
|
34
|
+
| **List queries** | Fetch everything, then filter in memory | `compile()` lowers a decision to a rapiq condition you can push into the query |
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
```shell
|
|
39
|
+
npm install @authup/access
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
ESM only. Node.js `^22.13.0 || ^23.5.0 || >=24.0.0`. No peer dependencies; the policy engine runs in a browser as well.
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
### Evaluate permissions you define
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import {
|
|
50
|
+
BuiltInPolicyType,
|
|
51
|
+
PermissionEvaluator,
|
|
52
|
+
PermissionMemoryProvider,
|
|
53
|
+
defineAttributesPolicy,
|
|
54
|
+
definePolicyData,
|
|
55
|
+
} from '@authup/access';
|
|
56
|
+
|
|
57
|
+
const evaluator = new PermissionEvaluator({
|
|
58
|
+
provider: new PermissionMemoryProvider([
|
|
59
|
+
{ permission: { name: 'report_read' } },
|
|
60
|
+
{
|
|
61
|
+
permission: { name: 'report_update' },
|
|
62
|
+
policies: [defineAttributesPolicy({ type: BuiltInPolicyType.ATTRIBUTES, query: { ownerId: 'u1' } })],
|
|
63
|
+
},
|
|
64
|
+
]),
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
await evaluator.evaluate({ name: 'report_read' });
|
|
68
|
+
|
|
69
|
+
await evaluator.evaluate({
|
|
70
|
+
name: 'report_update',
|
|
71
|
+
data: definePolicyData({ [BuiltInPolicyType.ATTRIBUTES]: { ownerId: 'u1' } }),
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
await evaluator.preEvaluate({ name: 'report_update' }); // passes: the row is not known yet
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
- `evaluate` resolves or throws a `PermissionError` (`isPermissionError`). With several names it needs all of them; `evaluateOneOf` needs one.
|
|
78
|
+
- `preEvaluate` is the gate before the data exists: a policy whose data key is missing counts as passed, and only a policy that already fails denies. `evaluate` with the same missing key denies.
|
|
79
|
+
- A permission the provider does not know denies.
|
|
80
|
+
- An `attributes` policy's `query` is a MongoDB-style filter (`{ ownerId: 'u1' }`, `{ age: { $gte: 18 } }`) matched against the `attributes` data key.
|
|
81
|
+
|
|
82
|
+
### Decide from Authup's catalog
|
|
83
|
+
|
|
84
|
+
A resource server reads the identity-free catalog once (`GET /authorization`, with its own client credentials and `permission_read`), and takes the grants and the identity from the introspection of the token it received (`POST /token/introspect`: `permissions`, `sub`, `sub_kind`, `realm_id`, `realm_name`):
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import {
|
|
88
|
+
createAuthorizationEvaluator,
|
|
89
|
+
evaluateRecord,
|
|
90
|
+
isAuthorizationCatalogStaleError,
|
|
91
|
+
reachesRecord,
|
|
92
|
+
} from '@authup/access';
|
|
93
|
+
|
|
94
|
+
declare const catalog: unknown;
|
|
95
|
+
declare const grants: unknown;
|
|
96
|
+
declare function refetchCatalog(): Promise<unknown>;
|
|
97
|
+
|
|
98
|
+
const identity = {
|
|
99
|
+
type: 'user',
|
|
100
|
+
id: '7c9e6679-7425-40de-944b-e07fc1f099d6',
|
|
101
|
+
realmId: '4c8e0f9e-6c0a-4b1e-9d31-2a6f0b1c7e11',
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
let evaluator;
|
|
105
|
+
try {
|
|
106
|
+
evaluator = await createAuthorizationEvaluator({ catalog, grants, identity });
|
|
107
|
+
} catch (error) {
|
|
108
|
+
if (!isAuthorizationCatalogStaleError(error)) {
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
evaluator = await createAuthorizationEvaluator({ catalog: await refetchCatalog(), grants, identity });
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
await evaluateRecord(evaluator, {
|
|
116
|
+
name: 'user_update',
|
|
117
|
+
realm: '4c8e0f9e-6c0a-4b1e-9d31-2a6f0b1c7e11',
|
|
118
|
+
data: { attributes: { name: 'alice' } },
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const canDelete = await reachesRecord(evaluator, { name: 'user_delete', realm: null });
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
- `catalog` and `grants` are validated, so you can pass the parsed response bodies as they are. A malformed document throws.
|
|
125
|
+
- A grant naming a permission or a policy the catalog lacks throws `AuthorizationCatalogStaleError`: your catalog is older than the grant. Refetch and build again.
|
|
126
|
+
- A definition the server could not project arrives with `policies: null`, and a policy tree your copy cannot project (an unknown type, a configuration its validator refuses) denies the permissions that use it. Neither throws, and other permissions are unaffected.
|
|
127
|
+
- Without an `identity` only definitions whose policies need no identity can pass. Grants without an identity are refused.
|
|
128
|
+
- Custom policy types need both halves: `createAuthorizationEvaluator(input, { validators, evaluators })`, each replacing the built-in registry (spread `PolicyDefaultValidators` / `PolicyDefaultEvaluators` to extend it).
|
|
129
|
+
|
|
130
|
+
### Check one record
|
|
131
|
+
|
|
132
|
+
`evaluateRecord`, `evaluateRecordOneOf`, `reachesRecord`, `reachesRecordOneOf` and `evaluateRecordUpdate` take the record's realm explicitly:
|
|
133
|
+
|
|
134
|
+
| `realm` | Means |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `'<realm id>'` | A row of that realm |
|
|
137
|
+
| `null` | A global row |
|
|
138
|
+
| `['<id>', null]` | A row spanning several realms; every one must be reached |
|
|
139
|
+
| `undefined` | Throws: a missing realm is a bug, never "global" |
|
|
140
|
+
|
|
141
|
+
- `data` is a `PolicyData` or a plain record and must not carry `realmMatch` itself; the helper sets it from `realm`. It is cloned, never written to.
|
|
142
|
+
- `reachesRecord*` returns `false` for a `PermissionError` and rethrows anything else.
|
|
143
|
+
- `evaluateRecordUpdate(evaluator, { name, current, next })` evaluates the stored row and the updated row, so an update can neither move a row into reach nor out of it.
|
|
144
|
+
- `hasUnboundedReach(evaluator, name)` is true when `compile` answers `allow`: an `any` grant with no narrowing policy.
|
|
145
|
+
|
|
146
|
+
### Use the batch check answer
|
|
147
|
+
|
|
148
|
+
A public client (a browser app) holds no secret, so it cannot read the catalog. It asks `POST /authorization/check` for its own verdicts instead and gates its UI with them:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { createAuthorizationCheckEvaluator, reachesRecord } from '@authup/access';
|
|
152
|
+
|
|
153
|
+
declare const permissions: unknown; // the response body
|
|
154
|
+
|
|
155
|
+
const evaluator = await createAuthorizationCheckEvaluator({
|
|
156
|
+
permissions,
|
|
157
|
+
identity: {
|
|
158
|
+
type: 'user',
|
|
159
|
+
id: '7c9e6679-7425-40de-944b-e07fc1f099d6',
|
|
160
|
+
realmId: '4c8e0f9e-6c0a-4b1e-9d31-2a6f0b1c7e11',
|
|
161
|
+
realmName: 'acme',
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const canEdit = await reachesRecord(evaluator, { name: 'user_update', realm: 'acme' });
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The answer lists each permission with the realms it holds in; a missing entry is a denial. A record realm matches its own entry, or the identity's own realm by id or by name. A realm the request did not ask about denies. The result is an upper bound: the server still decides each row.
|
|
169
|
+
|
|
170
|
+
## Realm reach
|
|
171
|
+
|
|
172
|
+
| `realmScope` | Reaches |
|
|
173
|
+
|---|---|
|
|
174
|
+
| `none` | Nothing |
|
|
175
|
+
| `own` (default) | Rows of the identity's own realm |
|
|
176
|
+
| `ownOrNull` | Own realm and global rows (`realm: null`) |
|
|
177
|
+
| `any` | Every realm and global rows |
|
|
178
|
+
|
|
179
|
+
A grant without a `realmScope` is `own`. An identity without a realm reaches nothing below `any`.
|
|
180
|
+
|
|
181
|
+
## Policy types
|
|
182
|
+
|
|
183
|
+
| `BuiltInPolicyType` | Value | Decides on |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| `ATTRIBUTES` | `attributes` | A MongoDB-style `query` over the `attributes` data |
|
|
186
|
+
| `ATTRIBUTE_NAMES` | `attributeNames` | Which field `names` the data may carry (with `invert`, a denylist) |
|
|
187
|
+
| `IDENTITY` | `identity` | The identity's `types` (`user`, `client`) |
|
|
188
|
+
| `REALM_MATCH` | `realmMatch` | The record realm against the identity's realm |
|
|
189
|
+
| `DATE` | `date` | A `start` / `end` date window |
|
|
190
|
+
| `TIME` | `time` | A `start` / `end` time of day (`HH:MM`), optionally limited by `interval` with `dayOfWeek`, `dayOfMonth` or `dayOfYear` |
|
|
191
|
+
| `COMPOSITE` | `composite` | Its `children`, combined `unanimous`, `affirmative` or `consensus` |
|
|
192
|
+
| `PERMISSION_BINDING` | `permissionBinding` | Whether the identity holds a grant that reaches the record |
|
|
193
|
+
|
|
194
|
+
Every policy accepts `invert`. Policy data is a `PolicyData` bag keyed by the type names (`attributes`, `identity`, `realmMatch`, ...); `definePolicyData` builds one with the well-known keys type-checked.
|
|
195
|
+
|
|
196
|
+
## API
|
|
197
|
+
|
|
198
|
+
| Export | Kind | Purpose |
|
|
199
|
+
|---|---|---|
|
|
200
|
+
| `PermissionEvaluator`, `IPermissionEvaluator` | class, interface | `evaluate`, `evaluateOneOf`, `preEvaluate`, `preEvaluateOneOf`, `compile` |
|
|
201
|
+
| `PermissionMemoryProvider`, `IPermissionProvider` | class, interface | Where an evaluator looks permission definitions up |
|
|
202
|
+
| `evaluateRecord`, `evaluateRecordOneOf`, `reachesRecord`, `reachesRecordOneOf`, `evaluateRecordUpdate`, `hasUnboundedReach` | function | Single-record checks with an explicit realm |
|
|
203
|
+
| `createAuthorizationEvaluator` | function | An evaluator over the catalog, the introspected grants and the identity |
|
|
204
|
+
| `createAuthorizationCheckEvaluator` | function | An evaluator over the batch check answer |
|
|
205
|
+
| `AuthorizationCatalogStaleError`, `isAuthorizationCatalogStaleError` | class, function | The refetch signal |
|
|
206
|
+
| `projectAuthorizationPolicy`, `AUTHORIZATION_POLICY_WITHHELD_TYPE` | function, const | The wire projection of a policy tree, and the node type the server sends in place of a tree the caller may not read |
|
|
207
|
+
| `AuthorizationCatalog`, `AuthorizationGrant`, `AuthorizationCheckPermissions`, `authorizationCatalogSchema`, ... | type, schema | Wire types and their zod schemas |
|
|
208
|
+
| `PolicyEngine`, `IPolicyEngine`, `IPolicyEvaluator` | class, interface | Evaluate a policy tree; `registerEvaluator(type, evaluator)` adds a type |
|
|
209
|
+
| `PolicyDefaultEvaluators`, `PolicyDefaultValidators` | const | The built-in registries |
|
|
210
|
+
| `BuiltInPolicyType`, `SystemPolicyName` | enum, const | Policy type names; the names of the provisioned system policies (`system.default`, ...) |
|
|
211
|
+
| `<Type>Policy`, `<Type>PolicyEvaluator`, `<Type>PolicyValidator` | type, class | One trio per built-in policy type |
|
|
212
|
+
| `IdentityPermissionBindingPolicyEvaluator` | class | Decides `permissionBinding` from the grants carried on the identity data |
|
|
213
|
+
| `PolicyData`, `definePolicyData`, `PolicyInput`, `IdentityPolicyData` | class, function, type | The evaluation data bag |
|
|
214
|
+
| `RealmScope`, `realmScopeMatches`, `normalizeRealmScope`, `compareRealmScope`, `minRealmScope`, `maxRealmScope` | enum, function | Realm reach |
|
|
215
|
+
| `aggregatePermissionPolicyBindings`, `grantDominates`, `buildPermissionKey` | function | Grant aggregation and comparison |
|
|
216
|
+
| `PermissionError`, `PolicyError`, `isPermissionError`, `isPolicyError` | class, function | Errors (both extend `AuthupError` from `@authup/errors`) |
|
|
217
|
+
| `createPolicyTransitionCollector`, `PolicyTransitionSink` | function, type | Collect the instant at which a `date` or `time` verdict could change |
|
|
218
|
+
|
|
219
|
+
## Notes
|
|
220
|
+
|
|
221
|
+
- **Realm reach is enforced by the `permissionBinding` policy.** A `PermissionEvaluator` over `PermissionMemoryProvider` ignores a binding's `realmScope`, and its default `permissionBinding` evaluator always passes. `createAuthorizationEvaluator` wires `IdentityPermissionBindingPolicyEvaluator`, and Authup binds `system.default` (which contains a `permissionBinding` policy) to every permission it creates, so that is where reach is checked. Build from the catalog when reach matters.
|
|
222
|
+
- **Identity data uses UUIDs.** The identity data validator checks `id`, `clientId` and `realmId` as UUIDs; any other value makes every `identity` policy fail.
|
|
223
|
+
- **`compile` can answer `post`.** That means the decision cannot be expressed as a query condition; evaluate every candidate row before you page, or the page and its total are wrong.
|
|
224
|
+
- **Each `PolicyEngine` owns its evaluator map.** The constructor copies the map, so `registerEvaluator` on one engine never reaches another.
|
|
225
|
+
|
|
226
|
+
## License
|
|
227
|
+
|
|
228
|
+
Made with 💚
|
|
229
|
+
|
|
230
|
+
Published under the [Apache 2.0 License](./LICENSE).
|
package/dist/index.d.mts
CHANGED
|
@@ -895,6 +895,81 @@ export declare class PermissionEvaluator implements IPermissionEvaluator {
|
|
|
895
895
|
compile(ctx: PermissionCompileContext): Promise<PermissionCompileResult>;
|
|
896
896
|
}
|
|
897
897
|
//#endregion
|
|
898
|
+
//#region src/permission/record/types.d.ts
|
|
899
|
+
/**
|
|
900
|
+
* The realm of the record a check is evaluated against: a realm id, `null`
|
|
901
|
+
* for a global row, or a list of either when every listed realm must be
|
|
902
|
+
* reached.
|
|
903
|
+
*/
|
|
904
|
+
export type RecordRealm = string | null | (string | null)[];
|
|
905
|
+
/** One record a single-record check is evaluated against. */
|
|
906
|
+
export type RecordTarget = {
|
|
907
|
+
/**
|
|
908
|
+
* The RECORD's realm (`null` = global row), or the target realm on
|
|
909
|
+
* create. This is what each grant's `realm_scope` is matched against.
|
|
910
|
+
* It is distinct from `PermissionEvaluationContext.realmId`, which is the
|
|
911
|
+
* realm the PERMISSION is bound to. Required: `undefined` throws, so a
|
|
912
|
+
* caller cannot drop the realm by omission and neutral-pass every grant's
|
|
913
|
+
* `realm_scope`.
|
|
914
|
+
*/
|
|
915
|
+
realm: RecordRealm;
|
|
916
|
+
/**
|
|
917
|
+
* The policy data the record is evaluated with: the row under
|
|
918
|
+
* `attributes` (for attribute policies on the grant; never synthesized,
|
|
919
|
+
* so without it an attribute policy stays pending), an identity, a custom
|
|
920
|
+
* key. Never mutated; must not carry `realmMatch`, which is set from
|
|
921
|
+
* `realm`.
|
|
922
|
+
*/
|
|
923
|
+
data?: PolicyData | PolicyInput;
|
|
924
|
+
};
|
|
925
|
+
export type RecordEvaluationContext = RecordTarget & {
|
|
926
|
+
name: string | string[];
|
|
927
|
+
options?: PermissionEvaluationOptions;
|
|
928
|
+
};
|
|
929
|
+
export type RecordUpdateEvaluationContext = {
|
|
930
|
+
name: string | string[];
|
|
931
|
+
options?: PermissionEvaluationOptions;
|
|
932
|
+
/** The stored row: the actor must reach it to change it at all. */
|
|
933
|
+
current: RecordTarget;
|
|
934
|
+
/** The updated row: it must stay in reach afterwards. */
|
|
935
|
+
next: RecordTarget;
|
|
936
|
+
};
|
|
937
|
+
//#endregion
|
|
938
|
+
//#region src/permission/record/module.d.ts
|
|
939
|
+
/**
|
|
940
|
+
* Throws a permission error unless `name` passes for the record: each grant's
|
|
941
|
+
* `realm_scope` is matched against the record's realm and its policies are
|
|
942
|
+
* evaluated against the record. An array of names must ALL pass, like
|
|
943
|
+
* `evaluate()`.
|
|
944
|
+
*/
|
|
945
|
+
export declare function evaluateRecord(evaluator: IPermissionEvaluator, ctx: RecordEvaluationContext): Promise<void>;
|
|
946
|
+
/** {@link evaluateRecord} where ANY of the names suffices, like `evaluateOneOf()`. */
|
|
947
|
+
export declare function evaluateRecordOneOf(evaluator: IPermissionEvaluator, ctx: RecordEvaluationContext): Promise<void>;
|
|
948
|
+
/**
|
|
949
|
+
* {@link evaluateRecord} as a predicate. Only a permission error reads as
|
|
950
|
+
* `false`; anything else propagates, so a failure on the authorization path
|
|
951
|
+
* never turns into a quiet "not authorized".
|
|
952
|
+
*/
|
|
953
|
+
export declare function reachesRecord(evaluator: IPermissionEvaluator, ctx: RecordEvaluationContext): Promise<boolean>;
|
|
954
|
+
/** {@link evaluateRecordOneOf} as a predicate, like {@link reachesRecord}. */
|
|
955
|
+
export declare function reachesRecordOneOf(evaluator: IPermissionEvaluator, ctx: RecordEvaluationContext): Promise<boolean>;
|
|
956
|
+
/**
|
|
957
|
+
* An update passes only when `name` passes for BOTH the stored row (the actor
|
|
958
|
+
* may only change a row it can already reach) and the updated row (the row
|
|
959
|
+
* must stay in reach afterwards). Evaluating the updated row alone lets an
|
|
960
|
+
* update move a row INTO reach.
|
|
961
|
+
*/
|
|
962
|
+
export declare function evaluateRecordUpdate(evaluator: IPermissionEvaluator, ctx: RecordUpdateEvaluationContext): Promise<void>;
|
|
963
|
+
/**
|
|
964
|
+
* Whether a grant of `name` (any of, for an array) reaches every realm with
|
|
965
|
+
* no narrowing policy, i.e. `realm_scope: any`. Reads the `compile()`
|
|
966
|
+
* verdict, so it relies on the binding policy (`system.default`) being bound
|
|
967
|
+
* to the permission: without it a grant's reach is never evaluated and any
|
|
968
|
+
* grant compiles to `allow`. Fail-closed: a policy-bearing `any` grant
|
|
969
|
+
* compiles to `conditional` and reads as `false`.
|
|
970
|
+
*/
|
|
971
|
+
export declare function hasUnboundedReach(evaluator: IPermissionEvaluator, name: string | string[]): Promise<boolean>;
|
|
972
|
+
//#endregion
|
|
898
973
|
//#region src/permission/authorization/error.d.ts
|
|
899
974
|
export declare const AUTHORIZATION_CATALOG_STALE_ERROR_INSTANCE: unique symbol;
|
|
900
975
|
/**
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/policy/data.ts","../src/policy/evaluation/context/types.ts","../src/policy/evaluation/context/define.ts","../src/policy/evaluation/context/transition.ts","../src/policy/evaluation/types.ts","../src/policy/types.ts","../src/policy/engine/types.ts","../src/policy/engine/module.ts","../src/policy/issue/constants.ts","../src/policy/issue/types.ts","../src/policy/issue/define.ts","../src/policy/error/module.ts","../src/policy/error/check.ts","../src/policy/helpers/invert.ts","../src/policy/built-in/attribute-names/types.ts","../src/policy/built-in/attribute-names/validator.ts","../src/policy/built-in/attributes/types.ts","../src/policy/built-in/attributes/define.ts","../src/policy/built-in/attributes/validator.ts","../src/policy/built-in/attributes/evaluator.ts","../src/policy/built-in/attribute-names/evaluator.ts","../src/policy/built-in/composite/types.ts","../src/policy/built-in/composite/validator.ts","../src/policy/built-in/composite/evaluator.ts","../src/policy/built-in/composite/helper.ts","../src/policy/built-in/date/types.ts","../src/policy/built-in/date/validator.ts","../src/policy/built-in/date/evaluator.ts","../src/permission/realm-scope/constants.ts","../src/permission/realm-scope/helpers.ts","../src/permission/types.ts","../src/policy/built-in/identity/types.ts","../src/policy/built-in/identity/data/validator.ts","../src/policy/built-in/identity/validator.ts","../src/policy/built-in/identity/evaluator.ts","../src/policy/built-in/realm-match/types.ts","../src/policy/built-in/realm-match/validator.ts","../src/policy/built-in/realm-match/evaluator.ts","../src/policy/built-in/permission-binding/types.ts","../src/policy/built-in/permission-binding/validator.ts","../src/policy/built-in/permission-binding/identity-evaluator.ts","../src/policy/built-in/permission-binding/module.ts","../src/policy/built-in/time/constants.ts","../src/policy/built-in/time/types.ts","../src/policy/built-in/time/validator.ts","../src/policy/built-in/time/evaluator.ts","../src/policy/built-in/time/helpers.ts","../src/policy/built-in/constants.ts","../src/policy/built-in/types.ts","../src/policy/built-in/define.ts","../src/policy/constants.ts","../src/policy/input.ts","../src/permission/error/module.ts","../src/permission/error/check.ts","../src/permission/helpers/aggregate.ts","../src/permission/helpers/equal.ts","../src/permission/helpers/grant.ts","../src/permission/helpers/key.ts","../src/permission/provider/types.ts","../src/permission/provider/memory.ts","../src/permission/evaluator/types.ts","../src/permission/evaluator/module.ts","../src/permission/authorization/error.ts","../src/permission/authorization/check.ts","../src/permission/authorization/types.ts","../src/permission/authorization/check-schema.ts","../src/permission/authorization/constants.ts","../src/permission/authorization/module.ts","../src/permission/authorization/policy.ts","../src/permission/authorization/schema.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/policy/data.ts","../src/policy/evaluation/context/types.ts","../src/policy/evaluation/context/define.ts","../src/policy/evaluation/context/transition.ts","../src/policy/evaluation/types.ts","../src/policy/types.ts","../src/policy/engine/types.ts","../src/policy/engine/module.ts","../src/policy/issue/constants.ts","../src/policy/issue/types.ts","../src/policy/issue/define.ts","../src/policy/error/module.ts","../src/policy/error/check.ts","../src/policy/helpers/invert.ts","../src/policy/built-in/attribute-names/types.ts","../src/policy/built-in/attribute-names/validator.ts","../src/policy/built-in/attributes/types.ts","../src/policy/built-in/attributes/define.ts","../src/policy/built-in/attributes/validator.ts","../src/policy/built-in/attributes/evaluator.ts","../src/policy/built-in/attribute-names/evaluator.ts","../src/policy/built-in/composite/types.ts","../src/policy/built-in/composite/validator.ts","../src/policy/built-in/composite/evaluator.ts","../src/policy/built-in/composite/helper.ts","../src/policy/built-in/date/types.ts","../src/policy/built-in/date/validator.ts","../src/policy/built-in/date/evaluator.ts","../src/permission/realm-scope/constants.ts","../src/permission/realm-scope/helpers.ts","../src/permission/types.ts","../src/policy/built-in/identity/types.ts","../src/policy/built-in/identity/data/validator.ts","../src/policy/built-in/identity/validator.ts","../src/policy/built-in/identity/evaluator.ts","../src/policy/built-in/realm-match/types.ts","../src/policy/built-in/realm-match/validator.ts","../src/policy/built-in/realm-match/evaluator.ts","../src/policy/built-in/permission-binding/types.ts","../src/policy/built-in/permission-binding/validator.ts","../src/policy/built-in/permission-binding/identity-evaluator.ts","../src/policy/built-in/permission-binding/module.ts","../src/policy/built-in/time/constants.ts","../src/policy/built-in/time/types.ts","../src/policy/built-in/time/validator.ts","../src/policy/built-in/time/evaluator.ts","../src/policy/built-in/time/helpers.ts","../src/policy/built-in/constants.ts","../src/policy/built-in/types.ts","../src/policy/built-in/define.ts","../src/policy/constants.ts","../src/policy/input.ts","../src/permission/error/module.ts","../src/permission/error/check.ts","../src/permission/helpers/aggregate.ts","../src/permission/helpers/equal.ts","../src/permission/helpers/grant.ts","../src/permission/helpers/key.ts","../src/permission/provider/types.ts","../src/permission/provider/memory.ts","../src/permission/evaluator/types.ts","../src/permission/evaluator/module.ts","../src/permission/record/types.ts","../src/permission/record/module.ts","../src/permission/authorization/error.ts","../src/permission/authorization/check.ts","../src/permission/authorization/types.ts","../src/permission/authorization/check-schema.ts","../src/permission/authorization/constants.ts","../src/permission/authorization/module.ts","../src/permission/authorization/policy.ts","../src/permission/authorization/schema.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1715,6 +1715,105 @@ var PermissionEvaluator = class {
|
|
|
1715
1715
|
}
|
|
1716
1716
|
};
|
|
1717
1717
|
//#endregion
|
|
1718
|
+
//#region src/permission/record/module.ts
|
|
1719
|
+
function describeName(name) {
|
|
1720
|
+
return Array.isArray(name) ? name.join(", ") : name;
|
|
1721
|
+
}
|
|
1722
|
+
/**
|
|
1723
|
+
* An IPolicyData that is not this package's PolicyData (another
|
|
1724
|
+
* implementation, or a second copy of the package). Spreading one as a record
|
|
1725
|
+
* would keep only its internal fields and drop every key it carries.
|
|
1726
|
+
*/
|
|
1727
|
+
function isPolicyDataLike(input) {
|
|
1728
|
+
return isObject(input) && typeof input.has === "function" && typeof input.get === "function" && typeof input.clone === "function";
|
|
1729
|
+
}
|
|
1730
|
+
/**
|
|
1731
|
+
* A fresh policy data bag for one record: the caller's data is cloned, never
|
|
1732
|
+
* written to, so one bag can be reused across records.
|
|
1733
|
+
*/
|
|
1734
|
+
function buildRecordData(name, target) {
|
|
1735
|
+
if (typeof target.realm === "undefined") throw new Error(`The record realm for permission ${describeName(name)} is undefined.`);
|
|
1736
|
+
let data;
|
|
1737
|
+
if (target.data instanceof PolicyData) data = target.data.clone();
|
|
1738
|
+
else if (isPolicyDataLike(target.data)) throw new Error(`The policy data for permission ${describeName(name)} must be a PolicyData instance of this package or a plain record.`);
|
|
1739
|
+
else data = new PolicyData({ ...target.data || {} });
|
|
1740
|
+
if (data.has("realmMatch")) throw new Error(`The policy data for permission ${describeName(name)} must not carry realmMatch.`);
|
|
1741
|
+
data.set("realmMatch", target.realm);
|
|
1742
|
+
return data;
|
|
1743
|
+
}
|
|
1744
|
+
function buildEvaluationContext(ctx) {
|
|
1745
|
+
return {
|
|
1746
|
+
name: ctx.name,
|
|
1747
|
+
data: buildRecordData(ctx.name, ctx),
|
|
1748
|
+
options: ctx.options
|
|
1749
|
+
};
|
|
1750
|
+
}
|
|
1751
|
+
/**
|
|
1752
|
+
* Throws a permission error unless `name` passes for the record: each grant's
|
|
1753
|
+
* `realm_scope` is matched against the record's realm and its policies are
|
|
1754
|
+
* evaluated against the record. An array of names must ALL pass, like
|
|
1755
|
+
* `evaluate()`.
|
|
1756
|
+
*/
|
|
1757
|
+
async function evaluateRecord(evaluator, ctx) {
|
|
1758
|
+
await evaluator.evaluate(buildEvaluationContext(ctx));
|
|
1759
|
+
}
|
|
1760
|
+
/** {@link evaluateRecord} where ANY of the names suffices, like `evaluateOneOf()`. */
|
|
1761
|
+
async function evaluateRecordOneOf(evaluator, ctx) {
|
|
1762
|
+
await evaluator.evaluateOneOf(buildEvaluationContext(ctx));
|
|
1763
|
+
}
|
|
1764
|
+
async function asPredicate(fn) {
|
|
1765
|
+
try {
|
|
1766
|
+
await fn();
|
|
1767
|
+
return true;
|
|
1768
|
+
} catch (error) {
|
|
1769
|
+
if (isPermissionError(error)) return false;
|
|
1770
|
+
throw error;
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
/**
|
|
1774
|
+
* {@link evaluateRecord} as a predicate. Only a permission error reads as
|
|
1775
|
+
* `false`; anything else propagates, so a failure on the authorization path
|
|
1776
|
+
* never turns into a quiet "not authorized".
|
|
1777
|
+
*/
|
|
1778
|
+
async function reachesRecord(evaluator, ctx) {
|
|
1779
|
+
return asPredicate(() => evaluateRecord(evaluator, ctx));
|
|
1780
|
+
}
|
|
1781
|
+
/** {@link evaluateRecordOneOf} as a predicate, like {@link reachesRecord}. */
|
|
1782
|
+
async function reachesRecordOneOf(evaluator, ctx) {
|
|
1783
|
+
return asPredicate(() => evaluateRecordOneOf(evaluator, ctx));
|
|
1784
|
+
}
|
|
1785
|
+
/**
|
|
1786
|
+
* An update passes only when `name` passes for BOTH the stored row (the actor
|
|
1787
|
+
* may only change a row it can already reach) and the updated row (the row
|
|
1788
|
+
* must stay in reach afterwards). Evaluating the updated row alone lets an
|
|
1789
|
+
* update move a row INTO reach.
|
|
1790
|
+
*/
|
|
1791
|
+
async function evaluateRecordUpdate(evaluator, ctx) {
|
|
1792
|
+
await evaluateRecord(evaluator, {
|
|
1793
|
+
realm: ctx.current.realm,
|
|
1794
|
+
data: ctx.current.data,
|
|
1795
|
+
name: ctx.name,
|
|
1796
|
+
options: ctx.options
|
|
1797
|
+
});
|
|
1798
|
+
await evaluateRecord(evaluator, {
|
|
1799
|
+
realm: ctx.next.realm,
|
|
1800
|
+
data: ctx.next.data,
|
|
1801
|
+
name: ctx.name,
|
|
1802
|
+
options: ctx.options
|
|
1803
|
+
});
|
|
1804
|
+
}
|
|
1805
|
+
/**
|
|
1806
|
+
* Whether a grant of `name` (any of, for an array) reaches every realm with
|
|
1807
|
+
* no narrowing policy, i.e. `realm_scope: any`. Reads the `compile()`
|
|
1808
|
+
* verdict, so it relies on the binding policy (`system.default`) being bound
|
|
1809
|
+
* to the permission: without it a grant's reach is never evaluated and any
|
|
1810
|
+
* grant compiles to `allow`. Fail-closed: a policy-bearing `any` grant
|
|
1811
|
+
* compiles to `conditional` and reads as `false`.
|
|
1812
|
+
*/
|
|
1813
|
+
async function hasUnboundedReach(evaluator, name) {
|
|
1814
|
+
return (await evaluator.compile({ name })).verdict === "allow";
|
|
1815
|
+
}
|
|
1816
|
+
//#endregion
|
|
1718
1817
|
//#region src/permission/authorization/error.ts
|
|
1719
1818
|
const AUTHORIZATION_CATALOG_STALE_ERROR_INSTANCE = Symbol.for("@authup/access/AuthorizationCatalogStaleError");
|
|
1720
1819
|
/**
|
|
@@ -2294,6 +2393,6 @@ async function createAuthorizationCheckEvaluator(input) {
|
|
|
2294
2393
|
};
|
|
2295
2394
|
}
|
|
2296
2395
|
//#endregion
|
|
2297
|
-
export { AUTHORIZATION_CATALOG_STALE_ERROR_INSTANCE, AUTHORIZATION_POLICY_WITHHELD_TYPE, AttributeNamesPolicyEvaluator, AttributeNamesPolicyValidator, AttributesPolicyEvaluator, AttributesPolicyValidator, AuthorizationCatalogStaleError, AuthorizationCheckEvaluatorInputValidator, AuthorizationEvaluatorInputValidator, BuiltInPolicyType, CompositePolicyEvaluator, CompositePolicyValidator, DatePolicyEvaluator, DatePolicyValidator, IdentityPermissionBindingPolicyEvaluator, IdentityPolicyEvaluator, IdentityPolicyValidator, PERMISSION_ERROR_INSTANCE, POLICY_ERROR_INSTANCE, PermissionBindingPolicyEvaluator, PermissionBindingPolicyValidator, PermissionError, PermissionEvaluator, PermissionMemoryProvider, PolicyData, PolicyDefaultEvaluators, PolicyDefaultValidators, PolicyEngine, PolicyError, PolicyIssueCode, PolicyIssueSeverity, REALM_SCOPE_ORDER, RealmMatchPolicyEvaluator, RealmMatchPolicyValidator, RealmScope, SystemPolicyName, TimePolicyEvaluator, TimePolicyInterval, TimePolicyValidator, aggregatePermissionPolicyBindings, authorizationCatalogSchema, authorizationCheckPermissionSchema, authorizationCheckPermissionsSchema, authorizationDefinitionSchema, authorizationGrantSchema, authorizationIdentitySchema, authorizationPolicySchema, buildPermissionKey, compareRealmScope, containsBindingCheck, createAuthorizationCheckEvaluator, createAuthorizationEvaluator, createPolicyTransitionCollector, defineAttributesPolicy, definePolicyData, definePolicyEvaluationContext, definePolicyIssueGroup, definePolicyIssueItem, definePolicyWithType, grantDominates, isAuthorizationCatalogStaleError, isCompositePolicy, isIntervalForDayOfMonth, isIntervalForDayOfWeek, isIntervalForDayOfYear, isPermissionError, isPermissionPolicyBindingEqual, isPolicyError, maxRealmScope, maybeInvertPolicyOutcome, minRealmScope, normalizeRealmScope, parseAuthorizationCheckEvaluatorInput, parseAuthorizationEvaluatorInput, projectAuthorizationPolicy, realmScopeMatches };
|
|
2396
|
+
export { AUTHORIZATION_CATALOG_STALE_ERROR_INSTANCE, AUTHORIZATION_POLICY_WITHHELD_TYPE, AttributeNamesPolicyEvaluator, AttributeNamesPolicyValidator, AttributesPolicyEvaluator, AttributesPolicyValidator, AuthorizationCatalogStaleError, AuthorizationCheckEvaluatorInputValidator, AuthorizationEvaluatorInputValidator, BuiltInPolicyType, CompositePolicyEvaluator, CompositePolicyValidator, DatePolicyEvaluator, DatePolicyValidator, IdentityPermissionBindingPolicyEvaluator, IdentityPolicyEvaluator, IdentityPolicyValidator, PERMISSION_ERROR_INSTANCE, POLICY_ERROR_INSTANCE, PermissionBindingPolicyEvaluator, PermissionBindingPolicyValidator, PermissionError, PermissionEvaluator, PermissionMemoryProvider, PolicyData, PolicyDefaultEvaluators, PolicyDefaultValidators, PolicyEngine, PolicyError, PolicyIssueCode, PolicyIssueSeverity, REALM_SCOPE_ORDER, RealmMatchPolicyEvaluator, RealmMatchPolicyValidator, RealmScope, SystemPolicyName, TimePolicyEvaluator, TimePolicyInterval, TimePolicyValidator, aggregatePermissionPolicyBindings, authorizationCatalogSchema, authorizationCheckPermissionSchema, authorizationCheckPermissionsSchema, authorizationDefinitionSchema, authorizationGrantSchema, authorizationIdentitySchema, authorizationPolicySchema, buildPermissionKey, compareRealmScope, containsBindingCheck, createAuthorizationCheckEvaluator, createAuthorizationEvaluator, createPolicyTransitionCollector, defineAttributesPolicy, definePolicyData, definePolicyEvaluationContext, definePolicyIssueGroup, definePolicyIssueItem, definePolicyWithType, evaluateRecord, evaluateRecordOneOf, evaluateRecordUpdate, grantDominates, hasUnboundedReach, isAuthorizationCatalogStaleError, isCompositePolicy, isIntervalForDayOfMonth, isIntervalForDayOfWeek, isIntervalForDayOfYear, isPermissionError, isPermissionPolicyBindingEqual, isPolicyError, maxRealmScope, maybeInvertPolicyOutcome, minRealmScope, normalizeRealmScope, parseAuthorizationCheckEvaluatorInput, parseAuthorizationEvaluatorInput, projectAuthorizationPolicy, reachesRecord, reachesRecordOneOf, realmScopeMatches };
|
|
2298
2397
|
|
|
2299
2398
|
//# sourceMappingURL=index.mjs.map
|