89 lines
3.9 KiB
JavaScript
89 lines
3.9 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var export_1 = require("../../../manager/v2/export");
|
|
var Workflow_1 = require("../../../helper/Workflow");
|
|
function checkAll(pm, fns, fullPath, user, resource, callback) {
|
|
new Workflow_1.Workflow()
|
|
.each(fns, function (fn, cb) { return fn.bind(pm)(fullPath, user, resource, cb); })
|
|
.error(function (e) { return callback(e, false); })
|
|
.done(function (successes) { return callback(null, successes.every(function (b) { return !!b; })); });
|
|
}
|
|
var PrivilegeManager = /** @class */ (function () {
|
|
function PrivilegeManager() {
|
|
}
|
|
PrivilegeManager.prototype.can = function (_fullPath, resource, _privilege, callback) {
|
|
var _this = this;
|
|
var user = resource.context.user;
|
|
if (resource.context.overridePrivileges || user && user.isAdministrator)
|
|
return callback(null, true);
|
|
if (_privilege.constructor !== String) {
|
|
new Workflow_1.Workflow()
|
|
.each(_privilege, function (privilege, cb) { return _this.can(_fullPath, resource, privilege, cb); })
|
|
.error(function (e) { return callback(e, false); })
|
|
.done(function (checks) { return callback(null, checks.every(function (b) { return !!b; })); });
|
|
return;
|
|
}
|
|
var fullPath = new export_1.Path(_fullPath);
|
|
var privilege = _privilege;
|
|
if (this._can)
|
|
return this._can(fullPath, user, resource, privilege, callback);
|
|
var method = this[privilege];
|
|
if (method)
|
|
method.bind(this)(fullPath, user, resource, callback);
|
|
else
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canWrite = function (fullPath, user, resource, callback) {
|
|
checkAll(this, [
|
|
this.canWriteLocks,
|
|
this.canWriteContent,
|
|
this.canWriteProperties
|
|
], fullPath, user, resource, callback);
|
|
};
|
|
PrivilegeManager.prototype.canWriteLocks = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canWriteContent = function (fullPath, user, resource, callback) {
|
|
checkAll(this, [
|
|
this.canWriteContentSource,
|
|
this.canWriteContentTranslated
|
|
], fullPath, user, resource, callback);
|
|
};
|
|
PrivilegeManager.prototype.canWriteContentTranslated = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canWriteContentSource = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canWriteProperties = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canRead = function (fullPath, user, resource, callback) {
|
|
checkAll(this, [
|
|
this.canReadLocks,
|
|
this.canReadContent,
|
|
this.canReadProperties
|
|
], fullPath, user, resource, callback);
|
|
};
|
|
PrivilegeManager.prototype.canReadLocks = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canReadContent = function (fullPath, user, resource, callback) {
|
|
checkAll(this, [
|
|
this.canReadContentSource,
|
|
this.canReadContentTranslated
|
|
], fullPath, user, resource, callback);
|
|
};
|
|
PrivilegeManager.prototype.canReadContentTranslated = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canReadContentSource = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
PrivilegeManager.prototype.canReadProperties = function (fullPath, user, resource, callback) {
|
|
callback(null, true);
|
|
};
|
|
return PrivilegeManager;
|
|
}());
|
|
exports.PrivilegeManager = PrivilegeManager;
|