2025-10-01 19:55:38 +02:00

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;