mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-21 07:29:37 +01:00
feat: Add middleware plugins from fl4re/sinopia
This is basically the PR fl4re/sinopia#18 by @fredr
This commit is contained in:
parent
6a8077a883
commit
374a5e8e7b
@ -186,3 +186,8 @@ notify:
|
|||||||
content: ' {{ handlebar-expression }}'
|
content: ' {{ handlebar-expression }}'
|
||||||
# For Slack, follow the following format:
|
# For Slack, follow the following format:
|
||||||
# content: '{ "text": "Package *{{ name }}* published to version *{{ dist-tags.latest }}*", "username": "Verdaccio", "icon_emoji": ":package:" }'
|
# content: '{ "text": "Package *{{ name }}* published to version *{{ dist-tags.latest }}*", "username": "Verdaccio", "icon_emoji": ":package:" }'
|
||||||
|
|
||||||
|
# Configure plugins that can register custom middlewares
|
||||||
|
#middlewares:
|
||||||
|
# plugin-name:
|
||||||
|
# setting: true
|
||||||
|
@ -11,6 +11,7 @@ const Cats = require('../lib/status-cats');
|
|||||||
const Storage = require('../lib/storage');
|
const Storage = require('../lib/storage');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
|
const load_plugins = require('../lib/plugin-loader').load_plugins;
|
||||||
|
|
||||||
module.exports = function(config_hash) {
|
module.exports = function(config_hash) {
|
||||||
// Config
|
// Config
|
||||||
@ -80,6 +81,17 @@ module.exports = function(config_hash) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// register middleware plugins
|
||||||
|
const plugin_params = {
|
||||||
|
config: config,
|
||||||
|
logger: Logger.logger,
|
||||||
|
};
|
||||||
|
const plugins = load_plugins(config, config.middlewares, plugin_params, function(p) {
|
||||||
|
return p.register_middlewares;
|
||||||
|
});
|
||||||
|
plugins.forEach(function(p) {
|
||||||
|
p.register_middlewares(app, auth, storage);
|
||||||
|
});
|
||||||
|
|
||||||
// For npm request
|
// For npm request
|
||||||
app.use(require('./endpoint')(config, auth, storage));
|
app.use(require('./endpoint')(config, auth, storage));
|
||||||
|
17
test/functional/fixtures/plugins/middlewares.js
Normal file
17
test/functional/fixtures/plugins/middlewares.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
module.exports = Plugin
|
||||||
|
|
||||||
|
function Plugin(config, stuff) {
|
||||||
|
var self = Object.create(Plugin.prototype)
|
||||||
|
self._config = config
|
||||||
|
return self
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugin.prototype.register_middlewares = function (app, auth, storage) {
|
||||||
|
var message = this._config.message
|
||||||
|
|
||||||
|
app.get('/test/route', function (req, res, next) {
|
||||||
|
res.status(200)
|
||||||
|
return next({ ok: message })
|
||||||
|
});
|
||||||
|
}
|
@ -74,6 +74,7 @@ describe('Create registry servers', function() {
|
|||||||
require('./adduser/logout')();
|
require('./adduser/logout')();
|
||||||
require('./tags/addtag.spec')();
|
require('./tags/addtag.spec')();
|
||||||
require('./plugins/auth.spec')();
|
require('./plugins/auth.spec')();
|
||||||
|
require('./plugins/middleware.spec')();
|
||||||
require('./notifications/notify')();
|
require('./notifications/notify')();
|
||||||
// requires packages published to server1/server2
|
// requires packages published to server1/server2
|
||||||
require('./uplink.cache.spec')();
|
require('./uplink.cache.spec')();
|
||||||
|
19
test/functional/plugins/middleware.spec.js
Normal file
19
test/functional/plugins/middleware.spec.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
require('../lib/startup');
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = function () {
|
||||||
|
const server2 = process.server2;
|
||||||
|
|
||||||
|
describe('middlewares', function() {
|
||||||
|
it('should serve the registered route', function() {
|
||||||
|
return server2.request({
|
||||||
|
uri: '/test/route',
|
||||||
|
method: 'GET'
|
||||||
|
})
|
||||||
|
.status(200)
|
||||||
|
.body_ok('this is a custom route')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
@ -14,6 +14,10 @@ uplinks:
|
|||||||
web:
|
web:
|
||||||
enable: true
|
enable: true
|
||||||
|
|
||||||
|
middlewares:
|
||||||
|
../fixtures/plugins/middlewares:
|
||||||
|
message: this is a custom route
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
../fixtures/plugins/authenticate:
|
../fixtures/plugins/authenticate:
|
||||||
accept_user: authtest2
|
accept_user: authtest2
|
||||||
|
Loading…
Reference in New Issue
Block a user