diff --git a/Oqtane.Client/Modules/Controls/ActionLink.razor b/Oqtane.Client/Modules/Controls/ActionLink.razor
index 55c80411..39782c08 100644
--- a/Oqtane.Client/Modules/Controls/ActionLink.razor
+++ b/Oqtane.Client/Modules/Controls/ActionLink.razor
@@ -90,7 +90,8 @@
if (!string.IsNullOrEmpty(IconName))
{
- _iconSpan = $" ";
+ _iconSpan = $"{(IconOnly?"":" ")}";
+
}
_url = EditUrl(Action, _parameters);
diff --git a/Oqtane.Client/UI/SiteRouter.razor b/Oqtane.Client/UI/SiteRouter.razor
index 429ff29f..76874800 100644
--- a/Oqtane.Client/UI/SiteRouter.razor
+++ b/Oqtane.Client/UI/SiteRouter.razor
@@ -361,20 +361,26 @@
string panes = "";
Type themetype = Type.GetType(page.ThemeType);
- var themeobject = Activator.CreateInstance(themetype) as IThemeControl;
- if (themeobject != null)
+ if (themetype != null)
{
- panes = themeobject.Panes;
- page.Resources = ManagePageResources(page.Resources, themeobject.Resources);
+ var themeobject = Activator.CreateInstance(themetype) as IThemeControl;
+ if (themeobject != null)
+ {
+ panes = themeobject.Panes;
+ page.Resources = ManagePageResources(page.Resources, themeobject.Resources);
+ }
}
if (!string.IsNullOrEmpty(page.LayoutType))
{
Type layouttype = Type.GetType(page.LayoutType);
- var layoutobject = Activator.CreateInstance(layouttype) as ILayoutControl;
- if (layoutobject != null)
+ if (layouttype != null)
{
- panes = layoutobject.Panes;
+ var layoutobject = Activator.CreateInstance(layouttype) as ILayoutControl;
+ if (layoutobject != null)
+ {
+ panes = layoutobject.Panes;
+ }
}
}
diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs
index b0dc919c..6fb3c93b 100644
--- a/Oqtane.Server/Controllers/UserController.cs
+++ b/Oqtane.Server/Controllers/UserController.cs
@@ -75,7 +75,7 @@ namespace Oqtane.Controllers
private User Filter(User user)
{
- if (user != null && !User.IsInRole(Constants.AdminRole) && User.Identity.Name != user.Username)
+ if (user != null && !User.IsInRole(Constants.AdminRole) && User.Identity.Name?.ToLower() != user.Username.ToLower())
{
user.DisplayName = "";
user.Email = "";
diff --git a/Oqtane.Server/Startup.cs b/Oqtane.Server/Startup.cs
index 183547d2..b9f001bc 100644
--- a/Oqtane.Server/Startup.cs
+++ b/Oqtane.Server/Startup.cs
@@ -29,7 +29,8 @@ namespace Oqtane
public IConfigurationRoot Configuration { get; }
private string _webRoot;
private Runtime _runtime;
-
+ private bool _useSwagger;
+
public Startup(IWebHostEnvironment env)
{
var builder = new ConfigurationBuilder()
@@ -37,9 +38,12 @@ namespace Oqtane
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
Configuration = builder.Build();
- _runtime = (Configuration.GetSection("Runtime").Value == "WebAssembly") ? Runtime.WebAssembly : Runtime.Server;
+ _runtime = (Configuration.GetSection("Runtime").Value == "WebAssembly") ? Runtime.WebAssembly : Runtime.Server;
+
+ //add possibility to switch off swagger on production.
+ _useSwagger = Configuration.GetSection("UseSwagger").Value != "false";
- _webRoot = env.WebRootPath;
+ _webRoot = env.WebRootPath;
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(env.ContentRootPath, "Data"));
}
@@ -47,7 +51,6 @@ namespace Oqtane
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
-
services.AddServerSideBlazor();
// setup HttpClient for server side in a client side compatible fashion ( with auth cookie )
@@ -59,7 +62,7 @@ namespace Oqtane
var navigationManager = s.GetRequiredService();
var httpContextAccessor = s.GetRequiredService();
var authToken = httpContextAccessor.HttpContext.Request.Cookies[".AspNetCore.Identity.Application"];
- var client = new HttpClient(new HttpClientHandler { UseCookies = false });
+ var client = new HttpClient(new HttpClientHandler {UseCookies = false});
if (authToken != null)
{
client.DefaultRequestHeaders.Add("Cookie", ".AspNetCore.Identity.Application=" + authToken);
@@ -121,7 +124,7 @@ namespace Oqtane
.AddEntityFrameworkStores()
.AddSignInManager()
.AddDefaultTokenProviders();
-
+
services.Configure(options =>
{
// Password settings
@@ -199,14 +202,12 @@ namespace Oqtane
services.AddMvc()
.AddNewtonsoftJson()
.AddOqtaneApplicationParts() // register any Controllers from custom modules
- .ConfigureOqtaneMvc(); // any additional configuration from IStart classes.
+ .ConfigureOqtaneMvc(); // any additional configuration from IStart classes.
- services.AddSwaggerGen(c =>
+ if (_useSwagger)
{
- c.SwaggerDoc("v1", new OpenApiInfo { Title = "Oqtane", Version = "v1" });
- });
-
-
+ services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo {Title = "Oqtane", Version = "v1"}); });
+ }
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@@ -230,11 +231,11 @@ namespace Oqtane
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
- app.UseSwagger();
- app.UseSwaggerUI(c =>
+ if (_useSwagger)
{
- c.SwaggerEndpoint("/swagger/v1/swagger.json", "Oqtane V1");
- });
+ app.UseSwagger();
+ app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Oqtane V1"); });
+ }
app.UseEndpoints(endpoints =>
{
@@ -242,7 +243,6 @@ namespace Oqtane
endpoints.MapControllers();
endpoints.MapFallbackToPage("/_Host");
});
-
}
}
}