diff --git a/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs b/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs
index e29aeeb2a..ec821bbd0 100644
--- a/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs
+++ b/src/modules/Elsa.Environments/Contracts/IEnvironmentsManager.cs
@@ -12,5 +12,12 @@ public interface IEnvironmentsManager
///
/// The cancellation token.
/// All environments.
- Task> ListEnvironmentsAsync(CancellationToken cancellationToken = default);
+ ValueTask> ListEnvironmentsAsync(CancellationToken cancellationToken = default);
+
+ ///
+ /// Returns the name of the default environment.
+ ///
+ /// The cancellation token.
+ /// The name of the default environment.
+ ValueTask GetDefaultEnvironmentNameAsync(CancellationToken cancellationToken = default);
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs b/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs
index e1b672de9..ad3b8a071 100644
--- a/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs
+++ b/src/modules/Elsa.Environments/Contracts/IEnvironmentsProvider.cs
@@ -12,5 +12,5 @@ public interface IEnvironmentsProvider
///
/// The cancellation token.
/// A list of workflow environments.
- ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default);
+ ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default);
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Environments/Elsa.Environments.csproj b/src/modules/Elsa.Environments/Elsa.Environments.csproj
index 555c9558f..b4d811455 100644
--- a/src/modules/Elsa.Environments/Elsa.Environments.csproj
+++ b/src/modules/Elsa.Environments/Elsa.Environments.csproj
@@ -14,6 +14,7 @@
+
diff --git a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs
index 58c6d42ce..fb6bff77f 100644
--- a/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs
+++ b/src/modules/Elsa.Environments/Endpoints/Environments/List/Endpoint.cs
@@ -1,6 +1,7 @@
using Elsa.Abstractions;
using Elsa.Environments.Contracts;
using Elsa.Environments.Models;
+using Elsa.Identity;
using JetBrains.Annotations;
namespace Elsa.Environments.Endpoints.Environments.List;
@@ -19,14 +20,16 @@ internal class Endpoint : ElsaEndpointWithoutRequest
{
Get("/environments");
ConfigurePermissions("read:environments");
+ Policies(IdentityPolicyNames.SecurityRoot);
}
public override async Task ExecuteAsync(CancellationToken cancellationToken)
{
var environments = await _environmentsManager.ListEnvironmentsAsync(cancellationToken);
- return new(environments.ToList());
+ var defaultEnvironmentName = await _environmentsManager.GetDefaultEnvironmentNameAsync(cancellationToken);
+ return new(environments.ToList(), defaultEnvironmentName);
}
}
[PublicAPI]
-internal record Response(ICollection Environments);
\ No newline at end of file
+internal record Response(ICollection Environments, string? DefaultEnvironmentName = default);
\ No newline at end of file
diff --git a/src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs b/src/modules/Elsa.Environments/Models/ServerEnvironment.cs
similarity index 94%
rename from src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs
rename to src/modules/Elsa.Environments/Models/ServerEnvironment.cs
index 607be96bc..91cc0ce6f 100644
--- a/src/modules/Elsa.Environments/Models/WorkflowsEnvironment.cs
+++ b/src/modules/Elsa.Environments/Models/ServerEnvironment.cs
@@ -3,7 +3,7 @@
///
/// Represents the environment in which the workflow engine is running.
///
-public class WorkflowsEnvironment
+public class ServerEnvironment
{
///
/// The name of the environment.
diff --git a/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs b/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs
index a0a970375..9044a9ecd 100644
--- a/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs
+++ b/src/modules/Elsa.Environments/Options/EnvironmentsOptions.cs
@@ -1,14 +1,21 @@
using Elsa.Environments.Models;
+using JetBrains.Annotations;
namespace Elsa.Environments.Options;
///
/// EnvironmentsOptions for providing environments.
///
+[PublicAPI]
public class EnvironmentsOptions
{
///
/// Gets or sets a list of environments.
///
- public ICollection Environments { get; set; } = new List();
+ public ICollection Environments { get; set; } = new List();
+
+ ///
+ /// The name of the default environment.
+ ///
+ public string? DefaultEnvironmentName { get; set; }
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs b/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs
index bef5fa3bd..f8c80718f 100644
--- a/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs
+++ b/src/modules/Elsa.Environments/Providers/ConfigurationEnvironmentsProvider.cs
@@ -21,7 +21,7 @@ public class ConfigurationEnvironmentsProvider : IEnvironmentsProvider
}
///
- public ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default)
+ public ValueTask> GetEnvironmentsAsync(CancellationToken cancellationToken = default)
{
return new (_options.Value.Environments);
}
diff --git a/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs b/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs
index c94170933..50fd08887 100644
--- a/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs
+++ b/src/modules/Elsa.Environments/Services/DefaultEnvironmentsManager.cs
@@ -1,5 +1,7 @@
using Elsa.Environments.Contracts;
using Elsa.Environments.Models;
+using Elsa.Environments.Options;
+using Microsoft.Extensions.Options;
namespace Elsa.Environments.Services;
@@ -7,19 +9,21 @@ namespace Elsa.Environments.Services;
public class DefaultEnvironmentsManager : IEnvironmentsManager
{
private readonly IEnumerable _providers;
+ private readonly IOptions _options;
///
/// Initializes a new instance of .
///
- public DefaultEnvironmentsManager(IEnumerable providers)
+ public DefaultEnvironmentsManager(IEnumerable providers, IOptions options)
{
_providers = providers;
+ _options = options;
}
///
- public async Task> ListEnvironmentsAsync(CancellationToken cancellationToken = default)
+ public async ValueTask> ListEnvironmentsAsync(CancellationToken cancellationToken = default)
{
- var allEnvironments = new List();
+ var allEnvironments = new List();
foreach (var provider in _providers)
{
@@ -29,4 +33,10 @@ public class DefaultEnvironmentsManager : IEnvironmentsManager
return allEnvironments;
}
+
+ ///
+ public ValueTask GetDefaultEnvironmentNameAsync(CancellationToken cancellationToken = default)
+ {
+ return new(_options.Value.DefaultEnvironmentName);
+ }
}
\ No newline at end of file
diff --git a/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs b/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs
index 448c456d3..5a9136e09 100644
--- a/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs
+++ b/src/samples/console/Elsa.Samples.Composition/Activities/AskDetails.cs
@@ -1,7 +1,6 @@
using Elsa.Extensions;
using Elsa.Workflows.Core.Activities;
using Elsa.Workflows.Core.Models;
-using Elsa.Workflows.Management.Activities.SetOutput;
public class AskDetails : Composite
{