mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-02 16:41:24 +03:00
23154f0739
* Refactored SessionStore to use @tryghost/errors no-issue * Updated tests to test exposed API no-issue This will make refactoring easier, as we only have the "public" contract to maintain * Refactored session functionality to SessionService no-issue This splits the session logic away from the HTTP responding logic, which will allows us to decouple session creation/modification from the API. Eventually this can be used to create sessions based on magiclink style tokens. * Instantiated and exported the new SessionService no-issue * Refactored session middleware to take session service no-issue This removes duplication of code and makes the middleware more explicit that it's just a wrapper around the session service. * Updated to use external @tryghost/session-service no-issue
38 lines
932 B
JavaScript
38 lines
932 B
JavaScript
function SessionMiddleware({sessionService}) {
|
|
async function createSession(req, res, next) {
|
|
try {
|
|
await sessionService.createSessionForUser(req, res, req.user);
|
|
res.sendStatus(201);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
|
|
async function destroySession(req, res, next) {
|
|
try {
|
|
await sessionService.destroyCurrentSession(req);
|
|
res.sendStatus(204);
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
|
|
async function authenticate(req, res, next) {
|
|
try {
|
|
const user = await sessionService.getUserForSession(req, res);
|
|
req.user = user;
|
|
next();
|
|
} catch (err) {
|
|
next(err);
|
|
}
|
|
}
|
|
|
|
return {
|
|
createSession: createSession,
|
|
destroySession: destroySession,
|
|
authenticate: authenticate
|
|
};
|
|
}
|
|
|
|
module.exports = SessionMiddleware;
|