fix: fix csrf token handling after login

This commit is contained in:
Christoph Haas 2025-03-29 17:21:54 +01:00
parent 6cbccf6d43
commit 3723e4cc75
2 changed files with 9 additions and 5 deletions

View File

@ -72,7 +72,6 @@ const router = createRouter({
router.beforeEach(async (to) => {
const auth = authStore()
const sec = securityStore()
// check if the request was a successful oauth login
if ('wgLoginState' in to.query && !auth.IsAuthenticated) {
@ -122,8 +121,13 @@ router.beforeEach(async (to) => {
auth.SetReturnUrl(to.fullPath) // store original destination before starting the auth process
return '/login'
}
})
if (publicPages.includes(to.path)) {
router.afterEach(async (to, from) => {
const sec = securityStore()
const csrfPages = ['/login']
if (csrfPages.includes(to.path)) {
await sec.LoadSecurityProperties() // make sure we have a valid csrf token
}
})

View File

@ -68,14 +68,14 @@ func (m *Middleware) RefreshToken(next http.Handler) http.Handler {
// mask the token
maskedToken := maskToken(token, key)
// store the encoded token in the session
encodedToken := encodeToken(maskedToken)
m.o.sessionWriter(r, encodedToken)
// pass the token down the chain via the context
r = r.WithContext(setToken(r.Context(), encodedToken))
// store the token in the session
m.o.sessionWriter(r, encodedToken)
next.ServeHTTP(w, r)
})
}