diff --git a/Elsa.sln.DotSettings b/Elsa.sln.DotSettings
index 2850b89bf..12055bae2 100644
--- a/Elsa.sln.DotSettings
+++ b/Elsa.sln.DotSettings
@@ -2,4 +2,5 @@
True
True
True
+ True
True
\ No newline at end of file
diff --git a/src/designer/elsa-workflows-designer/src/modules/login/components/login-page.tsx b/src/designer/elsa-workflows-designer/src/modules/login/components/login-page.tsx
index c9f72e1a6..96740e08b 100644
--- a/src/designer/elsa-workflows-designer/src/modules/login/components/login-page.tsx
+++ b/src/designer/elsa-workflows-designer/src/modules/login/components/login-page.tsx
@@ -1,7 +1,6 @@
import {Component, h, State, Event, EventEmitter} from "@stencil/core";
import {LoginApi} from "../services";
import {Container} from "typedi";
-import jwt_decode from "jwt-decode";
import {AuthContext} from "../../../services";
import {SignedInArgs} from "../models";
@@ -43,7 +42,7 @@ export class LoginPage {
const accessToken = loginResponse.accessToken;
const refreshToken = loginResponse.refreshToken;
const authContext = Container.get(AuthContext);
- await authContext.signinTokens(accessToken, refreshToken, rememberMe);
+ await authContext.signin(accessToken, refreshToken, rememberMe);
}
private renderError = () => {
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 58621ca6b..e80e31bee 100644
--- a/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx
+++ b/src/designer/elsa-workflows-designer/src/modules/login/plugin.tsx
@@ -6,7 +6,6 @@ import {Container, Service} from "typedi";
import {StudioService, AuthContext, EventBus, ElsaClient, ElsaClientProvider} from "../../services";
import descriptorsStore from '../../data/descriptors-store';
import {SignedInArgs} from "./models";
-import {AxiosInstance} from "axios";
import {LoginApi} from "./services";
@Service()
@@ -64,14 +63,16 @@ 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);
+
+ await authContext.updateTokens(loginResponse.accessToken, loginResponse.refreshToken, true);
const t = await service.http({
...error.config,
@@ -85,7 +86,7 @@ export class LoginPlugin implements Plugin {
return t;
}
else {
- authContext.signOut();
+ await 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 8c40a0727..93ae3e8f9 100644
--- a/src/designer/elsa-workflows-designer/src/modules/login/services.ts
+++ b/src/designer/elsa-workflows-designer/src/modules/login/services.ts
@@ -1,9 +1,8 @@
import 'reflect-metadata';
-import {Container, Service} from "typedi";
-import {ElsaClientProvider, EventBus, ServerSettings} from "../../services";
+import {Service} from "typedi";
+import {ElsaClientProvider, ServerSettings} from "../../services";
import {LoginResponse} from "./models";
-import axios, {AxiosError, AxiosRequestConfig} from "axios";
-import {EventTypes} from "../../models";
+import axios, {AxiosRequestConfig} from "axios";
@Service()
export class LoginApi {
@@ -32,4 +31,4 @@ export class LoginApi {
.then(response => response.data)
.catch(error => error.response)
}
-}
\ No newline at end of file
+}
diff --git a/src/designer/elsa-workflows-designer/src/services/auth.ts b/src/designer/elsa-workflows-designer/src/services/auth.ts
index 7703987c5..dd23e3d2d 100644
--- a/src/designer/elsa-workflows-designer/src/services/auth.ts
+++ b/src/designer/elsa-workflows-designer/src/services/auth.ts
@@ -29,14 +29,19 @@ export class AuthContext {
}
}
- async signinTokens(accessToken: string, refreshToken: string, createPersistentCookie: boolean){
+ async signin(accessToken: string, refreshToken: string, createPersistentCookie: boolean){
+ await this.updateTokens(accessToken, refreshToken, createPersistentCookie);
+ await this.eventBus.emit(EventTypes.Auth.SignedIn)
+ }
+
+ async updateTokens(accessToken: string, refreshToken: string, createPersistentCookie: boolean){
const claims = jwt_decode(accessToken);
const permissions = claims.permissions || [];
const name = claims.name || '';
- await this.signIn(name, permissions, accessToken, refreshToken, createPersistentCookie);
+ await this.updateSession(name, permissions, accessToken, refreshToken, createPersistentCookie);
}
- async signIn(name: string, permissions: Array, accessToken: string, refreshToken: string, createPersistentCookie: boolean) {
+ updateSession(name: string, permissions: Array, accessToken: string, refreshToken: string, createPersistentCookie: boolean) {
authStore.name = name;
authStore.permissions = permissions;
authStore.signedIn = true;
@@ -49,8 +54,6 @@ export class AuthContext {
if (createPersistentCookie) {
cookies.set("dashboard-session", data);
}
-
- await this.eventBus.emit(EventTypes.Auth.SignedIn)
}
async signOut() {