Skip to content

Dzliera/Configuration-UI

Repository files navigation

ConfigurationUi

NuGet Version

ConfigurationUI is .Net library for managing Asp.Net Core configuration.
It can parse configuration schema from arbitrary .Net type and generate web-page for displaying/editing configuration in user-friendly manner.
ConfigurationUI is fully integrated with with built-in asp.net core configuration Microsoft.Extensions.Configuration, so developers don't have to change existing code, just continue using well-known patterns: OptionsMonitor<T>, IConfiguration, etc ...

Installation & Setup

Using ConfigurationUI is very simple, it is done in 4 steps:

  1. Install nuget package ConfigurationUi
  2. Create class(es) for describing your application configuration (if not already have):
    public class Settings
    {
      public string StringSetting { get; set; }
      public int IntegerSetting { get; set; }
      public bool BooleanSetting { get; set; }
      public SettingSubSection SettingsSubSection { get; set; }
    }
    
    public class SettingSubSection
    {
        public string StringSetting { get; set; }
        public MyEnum EnumSetting { get; set; }
        public bool BooleanSetting { get; set; }
        public string[] ArraySetting { get; set; }
    }
    
    public enum MyEnum { FirstValue, SecondValue }
  3. Modify Program.cs and insert .AddConfigurationUi() method call:
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .AddConfigurationUi<Settings>("settings.json") // insert this line
                .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
    }
  4. Modify Startup.Configure method and add configuration middleware with app.UseConfigurationUi("/configuration"):
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
    
        app.UseConfigurationUi("/configuration"); // insert this line
    
        app.UseHttpsRedirection();
    
        app.UseRouting();
    
        app.UseAuthorization();
    
        app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
    }

It's done. Navigate to /configuration in browser and you will see configuration editor page:

ConfigurationUi

Important Notes

  • Library does not support authorization out of box yet. Make sure to place some custom authorization/authentication middleware before app.UseConfigurationUi("/configuration"); so configuration endpoint will not be accessible to everyone
  • Currently web editor does not support or may not work as expected for following .Net types:
    • Dictionaries
    • FlagsAttribute decorated enums
    • Nullable value types

Any Contribution, Feature Request or Bug Report is welcome.

About

user friendly web renderer and editor library for asp.net configuration

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published