SecurityManager.prototype.addHandler = function(name, handler) { if (!_validator.checkStringLength(name, 1024)) { throw new Error("name"); } else if ("function" !== typeof handler) { throw new Error("handler"); } else if (_handlers[name]) { throw new Error("Handler already defined: " + name); } else { _handlers[name] = handler; } };
SecurityManager.prototype.addIdCheckers = function(name, checker) { if (!_validator.checkStringLength(name, 1024)) { throw new Error("name"); } else if ("function" !== typeof checker) { throw new Error("checker"); } else if (_idCheckers[name]) { throw new Error("Id checker already defined: " + name); } else { _idCheckers[name] = checker; } };
SecurityManager.prototype.isGranted = function(parameters) { var handler = null; if (!_validator.isNumber(parameters.action, 0)) { throw new Error("parameters.action"); } if (!_validator.checkStringLength(parameters.whoId, 12) && !_validator.isNumber(parameters.whoId, 0) && !_validator.isUUID(parameters.whoId)) { throw new Error("parameters.whoId"); } if (!_validator.checkStringLength(parameters.whoType, 1024)) { throw new Error("parameters.whoType"); } if (!_validator.isNumber(parameters.whatId, 0) && !_validator.isUUID(parameters.whatId) && !_validator.checkStringLength(parameters.whatId, 1024)) { throw new Error("parameters.whatId"); } if (!_validator.checkStringLength(parameters.whatType, 1024)) { throw new Error("parameters.whatType"); } if (!_validator.isObject(parameters.session, false, false)) { throw new Error("parameters.session"); } if (!_validator.isFunction(handler = _handlers[parameters.whatType])) { throw new Error("Unsupported handler for whatType: " + parameters.whatType); } return handler(parameters); };