a way to share laravel session with node. please feel free to make PR's with additional functionality such as getting decoded sessions from other session drivers
This is a simple utility which helps you obtain the laravel session key. You pass in your laravel key, as well as your laravel_session found in your cookie and we return a key that helps you find the session details.
getAppKey(pathToEnvFile): resolves APP_KEY found in .env without 'base64:'
getSessionKey(laravel_session, laravelAppKey, [optional keyLength]): returns laravel session key such as 'ffdbeaac243c2d691d64084710d428d575c07007'
getSessionFromRedis(laravelSessionKey, redisConnection, [optional sessionPrefix='laravel_cache']): returns a promise that resolves with the session object. On laravel 5.4 or less, the sessionPrefix should be 'laravel'
getSessionFromMysql(laravelSessionKey, mySqlConnection [, databaseTable]): returns a promise that resolves with the session object
getSessionFromFile(laravelSessionKey, sessionFilePath): returns a promise that resolves with session object
let laravelSession = require('node-laravel-session');
Get your laravel_session from the cookie. for example:
let cookie = require('cookie');
let session = cookie.parse(req.headers.cookie).laravel_session;
Get your app key, for example "MES4V4nAY+eLns059EwEXaXbCB2YKLHCP6bA7tc54KI=" by pasting it or by parsing the laravel .env file with a regex to obtain it. DO NOT INCLUDE "Base64:". or use the provided function function.
laravelSession.getAppKey('path/to/your/.env')
.then((appKey) => {
// continue
});
Then just find the key by calling the function 'getSessionKey'
let sessionKey = laravelSession.getSessionKey(session, appKey);
Get your complete laravel session. Redis example
laravelSession.getSessionFromMysql(sessionKey, mySqlConnection)
.then((session) => {
console.log('here is the full session:' + session);
});