resolved a number of issues with site creation #224

This commit is contained in:
Shaun Walker
2020-02-25 18:53:36 -05:00
parent 15236d78d4
commit b4ddc45829
17 changed files with 264 additions and 163 deletions

View File

@ -7,6 +7,7 @@ using Oqtane.Shared;
using Oqtane.Infrastructure;
using System.Linq;
using System;
using System.Net;
namespace Oqtane.Controllers
{
@ -42,6 +43,7 @@ namespace Oqtane.Controllers
[HttpGet("name/{name}")]
public Alias Get(string name)
{
name = WebUtility.UrlDecode(name);
List<Alias> aliases = Aliases.GetAliases().ToList();
Alias alias = null;
alias = aliases.Where(item => item.Name == name).FirstOrDefault();

View File

@ -63,7 +63,7 @@ namespace Oqtane.Controllers
if (authorized)
{
Site = Sites.AddSite(Site);
logger.Log(LogLevel.Information, this, LogFunction.Create, "Site Added {Site}", Site);
logger.Log(Site.SiteId, LogLevel.Information, this, LogFunction.Create, "Site Added {Site}", Site);
}
}
return Site;
@ -77,7 +77,7 @@ namespace Oqtane.Controllers
if (ModelState.IsValid)
{
Site = Sites.UpdateSite(Site);
logger.Log(LogLevel.Information, this, LogFunction.Update, "Site Updated {Site}", Site);
logger.Log(Site.SiteId, LogLevel.Information, this, LogFunction.Update, "Site Updated {Site}", Site);
}
return Site;
}
@ -87,14 +87,15 @@ namespace Oqtane.Controllers
[Authorize(Roles = Constants.HostRole)]
public void Delete(int id)
{
Site Site = Sites.GetSite(id);
if (Sites.GetSites().Count() > 1)
{
Sites.DeleteSite(id);
logger.Log(LogLevel.Information, this, LogFunction.Delete, "Site Deleted {SiteId}", id);
logger.Log(Site.SiteId, LogLevel.Information, this, LogFunction.Delete, "Site Deleted {SiteId}", id);
}
else
{
logger.Log(LogLevel.Warning, this, LogFunction.Delete, "Unable to delete the root site.");
logger.Log(Site.SiteId, LogLevel.Warning, this, LogFunction.Delete, "Unable to delete the root site.");
}
}
}

View File

@ -160,7 +160,7 @@ namespace Oqtane.Controllers
}
}
user.Password = ""; // remove sensitive information
logger.Log(LogLevel.Information, this, LogFunction.Create, "User Added {User}", user);
logger.Log(User.SiteId, LogLevel.Information, this, LogFunction.Create, "User Added {User}", user);
}
return user;

View File

@ -8,6 +8,8 @@ namespace Oqtane.Infrastructure
{
void Log(LogLevel Level, object Class, LogFunction Function, string Message, params object[] Args);
void Log(LogLevel Level, object Class, LogFunction Function, Exception Exception, string Message, params object[] Args);
void Log(int SiteId, LogLevel Level, object Class, LogFunction Function, string Message, params object[] Args);
void Log(int SiteId, LogLevel Level, object Class, LogFunction Function, Exception Exception, string Message, params object[] Args);
void Log(Log Log);
}
}

View File

