Skip to content

Commit 0dad6f1

Browse files
committed
Fixes
1 parent c0483c8 commit 0dad6f1

File tree

7 files changed

+17
-34
lines changed

7 files changed

+17
-34
lines changed

server/routes/wsimages.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ function init({ genomes }) {
4242
const getCookieString = promisify(cookieJar.getCookieString.bind(cookieJar))
4343
let sessionManager
4444
let sessionData
45+
let userSessionId: string | undefined = undefined
4546

4647
if (serverconfig.redis) {
4748
sessionManager = SessionManager.getInstance(serverconfig.redis.url)
48-
if (!req.session.user) {
49-
const userSessionId = crypto.createHash('sha256').update(crypto.randomBytes(32).toString('hex')).digest('hex')
50-
req.session.user = { id: userSessionId }
51-
}
49+
50+
userSessionId = crypto.createHash('sha256').update(crypto.randomBytes(32).toString('hex')).digest('hex')
51+
5252
sessionData = await sessionManager.getSession(wsimage)
5353
}
5454

@@ -57,15 +57,15 @@ function init({ genomes }) {
5757
: await getSessionId(cookieJar, getCookieString, setCookie, wsimage, ds, sampleId)
5858

5959
if (serverconfig.redis && sessionManager) {
60-
await manageUserSession(sessionManager, sessionData, wsimage, req.session.user.id, sessionId)
60+
await manageUserSession(sessionManager, sessionData, wsimage, userSessionId, sessionId)
6161
}
6262

6363
const getWsiImageResponse: any = await getWsiImageDimensions(sessionId, getCookieString)
6464

6565
const payload: WSImagesResponse = {
6666
status: 'ok',
6767
wsiSessionId: sessionId,
68-
browserImageInstanceId: serverconfig.redis ? req.session.user.id : undefined,
68+
browserImageInstanceId: serverconfig.redis ? userSessionId : undefined,
6969
slide_dimensions: getWsiImageResponse.slide_dimensions
7070
}
7171

server/src/app.middlewares.js

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,10 @@ import { authApi } from './auth.js'
1010
import * as validator from './validator.js'
1111
import { decode as urlJsonDecode } from '#shared/urljson.js'
1212
import jsonwebtoken from 'jsonwebtoken'
13-
import session from 'express-session'
14-
import connectRedis from 'connect-redis'
15-
import RedisClientHolder from '#src/redis/RedisClientHolder'
1613

1714
const basepath = serverconfig.basepath || ''
1815

1916
export function setAppMiddlewares(app) {
20-
if (serverconfig.redis) {
21-
const RedisStore = connectRedis(session)
22-
23-
const redisClientHolder = RedisClientHolder.getInstance(serverconfig.redis.url)
24-
// Create a Redis client
25-
const redisClient = redisClientHolder.getClient()
26-
27-
// Configure session middleware with Redis store
28-
const redisStore = new RedisStore({
29-
client: redisClient
30-
})
31-
32-
app.use(
33-
session({
34-
store: redisStore,
35-
secret: serverconfig.redis.secret,
36-
resave: false,
37-
saveUninitialized: false,
38-
cookie: { maxAge: 0 } // Prevent cookies from being set
39-
})
40-
)
41-
}
4217
app.use(setHeaders)
4318

4419
if (serverconfig.users) {

server/src/app.routes.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export const routeFiles = [
99
import('../routes/brainImaging.ts'),
1010
import('../routes/brainImagingSamples.ts'),
1111
import('../routes/burden.ts'),
12+
import('../routes/clearwsisession.ts'),
1213
import('../routes/correlationVolcano.ts'),
1314
import('../routes/dataset.ts'),
1415
import('../routes/dsdata.ts'),

server/src/redis/RedisClientHolder.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ export default class RedisClientHolder {
1111

1212
private constructor(redisUrl: string) {
1313
this.client = createClient({
14-
url: redisUrl,
15-
legacyMode: true // Required if using connect-redis
14+
url: redisUrl
1615
})
1716

1817
this.client.on('error', (err: any) => {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { createValidate } from 'typia'
2+
import type { ClearWSImagesSessionsRequest, ClearWSImagesSessionsResponse } from '../src/routes/clearwsisessions.ts'
3+
4+
export { clearWSImagesSessionsPayload } from '../src/routes/clearwsisessions.ts'
5+
6+
export const validClearWSImagesSessionsRequest = createValidate<ClearWSImagesSessionsRequest>()
7+
export const validClearWSImagesSessionsResponse = createValidate<ClearWSImagesSessionsResponse>()

shared/types/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export * from './routes/routeApi.ts'
88
export * from './routes/brainImaging.ts'
99
export * from './routes/brainImagingSamples.ts'
1010
export * from './routes/burden.ts'
11+
export * from './routes/clearwsisessions.ts'
1112
export * from './routes/correlationVolcano.ts'
1213
export * from './routes/dataset.ts'
1314
export * from './routes/dsdata.ts'

shared/types/src/routes/wsimages.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export type WSImagesResponse = {
1212
wsiSessionId?: string
1313
// Identifier for the image instance displayed in the browser
1414
// In case the same image is displayed in multiple browser windows, a new id is generated
15-
browserImageInstanceId: string
15+
browserImageInstanceId?: string
1616
slide_dimensions: number[]
1717
status: string
1818
}

0 commit comments

Comments
 (0)