@spinajs/rbac 2.0.399 → 2.0.400

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.
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAkE,YAAY,EAAE,eAAe,EAA0C,MAAM,cAAc,CAAC;AAKrK,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAkBlD,qBACa,6BAA8B,SAAQ,eAAe;IAGhE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IACrD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CA4GzC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAgF,YAAY,EAAE,eAAe,EAA0C,MAAM,cAAc,CAAC;AAKnL,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAkBlD,qBACa,6BAA8B,SAAQ,eAAe;IAGhE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IACrD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CAwHzC"}
@@ -73,11 +73,17 @@ let RbacModelPermissionMiddleware = class RbacModelPermissionMiddleware extends
73
73
  if (canOwn) {
74
74
  this.Log.trace(`Resource ${resource}:own permission granted for ${storage.User.Role}, scope: ${storage.PermissionScope}`);
75
75
  if (rbacFunc) {
76
+ this.Log.trace(`Applying custom rbac func for ${resource}`);
76
77
  rbacFunc.call(builder, storage.User);
77
78
  }
78
- else {
79
+ else if (descriptor.OwnerField) {
80
+ this.Log.trace(`Applying owner field restriction for ${resource}`);
79
81
  builder.andWhere(descriptor.OwnerField, storage.User.PrimaryKeyValue);
80
82
  }
83
+ else {
84
+ this.Log.error(`Model ${descriptor.Name} does not have OwnerField set or static rbac function, cannot apply :own permission`);
85
+ throw new orm_1.OrmException(`Model ${descriptor.Name} does not have OwnerField set, cannot apply :own permission`);
86
+ }
81
87
  return;
82
88
  }
83
89
  }
@@ -90,11 +96,17 @@ let RbacModelPermissionMiddleware = class RbacModelPermissionMiddleware extends
90
96
  else if (canOwn) {
91
97
  this.Log.trace(`Resource ${resource}:own permission granted for ${storage.User.Role}, scope: ${storage.PermissionScope}`);
92
98
  if (rbacFunc) {
99
+ this.Log.trace(`Applying custom rbac func for ${resource}`);
93
100
  rbacFunc.call(builder, storage.User);
94
101
  }
95
- else {
102
+ else if (descriptor.OwnerField) {
103
+ this.Log.trace(`Applying owner field restriction for ${resource}`);
96
104
  builder.andWhere(descriptor.OwnerField, storage.User.PrimaryKeyValue);
97
105
  }
106
+ else {
107
+ this.Log.error(`Model ${descriptor.Name} does not have OwnerField set or static rbac function, cannot apply :own permission`);
108
+ throw new orm_1.OrmException(`Model ${descriptor.Name} does not have OwnerField set, cannot apply :own permission`);
109
+ }
98
110
  }
99
111
  else {
100
112
  throw new exceptions_1.Forbidden(`User does not have permission to access ${resource}:read permission`);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAkE,YAAY,EAAE,eAAe,EAA0C,MAAM,cAAc,CAAC;AAKrK,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAkBlD,qBACa,6BAA8B,SAAQ,eAAe;IAGhE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IACrD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CA4GzC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAgF,YAAY,EAAE,eAAe,EAA0C,MAAM,cAAc,CAAC;AAKnL,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAkBlD,qBACa,6BAA8B,SAAQ,eAAe;IAGhE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI;IACrD,kBAAkB,CAAC,OAAO,EAAE,YAAY;CAwHzC"}
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { DI, Injectable } from '@spinajs/di';
11
- import { DeleteQueryBuilder, extractModelDescriptor, InsertQueryBuilder, QueryMiddleware, SelectQueryBuilder, UpdateQueryBuilder } from '@spinajs/orm';
11
+ import { DeleteQueryBuilder, extractModelDescriptor, InsertQueryBuilder, OrmException, QueryMiddleware, SelectQueryBuilder, UpdateQueryBuilder } from '@spinajs/orm';
12
12
  import { AsyncLocalStorage } from 'async_hooks';
13
13
  import { Forbidden } from '@spinajs/exceptions';
14
14
  import { Log, Logger } from '@spinajs/log-common';
@@ -70,11 +70,17 @@ let RbacModelPermissionMiddleware = class RbacModelPermissionMiddleware extends
70
70
  if (canOwn) {
71
71
  this.Log.trace(`Resource ${resource}:own permission granted for ${storage.User.Role}, scope: ${storage.PermissionScope}`);
72
72
  if (rbacFunc) {
73
+ this.Log.trace(`Applying custom rbac func for ${resource}`);
73
74
  rbacFunc.call(builder, storage.User);
74
75
  }
75
- else {
76
+ else if (descriptor.OwnerField) {
77
+ this.Log.trace(`Applying owner field restriction for ${resource}`);
76
78
  builder.andWhere(descriptor.OwnerField, storage.User.PrimaryKeyValue);
77
79
  }
80
+ else {
81
+ this.Log.error(`Model ${descriptor.Name} does not have OwnerField set or static rbac function, cannot apply :own permission`);
82
+ throw new OrmException(`Model ${descriptor.Name} does not have OwnerField set, cannot apply :own permission`);
83
+ }
78
84
  return;
79
85
  }
80
86
  }
@@ -87,11 +93,17 @@ let RbacModelPermissionMiddleware = class RbacModelPermissionMiddleware extends
87
93
  else if (canOwn) {
88
94
  this.Log.trace(`Resource ${resource}:own permission granted for ${storage.User.Role}, scope: ${storage.PermissionScope}`);
89
95
  if (rbacFunc) {
96
+ this.Log.trace(`Applying custom rbac func for ${resource}`);
90
97
  rbacFunc.call(builder, storage.User);
91
98
  }
92
- else {
99
+ else if (descriptor.OwnerField) {
100
+ this.Log.trace(`Applying owner field restriction for ${resource}`);
93
101
  builder.andWhere(descriptor.OwnerField, storage.User.PrimaryKeyValue);
94
102
  }
103
+ else {
104
+ this.Log.error(`Model ${descriptor.Name} does not have OwnerField set or static rbac function, cannot apply :own permission`);
105
+ throw new OrmException(`Model ${descriptor.Name} does not have OwnerField set, cannot apply :own permission`);
106
+ }
95
107
  }
96
108
  else {
97
109
  throw new Forbidden(`User does not have permission to access ${resource}:read permission`);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/middleware.ts"],"names":[],"mappings":"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"}