@jantstack/adonis-authz 1.0.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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -0
  3. package/build/commands/main.d.ts +7 -0
  4. package/build/commands/main.d.ts.map +1 -0
  5. package/build/commands/main.js +7 -0
  6. package/build/commands/main.js.map +1 -0
  7. package/build/commands/openfga_import.d.ts +28 -0
  8. package/build/commands/openfga_import.d.ts.map +1 -0
  9. package/build/commands/openfga_import.js +74 -0
  10. package/build/commands/openfga_import.js.map +1 -0
  11. package/build/commands/openfga_provision.d.ts +27 -0
  12. package/build/commands/openfga_provision.d.ts.map +1 -0
  13. package/build/commands/openfga_provision.js +73 -0
  14. package/build/commands/openfga_provision.js.map +1 -0
  15. package/build/configure.d.ts +10 -0
  16. package/build/configure.d.ts.map +1 -0
  17. package/build/configure.js +43 -0
  18. package/build/configure.js.map +1 -0
  19. package/build/index.d.ts +21 -0
  20. package/build/index.d.ts.map +1 -0
  21. package/build/index.js +18 -0
  22. package/build/index.js.map +1 -0
  23. package/build/providers/authz_provider.d.ts +17 -0
  24. package/build/providers/authz_provider.d.ts.map +1 -0
  25. package/build/providers/authz_provider.js +21 -0
  26. package/build/providers/authz_provider.js.map +1 -0
  27. package/build/services/main.d.ts +10 -0
  28. package/build/services/main.d.ts.map +1 -0
  29. package/build/services/main.js +13 -0
  30. package/build/services/main.js.map +1 -0
  31. package/build/src/catalog.d.ts +3 -0
  32. package/build/src/catalog.d.ts.map +1 -0
  33. package/build/src/catalog.js +97 -0
  34. package/build/src/catalog.js.map +1 -0
  35. package/build/src/define_config.d.ts +53 -0
  36. package/build/src/define_config.d.ts.map +1 -0
  37. package/build/src/define_config.js +4 -0
  38. package/build/src/define_config.js.map +1 -0
  39. package/build/src/drivers/database_driver.d.ts +48 -0
  40. package/build/src/drivers/database_driver.d.ts.map +1 -0
  41. package/build/src/drivers/database_driver.js +260 -0
  42. package/build/src/drivers/database_driver.js.map +1 -0
  43. package/build/src/drivers/openfga_driver.d.ts +107 -0
  44. package/build/src/drivers/openfga_driver.d.ts.map +1 -0
  45. package/build/src/drivers/openfga_driver.js +450 -0
  46. package/build/src/drivers/openfga_driver.js.map +1 -0
  47. package/build/src/manager.d.ts +29 -0
  48. package/build/src/manager.d.ts.map +1 -0
  49. package/build/src/manager.js +79 -0
  50. package/build/src/manager.js.map +1 -0
  51. package/build/src/middleware/app_access_middleware.d.ts +23 -0
  52. package/build/src/middleware/app_access_middleware.d.ts.map +1 -0
  53. package/build/src/middleware/app_access_middleware.js +53 -0
  54. package/build/src/middleware/app_access_middleware.js.map +1 -0
  55. package/build/src/models/authz_assignment.d.ts +166 -0
  56. package/build/src/models/authz_assignment.d.ts.map +1 -0
  57. package/build/src/models/authz_assignment.js +60 -0
  58. package/build/src/models/authz_assignment.js.map +1 -0
  59. package/build/src/models/authz_deny.d.ts +161 -0
  60. package/build/src/models/authz_deny.d.ts.map +1 -0
  61. package/build/src/models/authz_deny.js +50 -0
  62. package/build/src/models/authz_deny.js.map +1 -0
  63. package/build/src/models/authz_permission.d.ts +159 -0
  64. package/build/src/models/authz_permission.d.ts.map +1 -0
  65. package/build/src/models/authz_permission.js +42 -0
  66. package/build/src/models/authz_permission.js.map +1 -0
  67. package/build/src/models/authz_role.d.ts +166 -0
  68. package/build/src/models/authz_role.d.ts.map +1 -0
  69. package/build/src/models/authz_role.js +66 -0
  70. package/build/src/models/authz_role.js.map +1 -0
  71. package/build/src/models/authz_role_permission.d.ts +155 -0
  72. package/build/src/models/authz_role_permission.d.ts.map +1 -0
  73. package/build/src/models/authz_role_permission.js +35 -0
  74. package/build/src/models/authz_role_permission.js.map +1 -0
  75. package/build/src/testing/contract.d.ts +27 -0
  76. package/build/src/testing/contract.d.ts.map +1 -0
  77. package/build/src/testing/contract.js +211 -0
  78. package/build/src/testing/contract.js.map +1 -0
  79. package/build/src/testing/main.d.ts +11 -0
  80. package/build/src/testing/main.d.ts.map +1 -0
  81. package/build/src/testing/main.js +10 -0
  82. package/build/src/testing/main.js.map +1 -0
  83. package/build/src/traits/authz_scopes.d.ts +21 -0
  84. package/build/src/traits/authz_scopes.d.ts.map +1 -0
  85. package/build/src/traits/authz_scopes.js +45 -0
  86. package/build/src/traits/authz_scopes.js.map +1 -0
  87. package/build/src/traits/has_uuid.d.ts +151 -0
  88. package/build/src/traits/has_uuid.d.ts.map +1 -0
  89. package/build/src/traits/has_uuid.js +38 -0
  90. package/build/src/traits/has_uuid.js.map +1 -0
  91. package/build/src/types.d.ts +153 -0
  92. package/build/src/types.d.ts.map +1 -0
  93. package/build/src/types.js +38 -0
  94. package/build/src/types.js.map +1 -0
  95. package/build/stubs/config/app_acl.stub +81 -0
  96. package/build/stubs/config/authorization.stub +74 -0
  97. package/build/stubs/main.d.ts +3 -0
  98. package/build/stubs/main.d.ts.map +1 -0
  99. package/build/stubs/main.js +3 -0
  100. package/build/stubs/main.js.map +1 -0
  101. package/build/stubs/migration.stub +124 -0
  102. package/package.json +94 -0
