diff --git a/README.md b/README.md index 400f630..500418a 100644 --- a/README.md +++ b/README.md @@ -321,17 +321,17 @@ await user.permissions().fetch() Syntax: -`and (&&)` - administrator && moderator +`and` - administrator,and,moderator -`or (||)` - administrator || moderator +`or` - administrator,or,moderator -`not (!)` - administrator && !moderator +`not` - administrator,and,not,moderator ```js // check roles Route .get('/users') - .middleware(['auth:jwt', 'is:(administrator || moderator) && !customer']) + .middleware(['auth:jwt', 'is:(administrator or moderator) and not customer']) // check permissions Route diff --git a/src/Middlewares/Is.js b/src/Middlewares/Is.js index e2a3671..8a659d1 100644 --- a/src/Middlewares/Is.js +++ b/src/Middlewares/Is.js @@ -12,8 +12,11 @@ class Is { async handle ({ auth }, next, ...args) { let expression = args[0] if (Array.isArray(expression)) { - expression = expression[0] + expression = expression.join(' ') } + expression = expression.replace(' or ', ' || ') + expression = expression.replace(' and ', ' && ') + expression = expression.replace(' not ', ' !') const is = await auth.user.is(expression) if (!is) { throw new ForbiddenException()