MCPcopy Create free account
hub / github.com/DeepNotesApp/DeepNotes / generateSessionValues

Function generateSessionValues

apps/app-server/src/utils/sessions.ts:12–75  ·  view source on GitHub ↗
(input: {
  sessionId: string;
  userId: string;
  deviceId?: string;
  rememberSession: boolean;
  reply: FastifyReply;
  dtrx?: DataTransaction;
})

Source from the content-addressed store, hash-verified

10import { generateTokens } from '../utils/jwt';
11
12export async function generateSessionValues(input: {
13 sessionId: string;
14 userId: string;
15 deviceId?: string;
16 rememberSession: boolean;
17 reply: FastifyReply;
18 dtrx?: DataTransaction;
19}) {
20 // Generate session values
21
22 const sessionKey = sodium.crypto_aead_xchacha20poly1305_ietf_keygen();
23 const refreshCode = nanoid();
24
25 // Update session in database
26
27 if (input.deviceId != null) {
28 await SessionModel.query(input.dtrx?.trx).insert({
29 id: input.sessionId,
30
31 user_id: input.userId,
32 device_id: input.deviceId,
33
34 encryption_key: sessionKey,
35 refresh_code: refreshCode,
36
37 expiration_date: addDays(new Date(), 7),
38 });
39 } else {
40 await SessionModel.query(input.dtrx?.trx)
41 .findById(input.sessionId)
42 .patch({
43 encryption_key: sessionKey,
44 refresh_code: refreshCode,
45
46 last_refresh_date: new Date(),
47 expiration_date: addDays(new Date(), 7),
48 });
49 }
50
51 // Generate tokens
52
53 const tokens = generateTokens({
54 userId: input.userId,
55 sessionId: input.sessionId,
56 refreshCode,
57 rememberSession: input.rememberSession,
58 });
59
60 // Set cookies for client
61
62 setCookies({
63 reply: input.reply,
64 accessToken: tokens.accessToken,
65 refreshToken: tokens.refreshToken,
66 rememberSession: input.rememberSession,
67 });
68
69 return {

Callers 3

startDemoFunction · 0.90
loginFunction · 0.90
refreshFunction · 0.90

Calls 5

addDaysFunction · 0.90
generateTokensFunction · 0.90
setCookiesFunction · 0.90
insertMethod · 0.80
patchMethod · 0.80

Tested by

no test coverage detected