2018-09-06 15:30:06 +00:00
|
|
|
const uuid = require('uuid/v1');
|
|
|
|
|
|
|
|
class Authenticator {
|
|
|
|
|
|
|
|
constructor(embark, _options) {
|
|
|
|
this.authToken = uuid();
|
2018-09-06 17:33:15 +00:00
|
|
|
this.embark = embark;
|
|
|
|
this.logger = embark.logger;
|
2018-09-06 15:30:06 +00:00
|
|
|
|
2018-09-06 17:33:15 +00:00
|
|
|
this.registerCalls();
|
2018-09-06 17:24:39 +00:00
|
|
|
embark.events.once('outputDone', () => {
|
2018-09-06 15:30:06 +00:00
|
|
|
embark.logger.info(__('Access the web backend with the following url: %s',
|
2018-09-06 17:24:39 +00:00
|
|
|
('http://localhost:8000/embark?token=' + this.authToken).underline));
|
2018-09-06 15:30:06 +00:00
|
|
|
});
|
2018-09-06 17:33:15 +00:00
|
|
|
}
|
2018-09-06 15:30:06 +00:00
|
|
|
|
2018-09-06 17:33:15 +00:00
|
|
|
registerCalls() {
|
|
|
|
this.embark.registerAPICall(
|
2018-09-06 15:30:06 +00:00
|
|
|
'post',
|
|
|
|
'/embark-api/authenticate',
|
|
|
|
(req, res) => {
|
|
|
|
if (req.body.token !== this.authToken) {
|
2018-09-06 17:33:15 +00:00
|
|
|
this.logger.warn(__('Someone tried and failed to authenticate to the backend'));
|
|
|
|
this.logger.warn(__('- User-Agent: %s', req.headers['user-agent']));
|
|
|
|
this.logger.warn(__('- Referer: %s', req.headers.referer));
|
2018-09-06 18:39:59 +00:00
|
|
|
return res.send({error: __('Wrong authentication token. Get your token from the Embark console by typing `token`')});
|
2018-09-06 15:30:06 +00:00
|
|
|
}
|
|
|
|
res.send();
|
|
|
|
}
|
|
|
|
);
|
2018-09-06 17:33:15 +00:00
|
|
|
|
|
|
|
this.embark.registerConsoleCommand((cmd, _options) => {
|
|
|
|
return {
|
|
|
|
match: () => cmd === "token",
|
|
|
|
process: (callback) => {
|
|
|
|
callback(null, __('Your authorisation token: %s', this.authToken));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
});
|
2018-09-06 15:30:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Authenticator;
|