/** * @implements {AuthHandlerInterface} */ module.exports = { /** * @property {AuthHandlerInterface~AuthManifest} */ manifest: { info: { name: 'basic', version: '1.0.0' }, updates: [ { property: 'Authorization', type: 'header' } ] }, /** * Initializes an item (extracts parameters from intermediate requests if any, etc) * before the actual authorization step. * * @param {AuthInterface} auth * @param {Response} response * @param {AuthHandlerInterface~authInitHookCallback} done */ init: function (auth, response, done) { done(null); }, /** * Verifies whether the request has valid basic auth credentials (which is always). * Sanitizes the auth parameters if needed. * * @todo - add support for prompting a user for basic auth credentials if not already provided * * @param {AuthInterface} auth * @param {AuthHandlerInterface~authPreHookCallback} done */ pre: function (auth, done) { done(null, true); }, /** * Verifies whether the basic auth succeeded. * * @param {AuthInterface} auth * @param {Response} response * @param {AuthHandlerInterface~authPostHookCallback} done */ post: function (auth, response, done) { done(null, true); }, /** * Signs a request. * * @param {AuthInterface} auth * @param {Request} request * @param {AuthHandlerInterface~authSignHookCallback} done */ sign: function (auth, request, done) { var username = auth.get('username') || '', password = auth.get('password') || ''; request.removeHeader('Authorization', {ignoreCase: true}); request.addHeader({ key: 'Authorization', value: 'Basic ' + Buffer.from(`${username}:${password}`, 'utf8').toString('base64'), system: true }); return done(); } };