@nocobase/acl 0.9.2-alpha.2 → 0.9.2-alpha.3

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/lib/acl.d.ts CHANGED
@@ -65,7 +65,7 @@ export declare class ACL extends EventEmitter {
65
65
  use(fn: any, options?: ToposortOptions): void;
66
66
  allow(resourceName: string, actionNames: string[] | string, condition?: string | ConditionFunc): void;
67
67
  skip(resourceName: string, actionNames: string[] | string, condition?: string | ConditionFunc): void;
68
- parseJsonTemplate(json: any, ctx: any): any;
68
+ parseJsonTemplate(json: any, ctx: any): Promise<any>;
69
69
  middleware(): (ctx: any, next: any) => Promise<void>;
70
70
  getActionParams(ctx: any): Promise<void>;
71
71
  addFixedParams(resource: string, action: string, merger: Merger): void;
package/lib/acl.js CHANGED
@@ -18,13 +18,6 @@ function _events() {
18
18
  };
19
19
  return data;
20
20
  }
21
- function _jsonTemplates() {
22
- const data = _interopRequireDefault(require("json-templates"));
23
- _jsonTemplates = function _jsonTemplates() {
24
- return data;
25
- };
26
- return data;
27
- }
28
21
  function _koaCompose() {
29
22
  const data = _interopRequireDefault(require("koa-compose"));
30
23
  _koaCompose = function _koaCompose() {
@@ -130,7 +123,7 @@ class ACL extends _events().default {
130
123
  if (params && resourcerAction.mergeParams) {
131
124
  var _ctx$log3;
132
125
  const filteredParams = filterParams(ctx, resourceName, params);
133
- const parsedParams = acl.parseJsonTemplate(filteredParams, ctx);
126
+ const parsedParams = yield acl.parseJsonTemplate(filteredParams, ctx);
134
127
  ctx.permission.parsedParams = parsedParams;
135
128
  ((_ctx$log3 = ctx.log) === null || _ctx$log3 === void 0 ? void 0 : _ctx$log3.info) && ctx.log.info('acl parsedParams', parsedParams);
136
129
  ctx.permission.rawParams = _lodash().default.cloneDeep(resourcerAction.params);
@@ -311,11 +304,35 @@ class ACL extends _events().default {
311
304
  }
312
305
  }
313
306
  parseJsonTemplate(json, ctx) {
314
- return (0, _jsonTemplates().default)(json)({
315
- ctx: {
316
- state: JSON.parse(JSON.stringify(ctx.state))
307
+ return _asyncToGenerator(function* () {
308
+ if (json.filter) {
309
+ var _ctx$logger, _ctx$logger$info, _ctx$get, _ctx$logger2, _ctx$logger2$info;
310
+ (_ctx$logger = ctx.logger) === null || _ctx$logger === void 0 ? void 0 : (_ctx$logger$info = _ctx$logger.info) === null || _ctx$logger$info === void 0 ? void 0 : _ctx$logger$info.call(_ctx$logger, 'parseJsonTemplate.raw', JSON.parse(JSON.stringify(json.filter)));
311
+ const timezone = ctx === null || ctx === void 0 ? void 0 : (_ctx$get = ctx.get) === null || _ctx$get === void 0 ? void 0 : _ctx$get.call(ctx, 'x-timezone');
312
+ const state = JSON.parse(JSON.stringify(ctx.state));
313
+ const filter = yield (0, _utils().parseFilter)(json.filter, {
314
+ timezone,
315
+ now: new Date().toISOString(),
316
+ vars: {
317
+ ctx: {
318
+ state
319
+ },
320
+ $user: function () {
321
+ var _$user = _asyncToGenerator(function* () {
322
+ return state.currentUser;
323
+ });
324
+ function $user() {
325
+ return _$user.apply(this, arguments);
326
+ }
327
+ return $user;
328
+ }()
329
+ }
330
+ });
331
+ json.filter = filter;
332
+ (_ctx$logger2 = ctx.logger) === null || _ctx$logger2 === void 0 ? void 0 : (_ctx$logger2$info = _ctx$logger2.info) === null || _ctx$logger2$info === void 0 ? void 0 : _ctx$logger2$info.call(_ctx$logger2, 'parseJsonTemplate.parsed', filter);
317
333
  }
318
- });
334
+ return json;
335
+ })();
319
336
  }
320
337
  middleware() {
321
338
  const acl = this;
@@ -106,7 +106,7 @@ class AllowManager {
106
106
  const _ctx$action = ctx.action,
107
107
  resourceName = _ctx$action.resourceName,
108
108
  actionName = _ctx$action.actionName;
109
- let skip = yield _this2.acl.allowManager.isAllowed(resourceName, actionName, ctx);
109
+ const skip = yield _this2.acl.allowManager.isAllowed(resourceName, actionName, ctx);
110
110
  if (skip) {
111
111
  ctx.permission = _objectSpread(_objectSpread({}, ctx.permission || {}), {}, {
112
112
  skip: true
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@nocobase/acl",
3
- "version": "0.9.2-alpha.2",
3
+ "version": "0.9.2-alpha.3",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
8
  "dependencies": {
9
- "@nocobase/resourcer": "0.9.2-alpha.2",
10
- "@nocobase/utils": "0.9.2-alpha.2",
9
+ "@nocobase/resourcer": "0.9.2-alpha.3",
10
+ "@nocobase/utils": "0.9.2-alpha.3",
11
11
  "json-templates": "^4.2.0",
12
12
  "minimatch": "^5.1.1"
13
13
  },
@@ -16,5 +16,5 @@
16
16
  "url": "git+https://github.com/nocobase/nocobase.git",
17
17
  "directory": "packages/acl"
18
18
  },
19
- "gitHead": "1a0de6908b2b1854bdf434fcafa8909cb65bb8a3"
19
+ "gitHead": "b6b5f9372202d942c97d2d90a4197e060db05124"
20
20
  }