@venizia/ignis 0.1.1-5 → 0.1.1-6
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/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.js +8 -1
- package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts +83 -47
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js +318 -184
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +1 -1
- package/dist/components/auth/authorize/adapters/types.d.ts +9 -6
- package/dist/components/auth/authorize/adapters/types.d.ts.map +1 -1
- package/dist/components/auth/authorize/builders/grant.builder.d.ts +72 -0
- package/dist/components/auth/authorize/builders/grant.builder.d.ts.map +1 -0
- package/dist/components/auth/authorize/builders/grant.builder.js +229 -0
- package/dist/components/auth/authorize/builders/grant.builder.js.map +1 -0
- package/dist/components/auth/authorize/builders/index.d.ts +4 -0
- package/dist/components/auth/authorize/builders/index.d.ts.map +1 -0
- package/dist/components/auth/authorize/builders/index.js +20 -0
- package/dist/components/auth/authorize/builders/index.js.map +1 -0
- package/dist/components/auth/authorize/{common/permission-builder.d.ts → builders/permission.builder.d.ts} +8 -2
- package/dist/components/auth/authorize/builders/permission.builder.d.ts.map +1 -0
- package/dist/components/auth/authorize/{common/permission-builder.js → builders/permission.builder.js} +16 -2
- package/dist/components/auth/authorize/builders/permission.builder.js.map +1 -0
- package/dist/components/auth/authorize/{common/policy-builder.d.ts → builders/policy.builder.d.ts} +31 -2
- package/dist/components/auth/authorize/builders/policy.builder.d.ts.map +1 -0
- package/dist/components/auth/authorize/{common/policy-builder.js → builders/policy.builder.js} +19 -2
- package/dist/components/auth/authorize/builders/policy.builder.js.map +1 -0
- package/dist/components/auth/authorize/common/constants.d.ts +7 -0
- package/dist/components/auth/authorize/common/constants.d.ts.map +1 -1
- package/dist/components/auth/authorize/common/constants.js +12 -1
- package/dist/components/auth/authorize/common/constants.js.map +1 -1
- package/dist/components/auth/authorize/common/index.d.ts +0 -5
- package/dist/components/auth/authorize/common/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/common/index.js +0 -5
- package/dist/components/auth/authorize/common/index.js.map +1 -1
- package/dist/components/auth/authorize/common/types.d.ts +20 -1
- package/dist/components/auth/authorize/common/types.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +6 -4
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/index.d.ts +1 -0
- package/dist/components/auth/authorize/enforcers/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/index.js +1 -0
- package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts +31 -0
- package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts.map +1 -0
- package/dist/components/auth/authorize/enforcers/resource-role-manager.js +124 -0
- package/dist/components/auth/authorize/enforcers/resource-role-manager.js.map +1 -0
- package/dist/components/auth/authorize/index.d.ts +1 -0
- package/dist/components/auth/authorize/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/index.js +1 -0
- package/dist/components/auth/authorize/index.js.map +1 -1
- package/dist/components/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
- package/dist/components/auth/authorize/providers/authorization.provider.js +2 -1
- package/dist/components/auth/authorize/providers/authorization.provider.js.map +1 -1
- package/dist/components/auth/authorize/providers/index.d.ts +1 -0
- package/dist/components/auth/authorize/providers/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/providers/index.js +1 -0
- package/dist/components/auth/authorize/providers/index.js.map +1 -1
- package/dist/components/auth/authorize/{common/resolve-request-domain.d.ts → providers/request-domain.d.ts} +2 -2
- package/dist/components/auth/authorize/providers/request-domain.d.ts.map +1 -0
- package/dist/components/auth/authorize/{common/resolve-request-domain.js → providers/request-domain.js} +2 -2
- package/dist/components/auth/authorize/providers/request-domain.js.map +1 -0
- package/dist/components/auth/models/entities/policy-definition.model.d.ts +2 -1
- package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
- package/dist/components/auth/models/entities/policy-definition.model.js +2 -0
- package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
- package/package.json +4 -4
- package/dist/components/auth/authorize/common/keys.d.ts +0 -6
- package/dist/components/auth/authorize/common/keys.d.ts.map +0 -1
- package/dist/components/auth/authorize/common/keys.js +0 -12
- package/dist/components/auth/authorize/common/keys.js.map +0 -1
- package/dist/components/auth/authorize/common/object-match.d.ts +0 -7
- package/dist/components/auth/authorize/common/object-match.d.ts.map +0 -1
- package/dist/components/auth/authorize/common/object-match.js +0 -19
- package/dist/components/auth/authorize/common/object-match.js.map +0 -1
- package/dist/components/auth/authorize/common/permission-builder.d.ts.map +0 -1
- package/dist/components/auth/authorize/common/permission-builder.js.map +0 -1
- package/dist/components/auth/authorize/common/policy-builder.d.ts.map +0 -1
- package/dist/components/auth/authorize/common/policy-builder.js.map +0 -1
- package/dist/components/auth/authorize/common/resolve-request-domain.d.ts.map +0 -1
- package/dist/components/auth/authorize/common/resolve-request-domain.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-filtered.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"base-filtered.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAY,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEhG;;;GAGG;AACH,8BAAsB,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CACrE,SAAQ,UACR,YAAW,eAAe;IAE1B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;gBAEvC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,mBAAmB,CAAA;KAAE;IAKpE,SAAS,KAAK,SAAS,IAAI,sBAAsB,CAYhD;IAED;;;OAGG;cACa,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,SAAS,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKtE,mGAAmG;IACnG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzE,UAAU,IAAI,OAAO;IAKf,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAC3B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAG9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAC1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAC7B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3C,+FAA+F;cAC/E,SAAS,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAMlF"}
|
|
@@ -13,7 +13,14 @@ class BaseFilteredAdapter extends ignis_helpers_1.BaseHelper {
|
|
|
13
13
|
this.dataSource = opts.dataSource;
|
|
14
14
|
}
|
|
15
15
|
get connector() {
|
|
16
|
-
|
|
16
|
+
const source = this.dataSource;
|
|
17
|
+
const resolved = source.getConnector?.() ?? source.connector;
|
|
18
|
+
if (!resolved) {
|
|
19
|
+
throw (0, ignis_helpers_1.getError)({
|
|
20
|
+
message: '[BaseFilteredAdapter] datasource exposes neither a getConnector() accessor nor a wired connector - pass a datasource whose getConnector() lazily wires the driver.',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return resolved;
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* Runs a raw statement and returns its rows. Drizzle's `execute()` shape differs per driver
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-filtered.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"base-filtered.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAC7C,0DAA8D;AAK9D;;;GAGG;AACH,MAAsB,mBACpB,SAAQ,0BAAU;IAKlB,YAAY,IAAwD;QAClE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,IAAc,SAAS;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC;QAE7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EACL,oKAAoK;aACvK,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,KAAK,CAAO,IAAwB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,OAAO,IAAA,0BAAc,EAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAKD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,UAAU,KAAmB,CAAC;IACpC,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,SAAS,KAAmB,CAAC;IACnC,KAAK,CAAC,YAAY,KAAmB,CAAC;IACtC,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAE9C,+FAA+F;IACrF,KAAK,CAAC,SAAS,CAAC,IAAuC;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAzDD,kDAyDC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { IdType } from '../../../../base';
|
|
2
|
+
import type { TConstValue, TNullable } from '@venizia/ignis-helpers';
|
|
2
3
|
import { type Model } from 'casbin';
|
|
3
4
|
import { type SQL } from 'drizzle-orm';
|
|
5
|
+
import { type TCustomGrantMetadata } from '../common';
|
|
4
6
|
import { BaseFilteredAdapter } from './base-filtered';
|
|
5
7
|
import type { ICasbinPolicySource, IScopedCasbinEntities } from './types';
|
|
6
8
|
export interface IScopedCasbinPolicyFilter {
|
|
@@ -9,6 +11,30 @@ export interface IScopedCasbinPolicyFilter {
|
|
|
9
11
|
id: IdType;
|
|
10
12
|
};
|
|
11
13
|
}
|
|
14
|
+
/** A grant row as fetched, before it becomes casbin lines. Permission columns are null when the join misses. */
|
|
15
|
+
export type TGrantRow = {
|
|
16
|
+
subjectId: IdType;
|
|
17
|
+
objectCode: TNullable<string>;
|
|
18
|
+
objectSubject: TNullable<string>;
|
|
19
|
+
objectMethod: TNullable<string>;
|
|
20
|
+
action: TNullable<string>;
|
|
21
|
+
effect: TNullable<string>;
|
|
22
|
+
domain: TNullable<string>;
|
|
23
|
+
metadata?: unknown;
|
|
24
|
+
};
|
|
25
|
+
export declare class PrincipalPolicyEdges {
|
|
26
|
+
static readonly DIRECT = "direct";
|
|
27
|
+
static readonly ROLE_EDGE = "roleEdge";
|
|
28
|
+
static readonly ROLE_GRANT = "roleGrant";
|
|
29
|
+
static readonly DOMAIN_EDGE = "domainEdge";
|
|
30
|
+
}
|
|
31
|
+
/** A row from the single principal-policy statement; `kind` says which branch produced it. */
|
|
32
|
+
export type TPrincipalPolicyRow = TGrantRow & {
|
|
33
|
+
kind: TConstValue<typeof PrincipalPolicyEdges>;
|
|
34
|
+
variant: string;
|
|
35
|
+
targetType: TNullable<string>;
|
|
36
|
+
targetId: IdType;
|
|
37
|
+
};
|
|
12
38
|
/**
|
|
13
39
|
* Filtered casbin adapter for the scoped RBAC model: loads ONE principal's edges (role assignments,
|
|
14
40
|
* memberships, grants) plus the shared structural hierarchy trees as casbin lines. Read-only.
|
|
@@ -20,10 +46,20 @@ export declare class ScopedCasbinAdapter extends BaseFilteredAdapter<IScopedCasb
|
|
|
20
46
|
entities: IScopedCasbinEntities;
|
|
21
47
|
});
|
|
22
48
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
49
|
+
* One wave: the principal-scoped CTE and the merged structural-edges query are issued together.
|
|
50
|
+
* The role closure is resolved in SQL, so nothing here waits on a previous query's result.
|
|
25
51
|
*/
|
|
26
52
|
loadFilteredPolicy(model: Model, filter: IScopedCasbinPolicyFilter): Promise<void>;
|
|
53
|
+
/** Route one `direct` row to its casbin line, or to the grant batch. */
|
|
54
|
+
protected collectDirectRow(opts: {
|
|
55
|
+
row: TPrincipalPolicyRow;
|
|
56
|
+
principal: {
|
|
57
|
+
type: string;
|
|
58
|
+
id: IdType;
|
|
59
|
+
};
|
|
60
|
+
lines: string[];
|
|
61
|
+
directGrants: TGrantRow[];
|
|
62
|
+
}): void;
|
|
27
63
|
/** Schema for a table, defaulting to `public`. */
|
|
28
64
|
protected schemaOf(table: {
|
|
29
65
|
schemaName?: string;
|
|
@@ -43,60 +79,60 @@ export declare class ScopedCasbinAdapter extends BaseFilteredAdapter<IScopedCasb
|
|
|
43
79
|
alias: string;
|
|
44
80
|
}): SQL;
|
|
45
81
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
82
|
+
* One statement for everything scoped to a principal: its own edges, the role_inherits edges
|
|
83
|
+
* reachable from its roles, and the grants of that role closure. `UNION` in the recursive term
|
|
84
|
+
* is what terminates a cyclic role graph.
|
|
48
85
|
*/
|
|
49
|
-
protected
|
|
50
|
-
principal: {
|
|
51
|
-
type: string;
|
|
52
|
-
id: IdType;
|
|
53
|
-
};
|
|
54
|
-
}): Promise<{
|
|
55
|
-
lines: string[];
|
|
56
|
-
roleIds: IdType[];
|
|
57
|
-
}>;
|
|
58
|
-
/**
|
|
59
|
-
* Fetch the principal's `join_domain` edges (restricted to `domainTypes`) as casbin `g2` lines —
|
|
60
|
-
* the membership relation the matcher uses to scope `ANY_MEMBER` grants.
|
|
61
|
-
*/
|
|
62
|
-
protected queryMemberships(opts: {
|
|
86
|
+
protected queryPrincipalPolicies(opts: {
|
|
63
87
|
principal: {
|
|
64
88
|
type: string;
|
|
65
89
|
id: IdType;
|
|
66
90
|
};
|
|
91
|
+
}): Promise<TPrincipalPolicyRow[]>;
|
|
92
|
+
/** Turn fetched grant rows into casbin lines. Shared by the direct and role-closure branches. */
|
|
93
|
+
protected buildGrantLines(opts: {
|
|
94
|
+
subjectType: string;
|
|
95
|
+
rows: TGrantRow[];
|
|
67
96
|
}): Promise<string[]>;
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
type: string;
|
|
75
|
-
ids: IdType[];
|
|
97
|
+
/** Why a custom-looking grant row cannot be honoured, or null when it is well formed. */
|
|
98
|
+
protected rejectCustomRow(opts: {
|
|
99
|
+
row: {
|
|
100
|
+
subjectId: IdType;
|
|
101
|
+
objectCode: string;
|
|
102
|
+
objectMethod: string;
|
|
76
103
|
};
|
|
104
|
+
parsed: TCustomGrantMetadata | null;
|
|
105
|
+
isCustomAction: boolean;
|
|
106
|
+
metadataColumnName?: string;
|
|
107
|
+
}): string | null;
|
|
108
|
+
/** Resolve every custom row's ops in one catalog query, then emit one line per resolved operation. */
|
|
109
|
+
protected expandCustomGrants(opts: {
|
|
110
|
+
subjectType: string;
|
|
111
|
+
customRows: Array<{
|
|
112
|
+
subjectId: IdType;
|
|
113
|
+
objectSubject: string;
|
|
114
|
+
ops: string[];
|
|
115
|
+
domain: string;
|
|
116
|
+
effect: string;
|
|
117
|
+
}>;
|
|
77
118
|
}): Promise<string[]>;
|
|
78
|
-
/**
|
|
79
|
-
protected
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
119
|
+
/** Resolve `(subject, method)` pairs to catalogued operations. One query for the whole extraction. */
|
|
120
|
+
protected queryOperationCatalog(opts: {
|
|
121
|
+
pairs: Array<{
|
|
122
|
+
subject: string;
|
|
123
|
+
method: string;
|
|
124
|
+
}>;
|
|
125
|
+
}): Promise<Array<{
|
|
126
|
+
subject: string;
|
|
127
|
+
method: string;
|
|
128
|
+
code: string;
|
|
129
|
+
action: string;
|
|
130
|
+
}>>;
|
|
87
131
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
132
|
+
* The two code-fixed structural trees only (`g4` resource, `g5` action) - a few hundred rows,
|
|
133
|
+
* constant regardless of tenant count. Domain edges (`g3`) are principal-scoped in
|
|
134
|
+
* {@link queryPrincipalPolicies} instead, since that tree grows with the domain count.
|
|
90
135
|
*/
|
|
91
|
-
protected
|
|
92
|
-
/** Every `domain_inherits` edge as a casbin `g3` line — lets a grant on a parent domain cascade down. */
|
|
93
|
-
protected queryDomainInherits(): Promise<string[]>;
|
|
94
|
-
/** BFS over role_inherits edges to collect a role set + all transitive parents. Cycle-safe. */
|
|
95
|
-
protected expandRoleClosure(opts: {
|
|
96
|
-
role: {
|
|
97
|
-
ids: IdType[];
|
|
98
|
-
edges: string[];
|
|
99
|
-
};
|
|
100
|
-
}): IdType[];
|
|
136
|
+
protected queryEdgePolicies(): Promise<string[]>;
|
|
101
137
|
}
|
|
102
138
|
//# sourceMappingURL=scoped-casbin.adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-casbin.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/scoped-casbin.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"scoped-casbin.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/adapters/scoped-casbin.adapter.ts"],"names":[],"mappings":"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"}
|