add session regeneration when login

This commit is contained in:
Henry 2025-07-21 13:37:09 +01:00
parent dca91b979b
commit 39665e133b
5 changed files with 51 additions and 16 deletions

View File

@ -259,12 +259,19 @@ export const initializeJwtCookieMiddleware = async (app: express.Application, id
if (identityManager.isEnterprise() && !identityManager.isLicenseValid()) { if (identityManager.isEnterprise() && !identityManager.isLicenseValid()) {
return res.status(401).json({ redirectUrl: '/license-expired' }) return res.status(401).json({ redirectUrl: '/license-expired' })
} }
req.session.regenerate((regenerateErr) => {
if (regenerateErr) {
return next ? next(regenerateErr) : res.status(500).json({ message: 'Session regeneration failed' })
}
req.login(user, { session: true }, async (error) => { req.login(user, { session: true }, async (error) => {
if (error) { if (error) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }
return setTokenOrCookies(res, user, true, req) return setTokenOrCookies(res, user, true, req)
}) })
})
} catch (error: any) { } catch (error: any) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }

View File

@ -92,10 +92,17 @@ class Auth0SSO extends SSOBase {
} }
return next ? next(err) : res.status(401).json(err) return next ? next(err) : res.status(401).json(err)
} }
req.session.regenerate((regenerateErr) => {
if (regenerateErr) {
return next ? next(regenerateErr) : res.status(500).json({ message: 'Session regeneration failed' })
}
req.login(user, { session: true }, async (error) => { req.login(user, { session: true }, async (error) => {
if (error) return next ? next(error) : res.status(401).json(error) if (error) return next ? next(error) : res.status(401).json(error)
return setTokenOrCookies(res, user, true, req, true, true) return setTokenOrCookies(res, user, true, req, true, true)
}) })
})
} catch (error) { } catch (error) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }

View File

@ -48,10 +48,17 @@ class AzureSSO extends SSOBase {
} }
return next ? next(err) : res.status(401).json(err) return next ? next(err) : res.status(401).json(err)
} }
req.session.regenerate((regenerateErr) => {
if (regenerateErr) {
return next ? next(regenerateErr) : res.status(500).json({ message: 'Session regeneration failed' })
}
req.login(user, { session: true }, async (error) => { req.login(user, { session: true }, async (error) => {
if (error) return next ? next(error) : res.status(401).json(error) if (error) return next ? next(error) : res.status(401).json(error)
return setTokenOrCookies(res, user, true, req, true, true) return setTokenOrCookies(res, user, true, req, true, true)
}) })
})
} catch (error) { } catch (error) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }

View File

@ -81,10 +81,17 @@ class GithubSSO extends SSOBase {
} }
return next ? next(err) : res.status(401).json(err) return next ? next(err) : res.status(401).json(err)
} }
req.session.regenerate((regenerateErr) => {
if (regenerateErr) {
return next ? next(regenerateErr) : res.status(500).json({ message: 'Session regeneration failed' })
}
req.login(user, { session: true }, async (error) => { req.login(user, { session: true }, async (error) => {
if (error) return next ? next(error) : res.status(401).json(error) if (error) return next ? next(error) : res.status(401).json(error)
return setTokenOrCookies(res, user, true, req, true, true) return setTokenOrCookies(res, user, true, req, true, true)
}) })
})
} catch (error) { } catch (error) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }

View File

@ -97,10 +97,17 @@ class GoogleSSO extends SSOBase {
} }
return next ? next(err) : res.status(401).json(err) return next ? next(err) : res.status(401).json(err)
} }
req.session.regenerate((regenerateErr) => {
if (regenerateErr) {
return next ? next(regenerateErr) : res.status(500).json({ message: 'Session regeneration failed' })
}
req.login(user, { session: true }, async (error) => { req.login(user, { session: true }, async (error) => {
if (error) return next ? next(error) : res.status(401).json(error) if (error) return next ? next(error) : res.status(401).json(error)
return setTokenOrCookies(res, user, true, req, true, true) return setTokenOrCookies(res, user, true, req, true, true)
}) })
})
} catch (error) { } catch (error) {
return next ? next(error) : res.status(401).json(error) return next ? next(error) : res.status(401).json(error)
} }