raspi-back/app/scopes.js

43 lines
1.3 KiB
JavaScript
Executable File

const scopes = [];
const addRouteToScope = (route, scope)=>{
// console.log(route, scope)
const scopeEntry = scopes.find((entry)=>entry.scope == scope)
if(scopeEntry){
scopeEntry.routes.push(route)
}else{
scopes.push({scope, routes:[route]})
}
}
const getRequiredScopes = (route)=>{
console.log(route)
const requiredScopes = ["admin"];
// console.log(scopes)
scopes.forEach(({scope, routes})=>{
// if(scope=="pwman"){
// console.log(route)
// }
if(routes.includes(route)){
requiredScopes.push(scope)
}
})
if(route.match(/^\/files\/video\/%2f/)){
//requiredScopes.push(route.replace(/%20/g, " ").replace(/%2f/g, "/").replace("//", "/"))
requiredScopes.push("files")
}
//console.log(requiredScopes)
return requiredScopes.length>1?requiredScopes.slice(1):requiredScopes
}
const compareScopes = (route, userScopes)=>{
// console.log(route, userScopes)
const requiredScopes = getRequiredScopes(route)
// console.log(requiredScopes)
if(!userScopes.includes("admin")&&requiredScopes.filter((scope)=>!userScopes.includes(scope)).length){
return false
}
// console.log("scopes ok")
return true
}
module.exports = {
addRouteToScope, compareScopes, getRequiredScopes
}