diff --git a/src/bundles/Elsa.WorkflowServer.Web/Program.cs b/src/bundles/Elsa.WorkflowServer.Web/Program.cs index 0826c5d2a..368857798 100644 --- a/src/bundles/Elsa.WorkflowServer.Web/Program.cs +++ b/src/bundles/Elsa.WorkflowServer.Web/Program.cs @@ -1,12 +1,14 @@ +using Elsa; using Elsa.EntityFrameworkCore.Extensions; using Elsa.Extensions; -using Elsa.EntityFrameworkCore.Modules.Labels; using Elsa.EntityFrameworkCore.Modules.Management; using Elsa.EntityFrameworkCore.Modules.Runtime; using Elsa.Http.Handlers; using Elsa.JavaScript.Options; using Elsa.WorkflowServer.Web; +EndpointSecurityOptions.DisableSecurity(); + var builder = WebApplication.CreateBuilder(args); var services = builder.Services; var configuration = builder.Configuration; diff --git a/src/clients/Elsa.Api.Client/Contracts/IElsaClient.cs b/src/clients/Elsa.Api.Client/Contracts/IElsaClient.cs index 1a896543a..16f3a2506 100644 --- a/src/clients/Elsa.Api.Client/Contracts/IElsaClient.cs +++ b/src/clients/Elsa.Api.Client/Contracts/IElsaClient.cs @@ -1,4 +1,7 @@ -namespace Elsa.Api.Client.Contracts; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Contracts; +using Elsa.Api.Client.Resources.WorkflowInstances.Contracts; + +namespace Elsa.Api.Client.Contracts; /// /// Represents a client for the Elsa API. Each API is exposed as a property. diff --git a/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj b/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj index ba17246f3..7967b399b 100644 --- a/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj +++ b/src/clients/Elsa.Api.Client/Elsa.Api.Client.csproj @@ -17,4 +17,8 @@ + + + + diff --git a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs index 95b3f4725..cbec2b253 100644 --- a/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs +++ b/src/clients/Elsa.Api.Client/Extensions/DependencyInjectionExtensions.cs @@ -1,5 +1,6 @@ using Elsa.Api.Client.Contracts; using Elsa.Api.Client.Options; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Contracts; using Elsa.Api.Client.Services; using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; diff --git a/src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionRequest.cs b/src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionRequest.cs deleted file mode 100644 index 19c7beade..000000000 --- a/src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionRequest.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Elsa.Api.Client.Contracts; - -/// -/// The request for deleting a workflow definition. -/// -public class DeleteWorkflowDefinitionRequest -{ - /// - /// The ID of the workflow definition to delete. - /// - public string DefinitionId { get; set; } -} \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionResponse.cs b/src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionResponse.cs deleted file mode 100644 index 993443a2f..000000000 --- a/src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionResponse.cs +++ /dev/null @@ -1,4 +0,0 @@ -namespace Elsa.Api.Client.Contracts; - -public record GetWorkflowDefinitionResponse( - ); \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Contracts/IWorkflowDefinitionsApi.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs similarity index 64% rename from src/clients/Elsa.Api.Client/Contracts/IWorkflowDefinitionsApi.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs index bbb490122..93bdc9a44 100644 --- a/src/clients/Elsa.Api.Client/Contracts/IWorkflowDefinitionsApi.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Contracts/IWorkflowDefinitionsApi.cs @@ -1,6 +1,7 @@ -using Elsa.Api.Client.Models; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Models; +using Refit; -namespace Elsa.Api.Client.Contracts; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Contracts; /// /// Represents a client for the workflow definitions API. @@ -13,13 +14,15 @@ public interface IWorkflowDefinitionsApi /// The request containing options for listing workflow definitions. /// The cancellation token. /// The response containing the workflow definitions. + [Get("/workflow-definitions")] Task ListAsync(ListWorkflowDefinitionsRequest request, CancellationToken cancellationToken = default); - + /// /// Deletes a workflow definition. /// - /// The request containing the ID of the workflow definition to delete. + /// The ID of the workflow definition to delete. /// The cancellation token. /// The response. - Task DeleteAsync(DeleteWorkflowDefinitionRequest request, CancellationToken cancellationToken = default); + [Delete("/workflow-definitions/{definitionId}")] + Task DeleteAsync(string definitionId, CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionResponse.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/DeleteWorkflowDefinitionResponse.cs similarity index 67% rename from src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionResponse.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/DeleteWorkflowDefinitionResponse.cs index b149e4510..9616bd7d2 100644 --- a/src/clients/Elsa.Api.Client/Models/DeleteWorkflowDefinitionResponse.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/DeleteWorkflowDefinitionResponse.cs @@ -1,4 +1,4 @@ -namespace Elsa.Api.Client.Contracts; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; /// /// The response of deleting a workflow definition. diff --git a/src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionRequest.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionRequest.cs similarity index 70% rename from src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionRequest.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionRequest.cs index c77ad1e03..69f6a93e1 100644 --- a/src/clients/Elsa.Api.Client/Models/GetWorkflowDefinitionRequest.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionRequest.cs @@ -1,4 +1,4 @@ -namespace Elsa.Api.Client.Contracts; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; public class GetWorkflowDefinitionRequest { diff --git a/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionResponse.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionResponse.cs new file mode 100644 index 000000000..e244b4965 --- /dev/null +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/GetWorkflowDefinitionResponse.cs @@ -0,0 +1,4 @@ +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; + +public record GetWorkflowDefinitionResponse( + ); \ No newline at end of file diff --git a/src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsRequest.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsRequest.cs similarity index 88% rename from src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsRequest.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsRequest.cs index 995153f8b..35cea5227 100644 --- a/src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsRequest.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsRequest.cs @@ -1,6 +1,7 @@ +using Elsa.Api.Client.Shared.Models; using Refit; -namespace Elsa.Api.Client.Models; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; /// /// Represents a request to list workflow definitions. diff --git a/src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsResponse.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsResponse.cs similarity index 84% rename from src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsResponse.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsResponse.cs index 92257a2f9..ebe1514a0 100644 --- a/src/clients/Elsa.Api.Client/Models/ListWorkflowDefinitionsResponse.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/ListWorkflowDefinitionsResponse.cs @@ -1,4 +1,4 @@ -namespace Elsa.Api.Client.Models; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; /// /// Represents a response from listing workflow definitions. diff --git a/src/clients/Elsa.Api.Client/Models/WorkflowDefinitionSummary.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowDefinitionSummary.cs similarity index 83% rename from src/clients/Elsa.Api.Client/Models/WorkflowDefinitionSummary.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowDefinitionSummary.cs index c1ca5ee6a..7c470b863 100644 --- a/src/clients/Elsa.Api.Client/Models/WorkflowDefinitionSummary.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowDefinitions/Models/WorkflowDefinitionSummary.cs @@ -1,6 +1,6 @@ using JetBrains.Annotations; -namespace Elsa.Api.Client.Models; +namespace Elsa.Api.Client.Resources.WorkflowDefinitions.Models; /// /// A summary of a workflow definition. diff --git a/src/clients/Elsa.Api.Client/Contracts/IWorkflowInstancesApi.cs b/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Contracts/IWorkflowInstancesApi.cs similarity index 66% rename from src/clients/Elsa.Api.Client/Contracts/IWorkflowInstancesApi.cs rename to src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Contracts/IWorkflowInstancesApi.cs index 19af883b1..b48290b7c 100644 --- a/src/clients/Elsa.Api.Client/Contracts/IWorkflowInstancesApi.cs +++ b/src/clients/Elsa.Api.Client/Resources/WorkflowInstances/Contracts/IWorkflowInstancesApi.cs @@ -1,4 +1,4 @@ -namespace Elsa.Api.Client.Contracts; +namespace Elsa.Api.Client.Resources.WorkflowInstances.Contracts; /// /// Represents a client for the workflow instances API. diff --git a/src/clients/Elsa.Api.Client/Services/ElsaClient.cs b/src/clients/Elsa.Api.Client/Services/ElsaClient.cs index 60b2767f6..b46974121 100644 --- a/src/clients/Elsa.Api.Client/Services/ElsaClient.cs +++ b/src/clients/Elsa.Api.Client/Services/ElsaClient.cs @@ -1,4 +1,6 @@ using Elsa.Api.Client.Contracts; +using Elsa.Api.Client.Resources.WorkflowDefinitions.Contracts; +using Elsa.Api.Client.Resources.WorkflowInstances.Contracts; namespace Elsa.Api.Client.Services; diff --git a/src/clients/Elsa.Api.Client/Models/VersionOptions.cs b/src/clients/Elsa.Api.Client/Shared/Models/VersionOptions.cs similarity index 98% rename from src/clients/Elsa.Api.Client/Models/VersionOptions.cs rename to src/clients/Elsa.Api.Client/Shared/Models/VersionOptions.cs index 39d8946dc..40073d4ae 100644 --- a/src/clients/Elsa.Api.Client/Models/VersionOptions.cs +++ b/src/clients/Elsa.Api.Client/Shared/Models/VersionOptions.cs @@ -1,6 +1,6 @@ using JetBrains.Annotations; -namespace Elsa.Api.Client.Models; +namespace Elsa.Api.Client.Shared.Models; /// /// Represents the version to get. diff --git a/src/designer/designer_packages/elsa-workflows-designer/package.json b/src/designer/designer_packages/elsa-workflows-designer/package.json index 740325e37..1c1030964 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/package.json +++ b/src/designer/designer_packages/elsa-workflows-designer/package.json @@ -34,7 +34,6 @@ "@stencil/store": "^2.0.6", "async-mutex": "^0.4.0", "axios": "^1.4.0", - "axios-middleware": "^0.3.1", "el-transition": "^0.0.7", "js-cookie": "^3.0.5", "jwt-decode": "^3.1.2", diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/modules/login/plugin.tsx b/src/designer/designer_packages/elsa-workflows-designer/src/modules/login/plugin.tsx index 6f2bfebd4..febc8f041 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/modules/login/plugin.tsx +++ b/src/designer/designer_packages/elsa-workflows-designer/src/modules/login/plugin.tsx @@ -1,6 +1,5 @@ import 'reflect-metadata'; import {h} from "@stencil/core"; -import {Service as MiddlewareService} from 'axios-middleware'; import {EventTypes, Plugin} from "../../models"; import {Container, Service} from "typedi"; import {StudioService, AuthContext, EventBus} from "../../services"; @@ -27,43 +26,42 @@ export class LoginPlugin implements Plugin { } private onHttpClientCreated = async (e) => { - const service: MiddlewareService = e.service; + const axios = e.httpClient; const loginApi = Container.get(LoginApi); - service.register({ - async onRequest(request) { - const authContext = Container.get(AuthContext); - const token = authContext.getAccessToken(); + axios.interceptors.request.use(async config => { + const authContext = Container.get(AuthContext); + const token = authContext.getAccessToken(); - if (!!token) - request.headers = {...request.headers, Authorization: `Bearer ${token}`}; + if (!!token) + config.headers = {...config.headers, Authorization: `Bearer ${token}`}; - return request; - }, + return config; + }); - async onResponseError(error) { + axios.interceptors.response.use(async response => { + return response; + }, async error => { - if (error.response.status !== 401 || error.response.config.hasRetriedRequest) - return; + if (error.response.status !== 401 || error.response.config.hasRetriedRequest) + return; - const authContext = Container.get(AuthContext); - const loginResponse = await loginApi.refreshAccessToken(authContext.getRefreshToken()); + const authContext = Container.get(AuthContext); + const loginResponse = await loginApi.refreshAccessToken(authContext.getRefreshToken()); - if (loginResponse.isAuthenticated) { + if (loginResponse.isAuthenticated) { + await authContext.updateTokens(loginResponse.accessToken, loginResponse.refreshToken, true); - await authContext.updateTokens(loginResponse.accessToken, loginResponse.refreshToken, true); - - return await service.http({ - ...error.config, - hasRetriedRequest: true, - headers: { - ...error.config.headers, - Authorization: `Bearer ${loginResponse.accessToken}` - } - }); - } else { - await authContext.signOut(); - } + return await axios.request({ + ...error.config, + hasRetriedRequest: true, + headers: { + ...error.config.headers, + Authorization: `Bearer ${loginResponse.accessToken}` + } + }); + } else { + await authContext.signOut(); } }); }; diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/elsa-client.ts b/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/elsa-client.ts index dedaf63aa..c4be5f211 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/elsa-client.ts +++ b/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/elsa-client.ts @@ -54,8 +54,7 @@ async function createHttpClient(baseAddress: string): Promise { const eventBus = Container.get(EventBus); await eventBus.emit(EventTypes.HttpClient.ConfigCreated, this, {config}); const httpClient = axios.create(config); - const middlewareService = new MiddlewareService(httpClient); - await eventBus.emit(EventTypes.HttpClient.ClientCreated, this, {service: middlewareService, httpClient}); + await eventBus.emit(EventTypes.HttpClient.ClientCreated, this, {httpClient}); return httpClient; } diff --git a/src/modules/Elsa.Environments/Elsa.Environments.csproj b/src/modules/Elsa.Environments/Elsa.Environments.csproj index b4d811455..555c9558f 100644 --- a/src/modules/Elsa.Environments/Elsa.Environments.csproj +++ b/src/modules/Elsa.Environments/Elsa.Environments.csproj @@ -14,7 +14,6 @@ - diff --git a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs index fb6bff77f..68d2a5ddc 100644 --- a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs +++ b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs @@ -1,7 +1,6 @@ using Elsa.Abstractions; using Elsa.Environments.Contracts; using Elsa.Environments.Models; -using Elsa.Identity; using JetBrains.Annotations; namespace Elsa.Environments.Endpoints.Environments.List; @@ -20,7 +19,6 @@ internal class Endpoint : ElsaEndpointWithoutRequest { Get("/environments"); ConfigurePermissions("read:environments"); - Policies(IdentityPolicyNames.SecurityRoot); } public override async Task ExecuteAsync(CancellationToken cancellationToken)