Merge pull request #889 from gradido/hadnle-expired-jwt

feat: Redirect to Login when JWT has expired
This commit is contained in:
Moriz Wahl 2021-09-24 11:17:53 +02:00 committed by GitHub
commit f792d8e02b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 4 deletions

View File

@ -5,7 +5,7 @@ import jwt from 'jsonwebtoken'
import CONFIG from '../config/' import CONFIG from '../config/'
export default (token: string): any => { export default (token: string): any => {
if (!token) return null if (!token) return new Error('401 Unauthorized')
let sessionId = null let sessionId = null
try { try {
const decoded = jwt.verify(token, CONFIG.JWT_SECRET) const decoded = jwt.verify(token, CONFIG.JWT_SECRET)
@ -15,6 +15,6 @@ export default (token: string): any => {
sessionId, sessionId,
} }
} catch (err) { } catch (err) {
return null throw new Error('403.13 - Client certificate revoked')
} }
} }

View File

@ -36,7 +36,8 @@
"error": { "error": {
"change-password": "Fehler beim Ändern des Passworts", "change-password": "Fehler beim Ändern des Passworts",
"error": "Fehler", "error": "Fehler",
"no-account": "Leider konnten wir keinen Account finden mit diesen Daten!" "no-account": "Leider konnten wir keinen Account finden mit diesen Daten!",
"session-expired": "Sitzung abgelaufen!"
}, },
"form": { "form": {
"amount": "Betrag", "amount": "Betrag",

View File

@ -36,7 +36,8 @@
"error": { "error": {
"change-password": "Error while changing password", "change-password": "Error while changing password",
"error": "Error", "error": "Error",
"no-account": "Unfortunately we could not find an account to the given data!" "no-account": "Unfortunately we could not find an account to the given data!",
"session-expired": "The session expired"
}, },
"form": { "form": {
"amount": "Amount", "amount": "Amount",

View File

@ -21,6 +21,12 @@ const authLink = new ApolloLink((operation, forward) => {
}, },
}) })
return forward(operation).map((response) => { return forward(operation).map((response) => {
if (response.errors && response.errors[0].message === '403.13 - Client certificate revoked') {
response.errors[0].message = i18n.t('error.session-expired')
store.dispatch('logout', null)
if (router.currentRoute.path !== '/login') router.push('/login')
return response
}
const newToken = operation.getContext().response.headers.get('token') const newToken = operation.getContext().response.headers.get('token')
if (newToken) store.commit('token', newToken) if (newToken) store.commit('token', newToken)
return response return response