@fdm-monster/server
Version:
FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.
110 lines (109 loc) • 3.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
AUTH_ERROR_REASON: function() {
return AUTH_ERROR_REASON;
},
PERMS: function() {
return PERMS;
},
PERM_GROUP: function() {
return PERM_GROUP;
},
ROLES: function() {
return ROLES;
},
ROLE_PERMS: function() {
return ROLE_PERMS;
},
allPerms: function() {
return allPerms;
},
flattenPermissionDefinition: function() {
return flattenPermissionDefinition;
},
serializePerm: function() {
return serializePerm;
}
});
const _lodash = require("lodash");
function serializePerm(group, perm) {
return `${group}.${perm}`;
}
const AUTH_ERROR_REASON = {
IncorrectCredentials: "IncorrectCredentials",
InvalidOrExpiredRefreshToken: "InvalidOrExpiredRefreshToken",
InvalidOrExpiredAuthToken: "InvalidOrExpiredAuthToken",
PasswordChangeRequired: "PasswordChangeRequired",
LoginRequired: "LoginRequired",
AccountNotVerified: "AccountNotVerified"
};
const PERM_GROUP = {
PrinterFiles: "PrinterFiles",
PrinterSettings: "PrinterSettings",
Floors: "PrinterFloors",
PrintCompletion: "PrintCompletion",
ServerInfo: "ServerInfo"
};
const PERMS = {
[PERM_GROUP.PrinterFiles]: {
Default: serializePerm(PERM_GROUP.PrinterFiles, "Default"),
Get: serializePerm(PERM_GROUP.PrinterFiles, "Get"),
Delete: serializePerm(PERM_GROUP.PrinterFiles, "Delete"),
Clear: serializePerm(PERM_GROUP.PrinterFiles, "Clear"),
Upload: serializePerm(PERM_GROUP.PrinterFiles, "Upload"),
Actions: serializePerm(PERM_GROUP.PrinterFiles, "Actions")
},
[PERM_GROUP.PrintCompletion]: {
Default: serializePerm(PERM_GROUP.PrintCompletion, "Default"),
List: serializePerm(PERM_GROUP.PrintCompletion, "List")
},
[PERM_GROUP.Floors]: {
Default: serializePerm(PERM_GROUP.Floors, "Default"),
List: serializePerm(PERM_GROUP.Floors, "List"),
Get: serializePerm(PERM_GROUP.Floors, "Get"),
Create: serializePerm(PERM_GROUP.Floors, "Create"),
Update: serializePerm(PERM_GROUP.Floors, "Update"),
Delete: serializePerm(PERM_GROUP.Floors, "Delete")
},
[PERM_GROUP.PrinterSettings]: {
Default: serializePerm(PERM_GROUP.PrinterSettings, "Default"),
Get: serializePerm(PERM_GROUP.PrinterSettings, "Get")
},
[PERM_GROUP.ServerInfo]: {
Default: serializePerm(PERM_GROUP.ServerInfo, "Default"),
Get: serializePerm(PERM_GROUP.ServerInfo, "Get")
}
};
function flattenPermissionDefinition() {
const permissions = [];
for (let key of Object.values(PERM_GROUP)){
for (let permissionName of Object.values(PERMS[key])){
permissions.push(permissionName);
}
}
return permissions;
}
function allPerms(group) {
if (!group || !PERMS[group]) throw new Error(`Permission group name '${group}' was not found`);
return Object.values(PERMS[group]);
}
const ROLES = {
ADMIN: "ADMIN",
OPERATOR: "OPERATOR",
GUEST: "GUEST"
};
const ROLE_PERMS = {
[ROLES.ADMIN]: (0, _lodash.union)(allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrintCompletion), allPerms(PERM_GROUP.PrinterSettings), allPerms(PERM_GROUP.ServerInfo)),
[ROLES.OPERATOR]: (0, _lodash.union)(allPerms(PERM_GROUP.Floors), allPerms(PERM_GROUP.PrinterFiles), allPerms(PERM_GROUP.PrintCompletion), allPerms(PERM_GROUP.PrinterSettings)),
[ROLES.GUEST]: []
};
//# sourceMappingURL=authorization.constants.js.map