From 6759a0d02232ff9ad8d3381147bb2d7e7b5b6c64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCrkan=20G=C3=BCran?= Date: Wed, 18 Jan 2023 16:20:08 +0100 Subject: [PATCH] Return to login screen when refresh token expires --- .../src/modules/login/plugin.tsx | 8 +++++--- .../src/modules/login/services.ts | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx b/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx index 69bbdedd8..1dc29a9e3 100644 --- a/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx +++ b/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx @@ -64,14 +64,13 @@ export class LoginPlugin implements Plugin { }, async onResponseError(error) { - if (error.response.status !== 401 || error.response.config.hasRetriedRequest) + if (error.response.status !== 401 || error.response.config.hasRetriedRequest) return; const authContext = Container.get(AuthContext); const loginResponse = await loginApi.refreshAccessToken(authContext.getRefreshToken()); - if (loginResponse.isAuthenticated) { - + await authContext.signinTokens(loginResponse.accessToken, loginResponse.refreshToken, true); const t = await service.http({ @@ -85,6 +84,9 @@ export class LoginPlugin implements Plugin { return t; } + else { + authContext.signOut(); + } } }); }; diff --git a/src/designer/elsa-workflows-designer/src/modules/login/services.ts b/src/designer/elsa-workflows-designer/src/modules/login/services.ts index c3d0a3310..0e63d209e 100644 --- a/src/designer/elsa-workflows-designer/src/modules/login/services.ts +++ b/src/designer/elsa-workflows-designer/src/modules/login/services.ts @@ -19,7 +19,7 @@ export class LoginApi { } async refreshAccessToken(refreshToken: string): Promise { - const config: AxiosRequestConfig = { + const config: AxiosRequestConfig = { baseURL: this.serverSettings.baseAddress, headers: { Authorization: `Bearer ${refreshToken}` @@ -27,7 +27,9 @@ export class LoginApi { }; const httpClient = axios.create(config); - const response = await httpClient.post(`identity/refresh-token`); - return response.data; + + return await httpClient.post(`identity/refresh-token`) + .then(response => response.data) + .catch(error => error.response) } -} +} \ No newline at end of file