diff --git a/src/Simplify.Web.Swagger/ControllerActionsFactory.cs b/src/Simplify.Web.Swagger/ControllerActionsFactory.cs
index e57220d..d172eb2 100644
--- a/src/Simplify.Web.Swagger/ControllerActionsFactory.cs
+++ b/src/Simplify.Web.Swagger/ControllerActionsFactory.cs
@@ -164,4 +164,4 @@ private static OpenApiResponse CreateResponse(ProducesResponseAttribute produces
return response;
}
-}
+}
\ No newline at end of file
diff --git a/src/Simplify.Web.Swagger/EnumNamesSchemaFilter.cs b/src/Simplify.Web.Swagger/EnumNamesSchemaFilter.cs
new file mode 100644
index 0000000..7d49d5b
--- /dev/null
+++ b/src/Simplify.Web.Swagger/EnumNamesSchemaFilter.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Linq;
+using Microsoft.OpenApi.Any;
+using Microsoft.OpenApi.Models;
+using Swashbuckle.AspNetCore.SwaggerGen;
+
+namespace Simplify.Web.Swagger;
+
+///
+/// Adds names extension and a human-readable description to enum schemas.
+///
+public class EnumNamesSchemaFilter : ISchemaFilter
+{
+ ///
+ public void Apply(OpenApiSchema schema, SchemaFilterContext context)
+ {
+ if (!context.Type.IsEnum)
+ return;
+
+ var names = Enum.GetNames(context.Type);
+ var values = Enum.GetValues(context.Type).Cast().ToArray();
+
+ var varnames = new OpenApiArray();
+ foreach (var name in names)
+ varnames.Add(new OpenApiString(name));
+
+ schema.Extensions["names"] = varnames;
+ }
+}
\ No newline at end of file
diff --git a/src/Simplify.Web.Swagger/RequestBodyAttribute.cs b/src/Simplify.Web.Swagger/RequestBodyAttribute.cs
index 656848e..1defc38 100644
--- a/src/Simplify.Web.Swagger/RequestBodyAttribute.cs
+++ b/src/Simplify.Web.Swagger/RequestBodyAttribute.cs
@@ -29,4 +29,4 @@ public class RequestBodyAttribute(Type model, string contentType = "application/
/// The type of the content.
///
public string ContentType { get; private set; } = contentType;
-}
+}
\ No newline at end of file
diff --git a/src/Simplify.Web.Swagger/Simplify.Web.Swagger.csproj b/src/Simplify.Web.Swagger/Simplify.Web.Swagger.csproj
index a677e3a..f6cad09 100644
--- a/src/Simplify.Web.Swagger/Simplify.Web.Swagger.csproj
+++ b/src/Simplify.Web.Swagger/Simplify.Web.Swagger.csproj
@@ -9,7 +9,7 @@
snupkg
true
- 1.2
+ 1.3
Swagger extensions for Simplify.Web web-framework
Simplify
diff --git a/src/Simplify.Web.Swagger/SimplifyWebSwaggerExtensions.cs b/src/Simplify.Web.Swagger/SimplifyWebSwaggerExtensions.cs
index a5796e6..6e66d33 100644
--- a/src/Simplify.Web.Swagger/SimplifyWebSwaggerExtensions.cs
+++ b/src/Simplify.Web.Swagger/SimplifyWebSwaggerExtensions.cs
@@ -19,5 +19,7 @@ public static void AddSimplifyWebSwagger(this SwaggerGenOptions options, Simplif
options.DocumentFilter();
else
options.DocumentFilter(args);
+
+ options.SchemaFilter();
}
}
\ No newline at end of file
diff --git a/src/TesterApp/Controllers/Api/v1/Users/GetMultipleController.cs b/src/TesterApp/Controllers/Api/v1/Users/GetMultipleController.cs
index 5c7fe89..f3c5977 100644
--- a/src/TesterApp/Controllers/Api/v1/Users/GetMultipleController.cs
+++ b/src/TesterApp/Controllers/Api/v1/Users/GetMultipleController.cs
@@ -19,12 +19,14 @@ public override ControllerResponse Invoke()
new()
{
UserName = "User 1",
- CreationTime = DateTime.Now
+ CreationTime = DateTime.Now,
+ Role = UserRole.Admin
},
new()
{
UserName = "User 2",
- CreationTime = DateTime.Now.Subtract(TimeSpan.FromDays(1))
+ CreationTime = DateTime.Now.Subtract(TimeSpan.FromDays(1)),
+ Role = UserRole.User
}
};
diff --git a/src/TesterApp/ViewModels/Users/UserRole.cs b/src/TesterApp/ViewModels/Users/UserRole.cs
new file mode 100644
index 0000000..ef90a39
--- /dev/null
+++ b/src/TesterApp/ViewModels/Users/UserRole.cs
@@ -0,0 +1,9 @@
+namespace TesterApp.ViewModels.Users;
+
+public enum UserRole
+{
+ Guest,
+ User,
+ Moderator,
+ Admin
+}
\ No newline at end of file
diff --git a/src/TesterApp/ViewModels/Users/UserViewModel.cs b/src/TesterApp/ViewModels/Users/UserViewModel.cs
index 6c37462..f7b63f8 100644
--- a/src/TesterApp/ViewModels/Users/UserViewModel.cs
+++ b/src/TesterApp/ViewModels/Users/UserViewModel.cs
@@ -4,4 +4,5 @@ public class UserViewModel
{
public string UserName { get; set; }
public DateTime CreationTime { get; set; }
+ public UserRole Role { get; set; }
}
\ No newline at end of file