event_request
Version:
A Backend Server
64 lines (53 loc) • 1.32 kB
JavaScript
;
const PluginInterface = require( './../plugin_interface' );
const Session = require( '../../components/session/session' );
/**
* @brief Adds session in the event request
*/
class SessionPlugin extends PluginInterface {
constructor( id, options = {} ) {
super( id, options );
this.server = null;
}
/**
* @brief This plugin depends on having a cache
*
* @return {Array}
*/
getPluginDependencies() {
return ['er_data_server'];
}
/**
* @brief creates the namespace when attaching to the server
*
* @param {Server} server
*/
setServerOnRuntime( server ) {
this.dataServer = server.er_data_server.getServer();
}
/**
* @brief Adds a session to the event request
*
* @details Even tho the cleanUp will remove the event.session
* the event.session.saveSession() in the send
* has already queued up the session save so it will still execute.
*
* @return {Array}
*/
getPluginMiddleware() {
return [{
handler : async ( event ) => {
if ( ! event.session ) {
event.session = new Session( event, this.options );
await event.session.init();
event.on( 'cleanUp', async () => {
await event.session.saveSession();
event.session = undefined;
});
}
event.next();
}
}];
}
}
module.exports = SessionPlugin;