filesafe/controllers/permissionController.js
Bobby Wibowo fcf4c00de7
Moved permission-related functions to permissionController
Fix: non-root staffs are now able to delete files by any users (previously they could only list them).
2018-10-13 18:06:58 +07:00

33 lines
1013 B
JavaScript

const permissionController = {}
permissionController.permissions = {
user: 0, // upload & delete own files, create & delete albums
moderator: 50, // delete other user's files
admin: 80, // manage users (disable accounts) & create moderators
superadmin: 100 // create admins
// groups will inherit permissions from groups which have lower value
}
permissionController.is = (user, group) => {
// root bypass
if (user.username === 'root') { return true }
const permission = user.permission || 0
return permission >= permissionController.permissions[group]
}
permissionController.higher = (user, target) => {
const userPermission = user.permission || 0
const targetPermission = target.permission || 0
return userPermission > targetPermission
}
permissionController.mapPermissions = user => {
const map = {}
Object.keys(permissionController.permissions).forEach(group => {
map[group] = permissionController.is(user, group)
})
return map
}
module.exports = permissionController