Skip to content

Commit 7c0f84b

Browse files
feat(session): add ability to store app-specific session data (#36)
Co-authored-by: SavelevMatthew <[email protected]>
1 parent 0580b2f commit 7c0f84b

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

packages/session/src/session.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type _List = {
1313
};
1414
type _Keystone = { lists: Record<string, _List> };
1515

16-
export class SessionManager {
16+
export class SessionManager<SessionMeta extends Record<string, string>> {
1717
_cookieSecret: SessionOptions['secret'];
1818
_cookie: SessionOptions['cookie'];
1919
_sessionStore: SessionOptions['store'];
@@ -146,12 +146,16 @@ export class SessionManager {
146146
return item;
147147
}
148148

149-
startAuthedSession(req: Request, { item, list }: { item: _Item; list: _List }) {
149+
startAuthedSession(
150+
req: Request,
151+
{ item, list, meta }: { item: _Item; list: _List; meta?: SessionMeta }
152+
) {
150153
return new Promise((resolve, reject) =>
151154
req.session.regenerate(err => {
152155
if (err) return reject(err);
153156
(req.session as any).keystoneListKey = list.key;
154157
(req.session as any).keystoneItemId = item.id;
158+
(req.session as any).keystoneSessionMeta = meta;
155159
resolve(cookieSignature.sign(req.session.id, this._cookieSecret));
156160
})
157161
);
@@ -169,8 +173,15 @@ export class SessionManager {
169173

170174
getContext(req: Request) {
171175
return {
172-
startAuthedSession: ({ item, list }: { item: _Item; list: _List }) =>
173-
this.startAuthedSession(req, { item, list }),
176+
startAuthedSession: ({
177+
item,
178+
list,
179+
meta,
180+
}: {
181+
item: _Item;
182+
list: _List;
183+
meta?: SessionMeta;
184+
}) => this.startAuthedSession(req, { item, list, meta }),
174185
endAuthedSession: () => this.endAuthedSession(req),
175186
};
176187
}

0 commit comments

Comments
 (0)