From e3ebbde76731069d0a7d401adf0d375fd30999db Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 15 Dec 2021 10:33:12 -0500 Subject: [PATCH] add logging for the logout event to the UI component, relocate module setting deletion to repository --- .../Themes/Controls/Theme/LoginBase.cs | 4 +++ Oqtane.Server/Controllers/ModuleController.cs | 6 ----- .../Interfaces/ISettingRepository.cs | 1 + Oqtane.Server/Repository/ModuleRepository.cs | 14 ++++++---- Oqtane.Server/Repository/SettingRepository.cs | 26 +++++++++++++++++++ 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs index cc454412..d8afa02e 100644 --- a/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs +++ b/Oqtane.Client/Themes/Controls/Theme/LoginBase.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; +using Oqtane.Enums; using Oqtane.Providers; using Oqtane.Security; using Oqtane.Services; @@ -17,6 +18,7 @@ namespace Oqtane.Themes.Controls [Inject] public IJSRuntime jsRuntime { get; set; } [Inject] public IServiceProvider ServiceProvider { get; set; } [Inject] public SiteState SiteState { get; set; } + [Inject] public ILogService LoggingService { get; set; } protected void LoginUser() { @@ -31,6 +33,8 @@ namespace Oqtane.Themes.Controls protected async Task LogoutUser() { await UserService.LogoutUserAsync(PageState.User); + await LoggingService.Log(PageState.Alias, PageState.Page.PageId, PageState.ModuleId, PageState.User.UserId, GetType().AssemblyQualifiedName, "Logout", LogFunction.Security, LogLevel.Information, null, "User Logout For Username {Username}", PageState.User.Username); + PageState.User = null; bool authorizedtoviewpage = UserSecurity.IsAuthorized(PageState.User, PermissionNames.View, PageState.Page.Permissions); diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index e6365a47..727523cb 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -174,12 +174,6 @@ namespace Oqtane.Controllers if (module != null && module.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, EntityNames.Module, module.ModuleId, PermissionNames.Edit)) { _modules.DeleteModule(id); - - _settings.GetSettings(EntityNames.Module, id)?.ToList().ForEach(ms => - { - _settings.DeleteSetting(EntityNames.Module, ms.SettingId); - }); - _syncManager.AddSyncEvent(_alias.TenantId, EntityNames.Site, _alias.SiteId); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Module Deleted {ModuleId}", id); } diff --git a/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs b/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs index 89f04da7..0f6728f1 100644 --- a/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs +++ b/Oqtane.Server/Repository/Interfaces/ISettingRepository.cs @@ -11,5 +11,6 @@ namespace Oqtane.Repository Setting UpdateSetting(Setting setting); Setting GetSetting(string entityName, int settingId); void DeleteSetting(string entityName, int settingId); + void DeleteSettings(string entityName, int entityId); } } diff --git a/Oqtane.Server/Repository/ModuleRepository.cs b/Oqtane.Server/Repository/ModuleRepository.cs index 922dfb5d..9637c4d1 100644 --- a/Oqtane.Server/Repository/ModuleRepository.cs +++ b/Oqtane.Server/Repository/ModuleRepository.cs @@ -6,6 +6,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Oqtane.Models; using Oqtane.Modules; +using Oqtane.Shared; using Module = Oqtane.Models.Module; namespace Oqtane.Repository @@ -14,13 +15,15 @@ namespace Oqtane.Repository { private TenantDBContext _db; private readonly IPermissionRepository _permissions; + private readonly ISettingRepository _settings; private readonly IModuleDefinitionRepository _moduleDefinitions; private readonly IServiceProvider _serviceProvider; - public ModuleRepository(TenantDBContext context, IPermissionRepository permissions, IModuleDefinitionRepository moduleDefinitions, IServiceProvider serviceProvider) + public ModuleRepository(TenantDBContext context, IPermissionRepository permissions, ISettingRepository settings, IModuleDefinitionRepository moduleDefinitions, IServiceProvider serviceProvider) { _db = context; _permissions = permissions; + _settings = settings; _moduleDefinitions = moduleDefinitions; _serviceProvider = serviceProvider; } @@ -34,7 +37,7 @@ namespace Oqtane.Repository { _db.Module.Add(module); _db.SaveChanges(); - _permissions.UpdatePermissions(module.SiteId, "Module", module.ModuleId, module.Permissions); + _permissions.UpdatePermissions(module.SiteId, EntityNames.Module, module.ModuleId, module.Permissions); return module; } @@ -42,7 +45,7 @@ namespace Oqtane.Repository { _db.Entry(module).State = EntityState.Modified; _db.SaveChanges(); - _permissions.UpdatePermissions(module.SiteId, "Module", module.ModuleId, module.Permissions); + _permissions.UpdatePermissions(module.SiteId, EntityNames.Module, module.ModuleId, module.Permissions); return module; } @@ -64,7 +67,7 @@ namespace Oqtane.Repository } if (module != null) { - module.Permissions = _permissions.GetPermissionString("Module", module.ModuleId); + module.Permissions = _permissions.GetPermissionString(EntityNames.Module, module.ModuleId); } return module; } @@ -72,7 +75,8 @@ namespace Oqtane.Repository public void DeleteModule(int moduleId) { Module module = _db.Module.Find(moduleId); - _permissions.DeletePermissions(module.SiteId, "Module", moduleId); + _permissions.DeletePermissions(module.SiteId, EntityNames.Module, moduleId); + _settings.DeleteSettings(EntityNames.Module, moduleId); _db.Module.Remove(module); _db.SaveChanges(); } diff --git a/Oqtane.Server/Repository/SettingRepository.cs b/Oqtane.Server/Repository/SettingRepository.cs index 4d1e00b6..c87a1df3 100644 --- a/Oqtane.Server/Repository/SettingRepository.cs +++ b/Oqtane.Server/Repository/SettingRepository.cs @@ -93,6 +93,32 @@ namespace Oqtane.Repository } } + public void DeleteSettings(string entityName, int entityId) + { + if (IsMaster(entityName)) + { + IEnumerable settings = _master.Setting + .Where(item => item.EntityName == entityName) + .Where(item => item.EntityId == entityId); + foreach (Setting setting in settings) + { + _master.Setting.Remove(setting); + } + _master.SaveChanges(); + } + else + { + IEnumerable settings = _tenant.Setting + .Where(item => item.EntityName == entityName) + .Where(item => item.EntityId == entityId); + foreach (Setting setting in settings) + { + _tenant.Setting.Remove(setting); + } + _tenant.SaveChanges(); + } + } + private bool IsMaster(string EntityName) { return (EntityName == EntityNames.ModuleDefinition || EntityName == EntityNames.Host);