UNPKG

8.27 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.GrantApi = void 0;
9
10var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
18var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
20var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
21
22var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
23
24var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
26var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
27
28var _err = _interopRequireDefault(require("@lskjs/err"));
29
30var _serverApi = _interopRequireDefault(require("@lskjs/server-api"));
31
32function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
34function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
36function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
38function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
40var GrantApi = /*#__PURE__*/function (_Api) {
41 (0, _inherits2["default"])(GrantApi, _Api);
42
43 var _super = _createSuper(GrantApi);
44
45 function GrantApi() {
46 (0, _classCallCheck2["default"])(this, GrantApi);
47 return _super.apply(this, arguments);
48 }
49
50 (0, _createClass2["default"])(GrantApi, [{
51 key: "getRoutes",
52 value: function getRoutes() {
53 return _objectSpread(_objectSpread({}, (0, _get2["default"])((0, _getPrototypeOf2["default"])(GrantApi.prototype), "getRoutes", this).call(this)), {}, {
54 '/can': function can() {
55 throw new _err["default"]('DEPRECATED');
56 },
57 '/canGroup': function canGroup() {
58 throw new _err["default"]('DEPRECATED');
59 },
60 '/ask': this.ask.bind(this),
61 '/cache': this.cache.bind(this),
62 '/clearCache': this.clearCache.bind(this)
63 });
64 }
65 }, {
66 key: "ask",
67 value: function () {
68 var _ask = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req) {
69 var _req$data, rules, clearCache, action, grant, userId, prefix;
70
71 return _regenerator["default"].wrap(function _callee$(_context) {
72 while (1) {
73 switch (_context.prev = _context.next) {
74 case 0:
75 _req$data = req.data, rules = _req$data.rules, clearCache = _req$data.clearCache;
76 clearCache = !!+clearCache;
77 action = req.data.action;
78
79 if (rules && Array.isArray(rules) && rules.length > 0) {
80 _context.next = 9;
81 break;
82 }
83
84 if (!action) {
85 _context.next = 8;
86 break;
87 }
88
89 rules = [{
90 action: action
91 }];
92 _context.next = 9;
93 break;
94
95 case 8:
96 throw new _err["default"]('grant.askFormat', 'rules is not array', {
97 rules: rules
98 });
99
100 case 9:
101 _context.next = 11;
102 return this.app.module('grant');
103
104 case 11:
105 grant = _context.sent;
106 userId = req.user ? req.user._id : null;
107 prefix = userId || 'guest';
108
109 if (!clearCache) {
110 _context.next = 17;
111 break;
112 }
113
114 _context.next = 17;
115 return grant.clearCache(rules.forEach(function (_ref) {
116 var action = _ref.action;
117 return "".concat(prefix, ".").concat(action);
118 }));
119
120 case 17:
121 return _context.abrupt("return", grant.canGroup(rules, {
122 user: req.user,
123 userId: userId,
124 cache: grant.__cache.fork({
125 prefix: prefix
126 })
127 }));
128
129 case 18:
130 case "end":
131 return _context.stop();
132 }
133 }
134 }, _callee, this);
135 }));
136
137 function ask(_x) {
138 return _ask.apply(this, arguments);
139 }
140
141 return ask;
142 }()
143 }, {
144 key: "cache",
145 value: function () {
146 var _cache = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(req) {
147 var grant;
148 return _regenerator["default"].wrap(function _callee2$(_context2) {
149 while (1) {
150 switch (_context2.prev = _context2.next) {
151 case 0:
152 _context2.next = 2;
153 return this.checkAdmin(req);
154
155 case 2:
156 _context2.next = 4;
157 return this.app.module('grant');
158
159 case 4:
160 grant = _context2.sent;
161 return _context2.abrupt("return", grant.__cache.data);
162
163 case 6:
164 case "end":
165 return _context2.stop();
166 }
167 }
168 }, _callee2, this);
169 }));
170
171 function cache(_x2) {
172 return _cache.apply(this, arguments);
173 }
174
175 return cache;
176 }()
177 }, {
178 key: "clearCache",
179 value: function () {
180 var _clearCache = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(req) {
181 var grant, userId, path;
182 return _regenerator["default"].wrap(function _callee3$(_context3) {
183 while (1) {
184 switch (_context3.prev = _context3.next) {
185 case 0:
186 _context3.next = 2;
187 return this.app.module('grant');
188
189 case 2:
190 grant = _context3.sent;
191 userId = req.user && req.user._id || 'guest';
192 path = [userId, req.data.path || '*'].filter(Boolean).join('.');
193 return _context3.abrupt("return", grant.clearCache(path));
194
195 case 6:
196 case "end":
197 return _context3.stop();
198 }
199 }
200 }, _callee3, this);
201 }));
202
203 function clearCache(_x3) {
204 return _clearCache.apply(this, arguments);
205 }
206
207 return clearCache;
208 }()
209 }]);
210 return GrantApi;
211}(_serverApi["default"]);
212
213exports.GrantApi = GrantApi;
214var _default = GrantApi;
215exports["default"] = _default;
216//# sourceMappingURL=GrantApi.js.map
\No newline at end of file