forked from scrollback/scrollback
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauthorizer.js
39 lines (33 loc) · 1.29 KB
/
authorizer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"use strict";
var SbError = require("../lib/SbError.js"),
events = ["text", "edit", "away", "back", "join", "part", "admit", "expel", "getTexts", "getThreads"],
sessionUtils = require("../lib/session-utils.js"),
userUtils = require("../lib/user-utils.js");
module.exports = function (core, config) {
var domainAuth = require("./rules/domainRules.js")(core, config),
permissionRules = require("./rules/permissionRules.js")(core, config),
relationshipRules = require("./rules/relationshipRules.js")(core, config);
events.forEach(function (event) {
core.on(event, function (action, next) {
var error;
if (!sessionUtils.isWebSession(action.session)) return next();
if (!action.user.role || action.user.role === "none") {
action.user.role = "registered";
}
error = domainAuth(action);
if (error) return next(error);
error = permissionRules(action);
if (error) return next(error);
error = relationshipRules(action);
if (error) return next(error);
next();
}, "authorization");
});
require("./authRules/initAuth.js")(core, config);
require("./authRules/userAuth.js")(core, config);
require("./authRules/roomAuth.js")(core, config);
require("./authRules/queryAuth.js")(core, config);
core.on("upload/getPolicy", function (action, next) {
next();
}, "authorization");
};