Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
using Elsa.Abstractions;
using Elsa.Common.Models;
using Elsa.Common.Multitenancy;
using Elsa.Workflows.Management;
using Elsa.Workflows.Models;
using JetBrains.Annotations;

namespace Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.GetByDefinitionId;

[PublicAPI]
internal class GetByDefinitionId(IWorkflowDefinitionStore store, IWorkflowDefinitionLinker linker) : ElsaEndpoint<Request>
internal class GetByDefinitionId(IWorkflowDefinitionStore store, IWorkflowDefinitionLinker linker, ITenantAccessor tenantAccessor) : ElsaEndpoint<Request>
{
public override void Configure()
{
Expand All @@ -19,6 +20,7 @@ public override async Task HandleAsync(Request request, CancellationToken cancel
{
var versionOptions = request.VersionOptions != null ? VersionOptions.FromString(request.VersionOptions) : VersionOptions.Latest;
var filter = WorkflowDefinitionHandle.ByDefinitionId(request.DefinitionId, versionOptions).ToFilter();
filter.TenantId = tenantAccessor.Tenant?.Id;
var definition = await store.FindAsync(filter, cancellationToken);

if (definition == null)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Elsa.Abstractions;
using Elsa.Common.Entities;
using Elsa.Common.Models;
using Elsa.Common.Multitenancy;
using Elsa.Models;
using Elsa.Workflows.Api.Models;
using Elsa.Workflows.Management;
Expand All @@ -11,7 +12,7 @@
namespace Elsa.Workflows.Api.Endpoints.WorkflowDefinitions.List;

[PublicAPI]
internal class List(IWorkflowDefinitionStore store, IWorkflowDefinitionLinker linker) : ElsaEndpoint<Request, PagedListResponse<LinkedWorkflowDefinitionSummary>>
internal class List(IWorkflowDefinitionStore store, IWorkflowDefinitionLinker linker, ITenantAccessor tenantAccessor) : ElsaEndpoint<Request, PagedListResponse<LinkedWorkflowDefinitionSummary>>
{
public override void Configure()
{
Expand Down Expand Up @@ -40,7 +41,8 @@ private WorkflowDefinitionFilter CreateFilter(Request request)
SearchTerm = request.SearchTerm?.Trim(),
MaterializerName = request.MaterializerName,
DefinitionIds = request.DefinitionIds,
Ids = request.Ids
Ids = request.Ids,
TenantId = tenantAccessor.Tenant?.Id
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ public class WorkflowDefinitionFilter
/// </summary>
public bool TenantAgnostic { get; set; }

/// <summary>
/// Filter by the name of the workflow definition.
/// </summary>
public string? TenantId { get; set; }

/// <summary>
/// Applies the filter to the specified queryable.
/// </summary>
Expand All @@ -105,6 +110,7 @@ public IQueryable<WorkflowDefinition> Apply(IQueryable<WorkflowDefinition> query
if (!string.IsNullOrWhiteSpace(SearchTerm)) queryable = queryable.Where(x => x.Name!.ToLower().Contains(SearchTerm.ToLower()) || x.Description!.ToLower().Contains(SearchTerm.ToLower()) || x.Id.Contains(SearchTerm) || x.DefinitionId.Contains(SearchTerm));
if (IsSystem != null) queryable = queryable.Where(x => x.IsSystem == IsSystem);
if (IsReadonly != null) queryable = queryable.Where(x => x.IsReadonly == IsReadonly);
if (!TenantAgnostic && TenantId != null) queryable = queryable.Where(x => x.TenantId == TenantId);

return queryable;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Elsa.Common;
using Elsa.Common.Entities;
using Elsa.Common.Models;
using Elsa.Common.Multitenancy;
using Elsa.Mediator.Contracts;
using Elsa.Workflows.Activities;
using Elsa.Workflows.Management.Entities;
Expand All @@ -20,7 +21,8 @@ public class WorkflowDefinitionPublisher(
IIdentityGenerator identityGenerator,
IActivitySerializer activitySerializer,
IMediator mediator,
ISystemClock systemClock)
ISystemClock systemClock,
ITenantAccessor tenantAccessor)
: IWorkflowDefinitionPublisher
{
/// <inheritdoc />
Expand Down Expand Up @@ -183,6 +185,7 @@ public async Task<WorkflowDefinition> RetractAsync(WorkflowDefinition definition
/// <inheritdoc />
public async Task<WorkflowDefinition> SaveDraftAsync(WorkflowDefinition definition, CancellationToken cancellationToken = default)
{
definition.TenantId = tenantAccessor.Tenant?.Id;
var draft = definition;
var definitionId = definition.DefinitionId;
var filter = new WorkflowDefinitionFilter
Expand Down