Adds Middleware API (#40)

* Adds test project

* Adds e2e for end-2-end tests

* Update gitignore

* Update loaders

* Creates test project

* v0.1.27

* Upgrade

* dependency fixes

* Load project plugins in the plugin loader

* Issue with instanceof

* Fixes versioning issues

* Adds medusa middleware api

* Adds documentation

* Fixes tests
This commit is contained in:
Sebastian Rindom authored and GitHub committed 2020-05-01 13:33:03 +02:00
1 parent 964e26e310
commit 516bc7675d
46 files changed
+10163 -977

No files matched your search

+5 -1
View File
@@ -1,5 +1,9 @@
{
"plugins": ["@babel/plugin-proposal-class-properties"],
"plugins": [
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-classes",
"@babel/plugin-transform-instanceof"
],
"presets": ["@babel/preset-env"],
"env": {
"test": {
@@ -9,9 +9,9 @@
"directory": "packages/medusa-plugin-permissions"
},
"scripts": {
"build": "babel src --out-dir dist/ --ignore **/__tests__",
"build": "babel src --out-dir . --ignore **/__tests__",
"prepare": "cross-env NODE_ENV=production npm run build",
"watch": "babel -w src --out-dir dist/ --ignore **/__tests__",
"watch": "babel -w src --out-dir . --ignore **/__tests__",
"test": "jest"
},
"author": "Oliver Juhl",
@@ -20,6 +20,8 @@
"@babel/cli": "^7.7.5",
"@babel/core": "^7.7.5",
"@babel/plugin-proposal-class-properties": "^7.7.4",
"@babel/plugin-transform-classes": "^7.9.5",
"@babel/plugin-transform-instanceof": "^7.8.3",
"@babel/plugin-transform-runtime": "^7.7.6",
"@babel/preset-env": "^7.7.5",
"@babel/runtime": "^7.7.6",
@@ -27,9 +29,9 @@
"jest": "^25.5.2"
},
"dependencies": {
"medusa-core-utils": "^1.0.0",
"medusa-interfaces": "^1.0.0",
"medusa-test-utils": "^1.0.0",
"medusa-core-utils": "^0.3.0",
"medusa-interfaces": "^0.3.0",
"medusa-test-utils": "^0.3.0",
"mongoose": "^5.8.0"
}
}
@@ -0,0 +1,16 @@
// This middleware is injected to ensure authorization of requests
// Since this middleware uses the user object on the request, this should be
// injected after authentication in the core middleware, hence we name
// the middleware postAuth.
export default {
postAuthentication: () => {
return (err, req, res, next) => {
const permissionService = req.scope.resolve("permissionService")
if (permissionService.hasPermission(req.user, req.method, req.path)) {
next()
} else {
res.status(422)
}
}
}
}
@@ -1,14 +0,0 @@
// This middleware is injected to ensure authorization of requests
// Since this middleware uses the user object on the request, this should be
// injected after authentication in the core middleware, hence we name
// the middleware postAuth.
export default postAuth = () => {
return (err, req, res, next) => {
const permissionService = req.scope.resolve("permissionService")
if (permissionService.hasPermission(req.user, req.method, req.path)) {
next()
} else {
res.status(422)
}
}
}
@@ -55,6 +55,7 @@ class PermissionService extends BaseService {
}
async hasPermission(user, method, endpoint) {
if (!user) return false
for (let i = 0; i < user.metadata.roles.length; i++) {
const role = user.metadata.roles[i]
const permissions = await this.retrieveRole(role)