@ -29,14 +29,35 @@ namespace Oqtane.Infrastructure
public void Log(LogLevel Level, object Class, LogFunction Function, string Message, params object[] Args)
{
Log(Level, Class.GetType().AssemblyQualifiedName, Function, null, Message, Args);
Log(-1, Level, Class.GetType().AssemblyQualifiedName, Function, null, Message, Args);
}
public void Log(LogLevel Level, object Class, LogFunction Function, Exception Exception, string Message, params object[] Args)
{
Alias alias = TenantResolver.GetAlias();
Log(-1, Level, Class.GetType().AssemblyQualifiedName, Function, Exception, Message, Args);
}
public void Log(int SiteId, LogLevel Level, object Class, LogFunction Function, string Message, params object[] Args)
{
Log(SiteId, Level, Class.GetType().AssemblyQualifiedName, Function, null, Message, Args);
}
public void Log(int SiteId, LogLevel Level, object Class, LogFunction Function, Exception Exception, string Message, params object[] Args)
{
Log log = new Log();
log.SiteId = alias.SiteId;
if (SiteId == -1)
{
log.SiteId = null;
Alias alias = TenantResolver.GetAlias();
if (alias != null)
{
log.SiteId = alias.SiteId;
}
}
else
{
log.SiteId = SiteId;
}
log.PageId = null;
log.ModuleId = null;
log.UserId = null;
@ -96,56 +117,70 @@ namespace Oqtane.Infrastructure
Log.Server = Environment.MachineName;
Log.MessageTemplate = Log.Message;
Log = ProcessStructuredLog(Log);
Logs.AddLog(Log);
try
{
Logs.AddLog(Log);
}
catch
{
// an error occurred writing to the database
}
}
}
private Log ProcessStructuredLog(Log Log)
{
string message = Log.Message;
string properties = "";
if (!string.IsNullOrEmpty(message) && message.Contains("{") && message.Contains("}") && !string.IsNullOrEmpty(Log.Properties))
try
{
// get the named holes in the message and replace values
object[] values = JsonSerializer.Deserialize<object[]>(Log.Properties);
List<string> names = new List<string>();
int index = message.IndexOf("{");
while (index != -1)
string message = Log.Message;
string properties = "";
if (!string.IsNullOrEmpty(message) && message.Contains("{") && message.Contains("}") && !string.IsNullOrEmpty(Log.Properties))
{
if (message.IndexOf("}", index) != -1)
// get the named holes in the message and replace values
object[] values = JsonSerializer.Deserialize<object[]>(Log.Properties);
List<string> names = new List<string>();
int index = message.IndexOf("{");
while (index != -1)
{
names.Add(message.Substring(index + 1, message.IndexOf("}", index) - index - 1));
if (values.Length > (names.Count - 1))
if (message.IndexOf("}", index) != -1)
{
if (values[names.Count - 1] == null)
names.Add(message.Substring(index + 1, message.IndexOf("}", index) - index - 1));
if (values.Length > (names.Count - 1))
{
message = message.Replace("{" + names[names.Count - 1] + "}", "null");
}
else
{
message = message.Replace("{" + names[names.Count - 1] + "}", values[names.Count - 1].ToString());
if (values[names.Count - 1] == null)
{
message = message.Replace("{" + names[names.Count - 1] + "}", "null");
}
else
{
message = message.Replace("{" + names[names.Count - 1] + "}", values[names.Count - 1].ToString());
}
}
}
index = message.IndexOf("{", index + 1);
}
index = message.IndexOf("{", index + 1);
}
// rebuild properties into dictionary
Dictionary<string, object> propertydictionary = new Dictionary<string, object>();
for (int i = 0; i < values.Length; i++)
{
if (i < names.Count)
// rebuild properties into dictionary
Dictionary<string, object> propertydictionary = new Dictionary<string, object>();
for (int i = 0; i < values.Length; i++)
{
propertydictionary.Add(names[i], values[i]);
}
else
{
propertydictionary.Add("Property" + i.ToString(), values[i]);
if (i < names.Count)
{
propertydictionary.Add(names[i], values[i]);
}
else
{
propertydictionary.Add("Property" + i.ToString(), values[i]);
}
}
properties = JsonSerializer.Serialize(propertydictionary);
}
properties = JsonSerializer.Serialize(propertydictionary);
Log.Message = message;
Log.Properties = properties;
}
catch
{
Log.Properties = "";
}
Log.Message = message;
Log.Properties = properties;
return Log;
}
}

View File

@ -66,6 +66,9 @@ namespace Oqtane.Repository
SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Icon = "globe", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Sites, Oqtane.Client", Title = "Site Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
}});
SiteTemplate.Add(new PageTemplate { Name = "Site Settings", Parent = "Admin", Path = "admin/site", Icon = "home", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Site, Oqtane.Client", Title = "Site Settings", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
}});
SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Icon = "layers", IsNavigation = false, IsPersonalizable = false, EditMode = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", PageTemplateModules = new List<PageTemplateModule> {
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.Admin.Pages, Oqtane.Client", Title = "Page Management", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Content = "" }
}});

View File

@ -212,7 +212,7 @@ GO
CREATE TABLE [dbo].[Log] (
[LogId] [int] IDENTITY(1,1) NOT NULL,
[SiteId] [int] NOT NULL,
[SiteId] [int] NULL,
[LogDate] [datetime] NOT NULL,
[PageId] [int] NULL,
[ModuleId] [int] NULL,