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 }