diff --git a/Oqtane.Server/Infrastructure/LogManager.cs b/Oqtane.Server/Infrastructure/LogManager.cs index 27d4df50..59c51ccd 100644 --- a/Oqtane.Server/Infrastructure/LogManager.cs +++ b/Oqtane.Server/Infrastructure/LogManager.cs @@ -203,19 +203,21 @@ namespace Oqtane.Infrastructure } if (Enum.Parse(log.Level) >= notifylevel) { + var subject = $"Site {log.Level} Notification"; + string body = $"Log Message: {log.Message}"; + var alias = _tenantManager.GetAlias(); - foreach (var userrole in _userRoles.GetUserRoles(log.SiteId.Value)) + if (alias != null) { - if (userrole.Role.Name == RoleNames.Host) - { - var subject = $"{alias.Name} Site {log.Level} Notification"; - var url = $"{_accessor.HttpContext.Request.Scheme}://{alias.Name}/admin/log?id={log.LogId}"; - string body = $"Log Message: {log.Message}

Please visit {url} for more information"; - var notification = new Notification(log.SiteId.Value, userrole.User, subject, body); - _notifications.AddNotification(notification); - } + subject = $"{alias.Name} Site {log.Level} Notification"; + body = $"Log Message: {log.Message}

Please visit {alias.Protocol}://{alias.Name}/admin/log?id={log.LogId} for more information"; } + foreach (var userrole in _userRoles.GetUserRoles(RoleNames.Host, log.SiteId.Value)) + { + var notification = new Notification(log.SiteId.Value, userrole.User, subject, body); + _notifications.AddNotification(notification); + } } } } diff --git a/Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs b/Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs index 7bed5f51..7db22b4e 100644 --- a/Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs +++ b/Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs @@ -7,6 +7,7 @@ namespace Oqtane.Repository { IEnumerable GetUserRoles(int siteId); IEnumerable GetUserRoles(int userId, int siteId); + IEnumerable GetUserRoles(string roleName, int siteId); UserRole AddUserRole(UserRole userRole); UserRole UpdateUserRole(UserRole userRole); UserRole GetUserRole(int userRoleId); diff --git a/Oqtane.Server/Repository/UserRoleRepository.cs b/Oqtane.Server/Repository/UserRoleRepository.cs index 68c942ad..57a10031 100644 --- a/Oqtane.Server/Repository/UserRoleRepository.cs +++ b/Oqtane.Server/Repository/UserRoleRepository.cs @@ -23,16 +23,25 @@ namespace Oqtane.Repository return db.UserRole .Include(item => item.Role) // eager load roles .Include(item => item.User) // eager load users - .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null).ToList(); + .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1).ToList(); } public IEnumerable GetUserRoles(int userId, int siteId) { using var db = _dbContextFactory.CreateDbContext(); - return db.UserRole.Where(item => item.UserId == userId) + return db.UserRole .Include(item => item.Role) // eager load roles .Include(item => item.User) // eager load users - .Where(item => item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1).ToList(); + .Where(item => (item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1) && item.UserId == userId).ToList(); + } + + public IEnumerable GetUserRoles(string roleName, int siteId) + { + using var db = _dbContextFactory.CreateDbContext(); + return db.UserRole + .Include(item => item.Role) // eager load roles + .Include(item => item.User) // eager load users + .Where(item => (item.Role.SiteId == siteId || item.Role.SiteId == null || siteId == -1) && item.Role.Name == roleName).ToList(); } public UserRole AddUserRole(UserRole userRole) diff --git a/Oqtane.Shared/Models/Alias.cs b/Oqtane.Shared/Models/Alias.cs index dcad9e95..92ae3a90 100644 --- a/Oqtane.Shared/Models/Alias.cs +++ b/Oqtane.Shared/Models/Alias.cs @@ -68,10 +68,10 @@ namespace Oqtane.Models } /// - /// Protocol for the request from which the alias was resolved (ie. http:// or https:// ) + /// Protocol for the request from which the alias was resolved (ie. http or https ) /// [NotMapped] - public string Protocol { get; set; } + public string Protocol { get; set; } = "https"; // default value /// /// Base Url for static resources (note that this will only be set for remote clients)