@@ -0,0 +1,53 @@
1
+ import { Exception } from '@adonisjs/core/exceptions';
2
+ import authorization from '../../services/main.js';
3
+ import { APP_SCOPE } from '../types.js';
4
+ /**
5
+ * Enforcement del ACL de NIVEL APP (gemelo de orgAccess para el scope
6
+ * global). Debe ir DESPUÉS de `middleware.auth(...)` — típicamente con el
7
+ * guard `admins`, aunque funciona con cualquier holder con morph name.
8
+ *
9
+ * Reglas:
10
+ * - No autenticado → 401.
11
+ * - Holder sin el rol/permiso requerido a nivel app → 403.
12
+ * - El ACL decide por IDENTIDAD; el scope del token lo acota
13
+ * middleware.ability() aparte (el token nunca amplía, solo restringe).
14
+ *
15
+ * Uso: middleware.appAccess({ permission: 'audit:read' })
16
+ * middleware.appAccess({ role: 'superadmin' })
17
+ */
18
+ export default class AppAccessMiddleware {
19
+ async handle(ctx, next, options = {}) {
20
+ if (!options.permission && !options.role) {
21
+ throw new Exception('middleware.appAccess requiere `permission` o `role`', { status: 500 });
22
+ }
23
+ const holder = ctx.auth?.user;
24
+ if (!holder) {
25
+ return ctx.response.unauthorized({ message: 'No autenticado', statusCode: 401, errors: [] });
26
+ }
27
+ // El morph name lo estampa el decorador @MorphMap en el prototype.
28
+ const morph = holder.__morphMapName;
29
+ if (!morph) {
30
+ throw new Exception('El modelo autenticado no tiene @MorphMap — no es un holder válido', {
31
+ status: 500,
32
+ });
33
+ }
34
+ const subject = { type: morph, uuid: holder.uuid };
35
+ if (options.role && !(await authorization.hasRole(subject, options.role, APP_SCOPE))) {
36
+ return ctx.response.forbidden({
37
+ message: 'Permiso insuficiente',
38
+ statusCode: 403,
39
+ errors: [],
40
+ });
41
+ }
42
+ if (options.permission &&
43
+ !(await authorization.authorize(subject, options.permission, APP_SCOPE))) {
44
+ return ctx.response.forbidden({
45
+ message: 'Permiso insuficiente',
46
+ statusCode: 403,
47
+ errors: [],
48
+ });
49
+ }
50
+ return next();
51
+ }
52
+ }
53
+ //# sourceMappingURL=app_access_middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app_access_middleware.js","sourceRoot":"","sources":["../../../src/middleware/app_access_middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,aAAa,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,KAAK,CAAC,MAAM,CACV,GAAgB,EAChB,IAAY,EACZ,UAAkD,EAAE;QAEpD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,IAAI,SAAS,CAAC,qDAAqD,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC7F,CAAC;QAED,MAAM,MAAM,GAAI,GAAW,CAAC,IAAI,EAAE,IAA6D,CAAA;QAC/F,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9F,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAA;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,SAAS,CAAC,mEAAmE,EAAE;gBACvF,MAAM,EAAE,GAAG;aACZ,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QAElD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YACrF,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,OAAO,EAAE,sBAAsB;gBAC/B,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE;aACX,CAAC,CAAA;QACJ,CAAC;QAED,IACE,OAAO,CAAC,UAAU;YAClB,CAAC,CAAC,MAAM,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EACxE,CAAC;YACD,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC5B,OAAO,EAAE,sBAAsB;gBAC/B,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,EAAE;aACX,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,166 @@
1
+ import { DateTime } from 'luxon';
2
+ import type { BelongsTo } from '@adonisjs/lucid/types/relations';
3
+ import AuthzRole from './authz_role.js';
4
+ declare const AuthzAssignment_base: {
5
+ new (...args: any[]): {
6
+ $attributes: import("@adonisjs/lucid/types/model").ModelObject;
7
+ $extras: import("@adonisjs/lucid/types/model").ModelObject;
8
+ $original: import("@adonisjs/lucid/types/model").ModelObject;
9
+ $preloaded: {
10
+ [relation: string]: import("@adonisjs/lucid/types/model").LucidRow | import("@adonisjs/lucid/types/model").LucidRow[];
11
+ };
12
+ $sideloaded: import("@adonisjs/lucid/types/model").ModelObject;
13
+ $primaryKeyValue?: number | string;
14
+ $isPersisted: boolean;
15
+ $isNew: boolean;
16
+ $isLocal: boolean;
17
+ $dirty: import("@adonisjs/lucid/types/model").ModelObject;
18
+ $isDirty: boolean;
19
+ $isDeleted: boolean;
20
+ $options?: import("@adonisjs/lucid/types/model").ModelOptions;
21
+ $trx?: import("@adonisjs/lucid/types/database").TransactionClientContract;
22
+ $setOptionsAndTrx(options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): void;
23
+ useTransaction(trx: import("@adonisjs/lucid/types/database").TransactionClientContract): /*elided*/ any;
24
+ useConnection(connection: string): /*elided*/ any;
25
+ $getQueryFor(action: "insert", client: import("@adonisjs/lucid/types/database").QueryClientContract): ReturnType<import("@adonisjs/lucid/types/database").QueryClientContract["insertQuery"]>;
26
+ $getQueryFor(action: "update" | "delete" | "refresh", client: import("@adonisjs/lucid/types/database").QueryClientContract): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel>;
27
+ $setAttribute(key: string, value: any): void;
28
+ $getAttribute(key: string): any;
29
+ $getAttributeFromCache(key: string, callback: import("@adonisjs/lucid/types/model").CacheNode["getter"]): any;
30
+ $hasRelated(key: string): boolean;
31
+ $setRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
32
+ $pushRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
33
+ $getRelated(key: string, defaultValue?: any): import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | undefined | null;
34
+ $consumeAdapterResult(adapterResult: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject): void;
35
+ $hydrateOriginals(): void;
36
+ fill(value: Partial<import("@adonisjs/lucid/types/model").ModelAttributes</*elided*/ any>>, allowExtraProperties?: boolean): /*elided*/ any;
37
+ merge(value: Partial<import("@adonisjs/lucid/types/model").ModelAttributes</*elided*/ any>>, allowExtraProperties?: boolean): /*elided*/ any;
38
+ isDirty(fields?: undefined[] | undefined): boolean;
39
+ enableForceUpdate(): /*elided*/ any;
40
+ save(): Promise</*elided*/ any>;
41
+ saveQuietly(): Promise</*elided*/ any>;
42
+ lockForUpdate<T>(callback: (user: /*elided*/ any) => T | Promise<T>): Promise<T>;
43
+ delete(): Promise<void>;
44
+ deleteQuietly(): Promise<void>;
45
+ refresh(): Promise</*elided*/ any>;
46
+ load: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
47
+ loadOnce: import("@adonisjs/lucid/types/model").LucidRowPreloadOnce</*elided*/ any>;
48
+ preload: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
49
+ loadAggregate: <Self extends /*elided*/ any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = NonNullable<Self[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & Self[Name] & {})["subQuery"] : never>(name: Name, callback: (builder: RelatedBuilder) => void) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
50
+ loadCount: <Self extends /*elided*/ any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = NonNullable<Self[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & Self[Name] & {})["subQuery"] : never>(name: Name, callback?: ((builder: RelatedBuilder) => void) | undefined) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
51
+ serializeAttributes(fields?: import("@adonisjs/lucid/types/model").CherryPickFields, raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
52
+ serializeComputed(fields?: import("@adonisjs/lucid/types/model").CherryPickFields): import("@adonisjs/lucid/types/model").ModelObject;
53
+ serializeRelations(fields: undefined, raw: true): {
54
+ [key: string]: import("@adonisjs/lucid/types/model").LucidRow | import("@adonisjs/lucid/types/model").LucidRow[];
55
+ };
56
+ serializeRelations(cherryPick: import("@adonisjs/lucid/types/model").CherryPick["relations"] | undefined, raw: false | undefined): import("@adonisjs/lucid/types/model").ModelObject;
57
+ serializeRelations(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick["relations"], raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
58
+ serialize(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick): import("@adonisjs/lucid/types/model").ModelObject;
59
+ toObject(): import("@adonisjs/lucid/types/model").ModelObject;
60
+ toJSON(): import("@adonisjs/lucid/types/model").ModelObject;
61
+ toAttributes(): Record<string, any>;
62
+ related<Name extends undefined>(relation: Name): NonNullable</*elided*/ any[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & /*elided*/ any[Name] & {})["client"] : never;
63
+ };
64
+ selfAssignPrimaryKey: boolean;
65
+ generateUuid(model: any): void;
66
+ nextUuid(): string;
67
+ find: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
68
+ readonly booted: boolean;
69
+ $columnsDefinitions: Map<string, import("@adonisjs/lucid/types/model").ModelColumnOptions>;
70
+ $relationsDefinitions: Map<string, import("@adonisjs/lucid/types/relations").RelationshipsContract>;
71
+ $computedDefinitions: Map<string, import("@adonisjs/lucid/types/model").ComputedOptions>;
72
+ primaryKey: string;
73
+ connection?: string | undefined;
74
+ namingStrategy: import("@adonisjs/lucid/types/model").NamingStrategyContract;
75
+ table: string;
76
+ $adapter: import("@adonisjs/lucid/types/model").AdapterContract;
77
+ useAdapter: (adapter: import("@adonisjs/lucid/types/model").AdapterContract) => void;
78
+ $hooks: import("@poppinss/hooks").default<any>;
79
+ $keys: {
80
+ attributesToColumns: import("@adonisjs/lucid/types/model").ModelKeysContract;
81
+ attributesToSerialized: import("@adonisjs/lucid/types/model").ModelKeysContract;
82
+ columnsToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
83
+ columnsToSerialized: import("@adonisjs/lucid/types/model").ModelKeysContract;
84
+ serializedToColumns: import("@adonisjs/lucid/types/model").ModelKeysContract;
85
+ serializedToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
86
+ columnAliasesToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
87
+ };
88
+ $createFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, result?: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => null | InstanceType<T>;
89
+ $createMultipleFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, results: import("@adonisjs/lucid/types/model").ModelObject[], sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => InstanceType<T>[];
90
+ $addColumn: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ColumnOptions>) => import("@adonisjs/lucid/types/model").ColumnOptions;
91
+ $hasColumn: (name: string) => boolean;
92
+ $getColumn: (name: string) => import("@adonisjs/lucid/types/model").ModelColumnOptions | undefined;
93
+ $getColumnAlias: (columnName: string) => string;
94
+ columnsForSelect: () => Record<string, string>;
95
+ $addComputed: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ComputedOptions>) => import("@adonisjs/lucid/types/model").ComputedOptions;
96
+ $hasComputed: (name: string) => boolean;
97
+ $getComputed: (name: string) => import("@adonisjs/lucid/types/model").ComputedOptions | undefined;
98
+ $addRelation: (name: string, type: import("@adonisjs/lucid/types/relations").ModelRelationTypes["__opaque_type"], relatedModel: () => import("@adonisjs/lucid/types/model").LucidModel, options: import("@adonisjs/lucid/types/model").ModelRelationOptions) => void;
99
+ $hasRelation: (name: string) => boolean;
100
+ $getRelation: {
101
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<InstanceType<Model>>>(this: Model, name: Name): NonNullable<InstanceType<Model>[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? NonNullable<InstanceType<Model>[Name]>["client"]["relation"] : import("@adonisjs/lucid/types/relations").RelationshipsContract;
102
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, name: string): import("@adonisjs/lucid/types/relations").RelationshipsContract;
103
+ };
104
+ $defineProperty: <Model extends import("@adonisjs/lucid/types/model").LucidModel, Prop extends keyof Model>(this: Model, propertyName: Prop, defaultValue: Model[Prop], strategy: "inherit" | "define" | ((value: Model[Prop]) => Model[Prop])) => void;
105
+ boot: () => void;
106
+ before: {
107
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends "find" | "fetch">(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>, Event>): void;
108
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<[import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>, import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>], "paginate">): void;
109
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends import("@adonisjs/lucid/types/model").EventsList>(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>, Event>): void;
110
+ };
111
+ after: {
112
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "fetch", handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>[], "fetch">): void;
113
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelPaginatorContract<InstanceType<Model>>, "paginate">): void;
114
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends import("@adonisjs/lucid/types/model").EventsList>(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>, Event>): void;
115
+ };
116
+ create: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
117
+ createQuietly: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
118
+ createMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
119
+ createManyQuietly: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
120
+ findOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
121
+ findBy: {
122
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
123
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
124
+ };
125
+ findByOrFail: {
126
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
127
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
128
+ };
129
+ findManyBy: {
130
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
131
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
132
+ };
133
+ first: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
134
+ firstOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
135
+ findMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any[], options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
136
+ firstOrNew: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
137
+ firstOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
138
+ updateOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, updatePayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
139
+ fetchOrNewUpMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
140
+ fetchOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
141
+ updateOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
142
+ all: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
143
+ query: <Model extends import("@adonisjs/lucid/types/model").LucidModel, Result = InstanceType<Model>>(this: Model, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model, Result>;
144
+ transaction: import("@adonisjs/lucid/types/database").TransactionFn;
145
+ truncate: (cascade?: boolean) => Promise<void>;
146
+ } & import("@adonisjs/lucid/types/model").LucidModel;
147
+ /**
148
+ * Asignación de rol a un holder polimórfico (users/admins/integrations) en un
149
+ * scope ('app' con scopeUuid null | 'organization' | 'unit'). `expiresAt`
150
+ * pasado = asignación no vigente (el driver la ignora, no la borra).
151
+ */
152
+ export default class AuthzAssignment extends AuthzAssignment_base {
153
+ static table: string;
154
+ static primaryKey: string;
155
+ uuid: string;
156
+ holderType: string;
157
+ holderUuid: string;
158
+ roleUuid: string;
159
+ scopeType: string;
160
+ scopeUuid: string | null;
161
+ expiresAt: DateTime | null;
162
+ role: BelongsTo<typeof AuthzRole>;
163
+ createdAt: DateTime;
164
+ }
165
+ export {};
166
+ //# sourceMappingURL=authz_assignment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz_assignment.d.ts","sourceRoot":"","sources":["../../../src/models/authz_assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,SAAS,MAAM,iBAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oZAuCymsB,gDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApCjssB;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,oBAA2B;IACtE,OAAc,KAAK,SAAsB;IACzC,OAAc,UAAU,SAAS;IAGzB,IAAI,EAAE,MAAM,CAAA;IAGZ,UAAU,EAAE,MAAM,CAAA;IAGlB,UAAU,EAAE,MAAM,CAAA;IAGlB,QAAQ,EAAE,MAAM,CAAA;IAGhB,SAAS,EAAE,MAAM,CAAA;IAGjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAA;IAG1B,IAAI,EAAE,SAAS,CAAC,OAAO,SAAS,CAAC,CAAA;IAGjC,SAAS,EAAE,QAAQ,CAAA;CAC5B"}
@@ -0,0 +1,60 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { DateTime } from 'luxon';
11
+ import { BaseModel, column, belongsTo } from '@adonisjs/lucid/orm';
12
+ import { compose } from '@adonisjs/core/helpers';
13
+ import AuthzRole from './authz_role.js';
14
+ import { hasUuid } from '../traits/has_uuid.js';
15
+ /**
16
+ * Asignación de rol a un holder polimórfico (users/admins/integrations) en un
17
+ * scope ('app' con scopeUuid null | 'organization' | 'unit'). `expiresAt`
18
+ * pasado = asignación no vigente (el driver la ignora, no la borra).
19
+ */
20
+ export default class AuthzAssignment extends compose(BaseModel, hasUuid) {
21
+ static table = 'authz_assignments';
22
+ static primaryKey = 'uuid';
23
+ }
24
+ __decorate([
25
+ column({ isPrimary: true }),
26
+ __metadata("design:type", String)
27
+ ], AuthzAssignment.prototype, "uuid", void 0);
28
+ __decorate([
29
+ column({ columnName: 'holder_type' }),
30
+ __metadata("design:type", String)
31
+ ], AuthzAssignment.prototype, "holderType", void 0);
32
+ __decorate([
33
+ column({ columnName: 'holder_uuid' }),
34
+ __metadata("design:type", String)
35
+ ], AuthzAssignment.prototype, "holderUuid", void 0);
36
+ __decorate([
37
+ column({ columnName: 'role_uuid' }),
38
+ __metadata("design:type", String)
39
+ ], AuthzAssignment.prototype, "roleUuid", void 0);
40
+ __decorate([
41
+ column({ columnName: 'scope_type' }),
42
+ __metadata("design:type", String)
43
+ ], AuthzAssignment.prototype, "scopeType", void 0);
44
+ __decorate([
45
+ column({ columnName: 'scope_uuid' }),
46
+ __metadata("design:type", Object)
47
+ ], AuthzAssignment.prototype, "scopeUuid", void 0);
48
+ __decorate([
49
+ column.dateTime({ columnName: 'expires_at' }),
50
+ __metadata("design:type", Object)
51
+ ], AuthzAssignment.prototype, "expiresAt", void 0);
52
+ __decorate([
53
+ belongsTo(() => AuthzRole, { foreignKey: 'roleUuid' }),
54
+ __metadata("design:type", Object)
55
+ ], AuthzAssignment.prototype, "role", void 0);
56
+ __decorate([
57
+ column.dateTime({ autoCreate: true, columnName: 'created_at' }),
58
+ __metadata("design:type", DateTime)
59
+ ], AuthzAssignment.prototype, "createdAt", void 0);
60
+ //# sourceMappingURL=authz_assignment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz_assignment.js","sourceRoot":"","sources":["../../../src/models/authz_assignment.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,SAAS,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;IAC/D,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAA;IAClC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAA;;AAGzB;IADP,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;6CACR;AAGZ;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;;mDACZ;AAGlB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;;mDACZ;AAGlB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;;iDACZ;AAGhB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;;kDACZ;AAGjB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;;kDACL;AAGxB;IADP,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;;kDACZ;AAG1B;IADP,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;;6CACd;AAGjC;IADP,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;8BAC7C,QAAQ;kDAAA"}
@@ -0,0 +1,161 @@
1
+ import { DateTime } from 'luxon';
2
+ declare const AuthzDeny_base: {
3
+ new (...args: any[]): {
4
+ $attributes: import("@adonisjs/lucid/types/model").ModelObject;
5
+ $extras: import("@adonisjs/lucid/types/model").ModelObject;
6
+ $original: import("@adonisjs/lucid/types/model").ModelObject;
7
+ $preloaded: {
8
+ [relation: string]: import("@adonisjs/lucid/types/model").LucidRow | import("@adonisjs/lucid/types/model").LucidRow[];
9
+ };
10
+ $sideloaded: import("@adonisjs/lucid/types/model").ModelObject;
11
+ $primaryKeyValue?: number | string;
12
+ $isPersisted: boolean;
13
+ $isNew: boolean;
14
+ $isLocal: boolean;
15
+ $dirty: import("@adonisjs/lucid/types/model").ModelObject;
16
+ $isDirty: boolean;
17
+ $isDeleted: boolean;
18
+ $options?: import("@adonisjs/lucid/types/model").ModelOptions;
19
+ $trx?: import("@adonisjs/lucid/types/database").TransactionClientContract;
20
+ $setOptionsAndTrx(options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): void;
21
+ useTransaction(trx: import("@adonisjs/lucid/types/database").TransactionClientContract): /*elided*/ any;
22
+ useConnection(connection: string): /*elided*/ any;
23
+ $getQueryFor(action: "insert", client: import("@adonisjs/lucid/types/database").QueryClientContract): ReturnType<import("@adonisjs/lucid/types/database").QueryClientContract["insertQuery"]>;
24
+ $getQueryFor(action: "update" | "delete" | "refresh", client: import("@adonisjs/lucid/types/database").QueryClientContract): import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<import("@adonisjs/lucid/types/model").LucidModel>;
25
+ $setAttribute(key: string, value: any): void;
26
+ $getAttribute(key: string): any;
27
+ $getAttributeFromCache(key: string, callback: import("@adonisjs/lucid/types/model").CacheNode["getter"]): any;
28
+ $hasRelated(key: string): boolean;
29
+ $setRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
30
+ $pushRelated(key: string, result: import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | null): void;
31
+ $getRelated(key: string, defaultValue?: any): import("@adonisjs/lucid/types/querybuilder").OneOrMany<import("@adonisjs/lucid/types/model").LucidRow> | undefined | null;
32
+ $consumeAdapterResult(adapterResult: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject): void;
33
+ $hydrateOriginals(): void;
34
+ fill(value: Partial<import("@adonisjs/lucid/types/model").ModelAttributes</*elided*/ any>>, allowExtraProperties?: boolean): /*elided*/ any;
35
+ merge(value: Partial<import("@adonisjs/lucid/types/model").ModelAttributes</*elided*/ any>>, allowExtraProperties?: boolean): /*elided*/ any;
36
+ isDirty(fields?: undefined[] | undefined): boolean;
37
+ enableForceUpdate(): /*elided*/ any;
38
+ save(): Promise</*elided*/ any>;
39
+ saveQuietly(): Promise</*elided*/ any>;
40
+ lockForUpdate<T>(callback: (user: /*elided*/ any) => T | Promise<T>): Promise<T>;
41
+ delete(): Promise<void>;
42
+ deleteQuietly(): Promise<void>;
43
+ refresh(): Promise</*elided*/ any>;
44
+ load: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
45
+ loadOnce: import("@adonisjs/lucid/types/model").LucidRowPreloadOnce</*elided*/ any>;
46
+ preload: import("@adonisjs/lucid/types/model").LucidRowPreload</*elided*/ any>;
47
+ loadAggregate: <Self extends /*elided*/ any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = NonNullable<Self[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & Self[Name] & {})["subQuery"] : never>(name: Name, callback: (builder: RelatedBuilder) => void) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
48
+ loadCount: <Self extends /*elided*/ any, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<Self>, RelatedBuilder = NonNullable<Self[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & Self[Name] & {})["subQuery"] : never>(name: Name, callback?: ((builder: RelatedBuilder) => void) | undefined) => import("@adonisjs/lucid/types/model").LazyLoadAggregatesContract<Self>;
49
+ serializeAttributes(fields?: import("@adonisjs/lucid/types/model").CherryPickFields, raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
50
+ serializeComputed(fields?: import("@adonisjs/lucid/types/model").CherryPickFields): import("@adonisjs/lucid/types/model").ModelObject;
51
+ serializeRelations(fields: undefined, raw: true): {
52
+ [key: string]: import("@adonisjs/lucid/types/model").LucidRow | import("@adonisjs/lucid/types/model").LucidRow[];
53
+ };
54
+ serializeRelations(cherryPick: import("@adonisjs/lucid/types/model").CherryPick["relations"] | undefined, raw: false | undefined): import("@adonisjs/lucid/types/model").ModelObject;
55
+ serializeRelations(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick["relations"], raw?: boolean): import("@adonisjs/lucid/types/model").ModelObject;
56
+ serialize(cherryPick?: import("@adonisjs/lucid/types/model").CherryPick): import("@adonisjs/lucid/types/model").ModelObject;
57
+ toObject(): import("@adonisjs/lucid/types/model").ModelObject;
58
+ toJSON(): import("@adonisjs/lucid/types/model").ModelObject;
59
+ toAttributes(): Record<string, any>;
60
+ related<Name extends undefined>(relation: Name): NonNullable</*elided*/ any[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? (import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> & /*elided*/ any[Name] & {})["client"] : never;
61
+ };
62
+ selfAssignPrimaryKey: boolean;
63
+ generateUuid(model: any): void;
64
+ nextUuid(): string;
65
+ find: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
66
+ readonly booted: boolean;
67
+ $columnsDefinitions: Map<string, import("@adonisjs/lucid/types/model").ModelColumnOptions>;
68
+ $relationsDefinitions: Map<string, import("@adonisjs/lucid/types/relations").RelationshipsContract>;
69
+ $computedDefinitions: Map<string, import("@adonisjs/lucid/types/model").ComputedOptions>;
70
+ primaryKey: string;
71
+ connection?: string | undefined;
72
+ namingStrategy: import("@adonisjs/lucid/types/model").NamingStrategyContract;
73
+ table: string;
74
+ $adapter: import("@adonisjs/lucid/types/model").AdapterContract;
75
+ useAdapter: (adapter: import("@adonisjs/lucid/types/model").AdapterContract) => void;
76
+ $hooks: import("@poppinss/hooks").default<any>;
77
+ $keys: {
78
+ attributesToColumns: import("@adonisjs/lucid/types/model").ModelKeysContract;
79
+ attributesToSerialized: import("@adonisjs/lucid/types/model").ModelKeysContract;
80
+ columnsToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
81
+ columnsToSerialized: import("@adonisjs/lucid/types/model").ModelKeysContract;
82
+ serializedToColumns: import("@adonisjs/lucid/types/model").ModelKeysContract;
83
+ serializedToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
84
+ columnAliasesToAttributes: import("@adonisjs/lucid/types/model").ModelKeysContract;
85
+ };
86
+ $createFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, result?: import("@adonisjs/lucid/types/model").ModelObject, sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => null | InstanceType<T>;
87
+ $createMultipleFromAdapterResult: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, results: import("@adonisjs/lucid/types/model").ModelObject[], sideloadAttributes?: import("@adonisjs/lucid/types/model").ModelObject, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => InstanceType<T>[];
88
+ $addColumn: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ColumnOptions>) => import("@adonisjs/lucid/types/model").ColumnOptions;
89
+ $hasColumn: (name: string) => boolean;
90
+ $getColumn: (name: string) => import("@adonisjs/lucid/types/model").ModelColumnOptions | undefined;
91
+ $getColumnAlias: (columnName: string) => string;
92
+ columnsForSelect: () => Record<string, string>;
93
+ $addComputed: (name: string, options: Partial<import("@adonisjs/lucid/types/model").ComputedOptions>) => import("@adonisjs/lucid/types/model").ComputedOptions;
94
+ $hasComputed: (name: string) => boolean;
95
+ $getComputed: (name: string) => import("@adonisjs/lucid/types/model").ComputedOptions | undefined;
96
+ $addRelation: (name: string, type: import("@adonisjs/lucid/types/relations").ModelRelationTypes["__opaque_type"], relatedModel: () => import("@adonisjs/lucid/types/model").LucidModel, options: import("@adonisjs/lucid/types/model").ModelRelationOptions) => void;
97
+ $hasRelation: (name: string) => boolean;
98
+ $getRelation: {
99
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Name extends import("@adonisjs/lucid/types/relations").ExtractModelRelations<InstanceType<Model>>>(this: Model, name: Name): NonNullable<InstanceType<Model>[Name]> extends import("@adonisjs/lucid/types/relations").ModelRelations<import("@adonisjs/lucid/types/model").LucidModel, import("@adonisjs/lucid/types/model").LucidModel> ? NonNullable<InstanceType<Model>[Name]>["client"]["relation"] : import("@adonisjs/lucid/types/relations").RelationshipsContract;
100
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, name: string): import("@adonisjs/lucid/types/relations").RelationshipsContract;
101
+ };
102
+ $defineProperty: <Model extends import("@adonisjs/lucid/types/model").LucidModel, Prop extends keyof Model>(this: Model, propertyName: Prop, defaultValue: Model[Prop], strategy: "inherit" | "define" | ((value: Model[Prop]) => Model[Prop])) => void;
103
+ boot: () => void;
104
+ before: {
105
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends "find" | "fetch">(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>, Event>): void;
106
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<[import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>, import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model>], "paginate">): void;
107
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends import("@adonisjs/lucid/types/model").EventsList>(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>, Event>): void;
108
+ };
109
+ after: {
110
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "fetch", handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>[], "fetch">): void;
111
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel>(this: Model, event: "paginate", handler: import("@adonisjs/lucid/types/model").HooksHandler<import("@adonisjs/lucid/types/model").ModelPaginatorContract<InstanceType<Model>>, "paginate">): void;
112
+ <Model extends import("@adonisjs/lucid/types/model").LucidModel, Event extends import("@adonisjs/lucid/types/model").EventsList>(this: Model, event: Event, handler: import("@adonisjs/lucid/types/model").HooksHandler<InstanceType<Model>, Event>): void;
113
+ };
114
+ create: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
115
+ createQuietly: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
116
+ createMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
117
+ createManyQuietly: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, values: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
118
+ findOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
119
+ findBy: {
120
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
121
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<null | InstanceType<T>>;
122
+ };
123
+ findByOrFail: {
124
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
125
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>>;
126
+ };
127
+ findManyBy: {
128
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, clause: Record<string, unknown>, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
129
+ <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, key: string, value: any, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions): Promise<InstanceType<T>[]>;
130
+ };
131
+ first: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<null | InstanceType<T>>;
132
+ firstOrFail: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>>;
133
+ findMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, value: any[], options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
134
+ firstOrNew: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
135
+ firstOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, savePayload?: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
136
+ updateOrCreate: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, searchPayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, updatePayload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>, options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>>;
137
+ fetchOrNewUpMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
138
+ fetchOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
139
+ updateOrCreateMany: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, predicate: keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>> | (keyof import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>)[], payload: Partial<import("@adonisjs/lucid/types/model").ModelAttributes<InstanceType<T>>>[], options?: import("@adonisjs/lucid/types/model").ModelAssignOptions) => Promise<InstanceType<T>[]>;
140
+ all: <T extends import("@adonisjs/lucid/types/model").LucidModel>(this: T, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => Promise<InstanceType<T>[]>;
141
+ query: <Model extends import("@adonisjs/lucid/types/model").LucidModel, Result = InstanceType<Model>>(this: Model, options?: import("@adonisjs/lucid/types/model").ModelAdapterOptions) => import("@adonisjs/lucid/types/model").ModelQueryBuilderContract<Model, Result>;
142
+ transaction: import("@adonisjs/lucid/types/database").TransactionFn;
143
+ truncate: (cascade?: boolean) => Promise<void>;
144
+ } & import("@adonisjs/lucid/types/model").LucidModel;
145
+ /**
146
+ * Deny explícito: bloquea UN permiso a un holder en un scope y sus
147
+ * descendientes, aunque un rol se lo conceda. Gana siempre sobre los grants.
148
+ */
149
+ export default class AuthzDeny extends AuthzDeny_base {
150
+ static table: string;
151
+ static primaryKey: string;
152
+ uuid: string;
153
+ holderType: string;
154
+ holderUuid: string;
155
+ permissionUuid: string;
156
+ scopeType: string;
157
+ scopeUuid: string | null;
158
+ createdAt: DateTime;
159
+ }
160
+ export {};
161
+ //# sourceMappingURL=authz_deny.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz_deny.d.ts","sourceRoot":"","sources":["../../../src/models/authz_deny.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oZAkC++sB,gDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA7BhktB;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,cAA2B;IAChE,OAAc,KAAK,SAAiB;IACpC,OAAc,UAAU,SAAS;IAGzB,IAAI,EAAE,MAAM,CAAA;IAGZ,UAAU,EAAE,MAAM,CAAA;IAGlB,UAAU,EAAE,MAAM,CAAA;IAGlB,cAAc,EAAE,MAAM,CAAA;IAGtB,SAAS,EAAE,MAAM,CAAA;IAGjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,SAAS,EAAE,QAAQ,CAAA;CAC5B"}
@@ -0,0 +1,50 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { DateTime } from 'luxon';
11
+ import { BaseModel, column } from '@adonisjs/lucid/orm';
12
+ import { compose } from '@adonisjs/core/helpers';
13
+ import { hasUuid } from '../traits/has_uuid.js';
14
+ /**
15
+ * Deny explícito: bloquea UN permiso a un holder en un scope y sus
16
+ * descendientes, aunque un rol se lo conceda. Gana siempre sobre los grants.
17
+ */
18
+ export default class AuthzDeny extends compose(BaseModel, hasUuid) {
19
+ static table = 'authz_denies';
20
+ static primaryKey = 'uuid';
21
+ }
22
+ __decorate([
23
+ column({ isPrimary: true }),
24
+ __metadata("design:type", String)
25
+ ], AuthzDeny.prototype, "uuid", void 0);
26
+ __decorate([
27
+ column({ columnName: 'holder_type' }),
28
+ __metadata("design:type", String)
29
+ ], AuthzDeny.prototype, "holderType", void 0);
30
+ __decorate([
31
+ column({ columnName: 'holder_uuid' }),
32
+ __metadata("design:type", String)
33
+ ], AuthzDeny.prototype, "holderUuid", void 0);
34
+ __decorate([
35
+ column({ columnName: 'permission_uuid' }),
36
+ __metadata("design:type", String)
37
+ ], AuthzDeny.prototype, "permissionUuid", void 0);
38
+ __decorate([
39
+ column({ columnName: 'scope_type' }),
40
+ __metadata("design:type", String)
41
+ ], AuthzDeny.prototype, "scopeType", void 0);
42
+ __decorate([
43
+ column({ columnName: 'scope_uuid' }),
44
+ __metadata("design:type", Object)
45
+ ], AuthzDeny.prototype, "scopeUuid", void 0);
46
+ __decorate([
47
+ column.dateTime({ autoCreate: true, columnName: 'created_at' }),
48
+ __metadata("design:type", DateTime)
49
+ ], AuthzDeny.prototype, "createdAt", void 0);
50
+ //# sourceMappingURL=authz_deny.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz_deny.js","sourceRoot":"","sources":["../../../src/models/authz_deny.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE/C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;IACzD,MAAM,CAAC,KAAK,GAAG,cAAc,CAAA;IAC7B,MAAM,CAAC,UAAU,GAAG,MAAM,CAAA;;AAGzB;IADP,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;;uCACR;AAGZ;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;;6CACZ;AAGlB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;;6CACZ;AAGlB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;;iDACZ;AAGtB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;;4CACZ;AAGjB;IADP,MAAM,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;;4CACL;AAGxB;IADP,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;8BAC7C,QAAQ;4CAAA"}