oak-general-business/lib/utils/check.js

122 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.processCheckers = void 0;
var constants_1 = require("../constants");
function checkIsRoot(context) {
return __awaiter(this, void 0, void 0, function () {
var token, playerId, count;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, context.getToken()];
case 1:
token = _a.sent();
if (!token) {
return [2 /*return*/, false];
}
playerId = token.playerId;
return [4 /*yield*/, context.rowStore.count('userRole', {
filter: {
userId: playerId,
roleId: constants_1.ROOT_ROLE_ID,
},
}, context)];
case 2:
count = _a.sent();
if (count === 0) {
// 只有root允许扮演其他用户身份
return [2 /*return*/, false];
}
return [2 /*return*/, true];
}
});
});
}
function processCheckers(checkers) {
var e_1, _a;
var _this = this;
var _loop_1 = function (checker) {
var type = checker.type, fn = checker.checker;
if (type === 'user') {
Object.assign(checker, {
checker: function (dummy, context) { return __awaiter(_this, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, checkIsRoot(context)];
case 1:
if (_a.sent()) {
return [2 /*return*/];
}
return [4 /*yield*/, fn(dummy, context)];
case 2:
_a.sent();
return [2 /*return*/];
}
});
}); },
});
}
};
try {
// 对user类型的checker加上root的自动检测
for (var checkers_1 = __values(checkers), checkers_1_1 = checkers_1.next(); !checkers_1_1.done; checkers_1_1 = checkers_1.next()) {
var checker = checkers_1_1.value;
_loop_1(checker);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (checkers_1_1 && !checkers_1_1.done && (_a = checkers_1.return)) _a.call(checkers_1);
}
finally { if (e_1) throw e_1.error; }
}
}
exports.processCheckers = processCheckers;