Dynamic User Roles

This commit is contained in:
Shaun Walker
2019-08-20 16:43:35 -04:00
parent de4fa48a29
commit 42c6efbfdb
51 changed files with 942 additions and 193 deletions

View File

@ -22,12 +22,11 @@ namespace Oqtane.Repository
{
try
{
IEnumerable<Alias> aliases = _cache.GetOrCreate("aliases", entry =>
return _cache.GetOrCreate("aliases", entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return db.Alias.ToList();
});
return aliases;
}
catch
{
@ -67,8 +66,7 @@ namespace Oqtane.Repository
{
try
{
Alias alias = db.Alias.Find(AliasId);
return alias;
return db.Alias.Find(AliasId);
}
catch
{

View File

@ -12,6 +12,8 @@ namespace Oqtane.Repository
public virtual DbSet<Module> Module { get; set; }
public virtual DbSet<User> User { get; set; }
public virtual DbSet<SiteUser> SiteUser { get; set; }
public virtual DbSet<Role> Role { get; set; }
public virtual DbSet<UserRole> UserRole { get; set; }
public virtual DbSet<Setting> Setting { get; set; }
public TenantDBContext(ITenantResolver TenantResolver, IHttpContextAccessor accessor) : base(TenantResolver, accessor)

View File

@ -0,0 +1,15 @@
using System.Collections.Generic;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface IRoleRepository
{
IEnumerable<Role> GetRoles();
IEnumerable<Role> GetRoles(int SiteId);
Role AddRole(Role Role);
Role UpdateRole(Role Role);
Role GetRole(int RoleId);
void DeleteRole(int RoleId);
}
}

View File

@ -6,10 +6,11 @@ namespace Oqtane.Repository
public interface ISiteUserRepository
{
IEnumerable<SiteUser> GetSiteUsers();
IEnumerable<SiteUser> GetSiteUsers(int SiteId, int UserId);
IEnumerable<SiteUser> GetSiteUsers(int SiteId);
SiteUser AddSiteUser(SiteUser SiteUser);
SiteUser UpdateSiteUser(SiteUser SiteUser);
SiteUser GetSiteUser(int SiteUserId);
SiteUser GetSiteUser(int SiteId, int UserId);
void DeleteSiteUser(int SiteUserId);
}
}

View File

@ -0,0 +1,15 @@
using System.Collections.Generic;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface IUserRoleRepository
{
IEnumerable<UserRole> GetUserRoles();
IEnumerable<UserRole> GetUserRoles(int UserId);
UserRole AddUserRole(UserRole UserRole);
UserRole UpdateUserRole(UserRole UserRole);
UserRole GetUserRole(int UserRoleId);
void DeleteUserRole(int UserRoleId);
}
}

View File

@ -10,26 +10,26 @@ namespace Oqtane.Repository
{
public class ModuleDefinitionRepository : IModuleDefinitionRepository
{
private readonly List<ModuleDefinition> moduledefinitions;
private readonly List<ModuleDefinition> ModuleDefinitions;
public ModuleDefinitionRepository()
{
moduledefinitions = LoadModuleDefinitions();
ModuleDefinitions = LoadModuleDefinitions();
}
private List<ModuleDefinition> LoadModuleDefinitions()
{
List<ModuleDefinition> moduledefinitions = new List<ModuleDefinition>();
List<ModuleDefinition> ModuleDefinitions = new List<ModuleDefinition>();
// iterate through Oqtane module assemblies
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(item => item.FullName.StartsWith("Oqtane.") || item.FullName.Contains(".Module.")).ToArray();
foreach (Assembly assembly in assemblies)
{
moduledefinitions = LoadModuleDefinitionsFromAssembly(moduledefinitions, assembly);
ModuleDefinitions = LoadModuleDefinitionsFromAssembly(ModuleDefinitions, assembly);
}
return moduledefinitions;
return ModuleDefinitions;
}
private List<ModuleDefinition> LoadModuleDefinitionsFromAssembly(List<ModuleDefinition> moduledefinitions, Assembly assembly)
@ -115,7 +115,7 @@ namespace Oqtane.Repository
public IEnumerable<ModuleDefinition> GetModuleDefinitions()
{
return moduledefinitions;
return ModuleDefinitions;
}
}

View File

@ -73,8 +73,7 @@ namespace Oqtane.Repository
{
try
{
Module Module = db.Module.Find(ModuleId);
return Module;
return db.Module.Find(ModuleId);
}
catch
{

View File

@ -29,10 +29,9 @@ namespace Oqtane.Repository
{
try
{
List<PageModule> pagemodules = db.PageModule.Where(item => item.PageId == PageId)
.Include(item => item.Module)
return db.PageModule.Where(item => item.PageId == PageId)
.Include(item => item.Module) // eager load modules
.ToList();
return pagemodules;
}
catch
{
@ -72,8 +71,8 @@ namespace Oqtane.Repository
{
try
{
PageModule PageModule = db.PageModule.Find(PageModuleId);
return PageModule;
return db.PageModule.Include(item => item.Module) // eager load modules
.SingleOrDefault(item => item.PageModuleId == PageModuleId);
}
catch
{

View File

@ -70,8 +70,7 @@ namespace Oqtane.Repository
{
try
{
Page Page = db.Page.Find(PageId);
return Page;
return db.Page.Find(PageId);
}
catch
{

View File

@ -0,0 +1,95 @@
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using Oqtane.Models;
namespace Oqtane.Repository
{
public class RoleRepository : IRoleRepository
{
private TenantDBContext db;
public RoleRepository(TenantDBContext context)
{
db = context;
}
public IEnumerable<Role> GetRoles()
{
try
{
return db.Role.ToList();
}
catch
{
throw;
}
}
public IEnumerable<Role> GetRoles(int SiteId)
{
try
{
return db.Role.Where(item => item.SiteId == SiteId).ToList();
}
catch
{
throw;
}
}
public Role AddRole(Role Role)
{
try
{
db.Role.Add(Role);
db.SaveChanges();
return Role;
}
catch
{
throw;
}
}
public Role UpdateRole(Role Role)
{
try
{
db.Entry(Role).State = EntityState.Modified;
db.SaveChanges();
return Role;
}
catch
{
throw;
}
}
public Role GetRole(int RoleId)
{
try
{
return db.Role.Find(RoleId);
}
catch
{
throw;
}
}
public void DeleteRole(int RoleId)
{
try
{
Role Role = db.Role.Find(RoleId);
db.Role.Remove(Role);
db.SaveChanges();
}
catch
{
throw;
}
}
}
}

View File

@ -59,8 +59,7 @@ namespace Oqtane.Repository
{
try
{
Setting Setting = db.Setting.Find(SettingId);
return Setting;
return db.Setting.Find(SettingId);
}
catch
{

View File

@ -58,8 +58,7 @@ namespace Oqtane.Repository
{
try
{
Site site = db.Site.Find(siteId);
return site;
return db.Site.Find(siteId);
}
catch
{

View File

@ -25,16 +25,13 @@ namespace Oqtane.Repository
throw;
}
}
public IEnumerable<SiteUser> GetSiteUsers(int SiteId, int UserId)
public IEnumerable<SiteUser> GetSiteUsers(int SiteId)
{
try
{
List<SiteUser> siteusers = db.SiteUser.Where(item => item.SiteId == SiteId).ToList();
if (UserId != -1)
{
siteusers = siteusers.Where(item => item.UserId == UserId).ToList();
}
return siteusers;
return db.SiteUser.Where(item => item.SiteId == SiteId)
.Include(item => item.User) // eager load users
.ToList();
}
catch
{
@ -74,8 +71,20 @@ namespace Oqtane.Repository
{
try
{
SiteUser SiteUser = db.SiteUser.Find(SiteUserId);
return SiteUser;
return db.SiteUser.Include(item => item.User) // eager load users
.SingleOrDefault(item => item.SiteUserId == SiteUserId);
}
catch
{
throw;
}
}
public SiteUser GetSiteUser(int SiteId, int UserId)
{
try
{
return db.SiteUser.Where(item => item.SiteId == SiteId).Where(item => item.UserId == UserId).FirstOrDefault();
}
catch
{

View File

@ -23,12 +23,11 @@ namespace Oqtane.Repository
{
try
{
IEnumerable<Tenant> tenants = _cache.GetOrCreate("tenants", entry =>
return _cache.GetOrCreate("tenants", entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return db.Tenant.ToList();
});
return tenants;
}
catch
{
@ -68,8 +67,7 @@ namespace Oqtane.Repository
{
try
{
Tenant tenant = db.Tenant.Find(TenantId);
return tenant;
return db.Tenant.Find(TenantId);
}
catch
{

View File

@ -10,26 +10,26 @@ namespace Oqtane.Repository
{
public class ThemeRepository : IThemeRepository
{
private readonly List<Theme> themes;
private readonly List<Theme> Themes;
public ThemeRepository()
{
themes = LoadThemes();
Themes = LoadThemes();
}
private List<Theme> LoadThemes()
{
List<Theme> themes = new List<Theme>();
List<Theme> Themes = new List<Theme>();
// iterate through Oqtane theme assemblies
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies()
.Where(item => item.FullName.StartsWith("Oqtane.") || item.FullName.Contains(".Theme.")).ToArray();
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
{
themes = LoadThemesFromAssembly(themes, assembly);
Themes = LoadThemesFromAssembly(Themes, assembly);
}
return themes;
return Themes;
}
private List<Theme> LoadThemesFromAssembly(List<Theme> themes, Assembly assembly)
@ -120,7 +120,7 @@ namespace Oqtane.Repository
public IEnumerable<Theme> GetThemes()
{
return themes;
return Themes;
}
}
}

View File

@ -58,8 +58,7 @@ namespace Oqtane.Repository
{
try
{
User user = db.User.Find(userId);
return user;
return db.User.Find(userId);
}
catch
{
@ -71,8 +70,7 @@ namespace Oqtane.Repository
{
try
{
User user = db.User.Where(item => item.Username == Username).FirstOrDefault();
return user;
return db.User.Where(item => item.Username == Username).FirstOrDefault();
}
catch
{

View File

@ -0,0 +1,97 @@
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using Oqtane.Models;
namespace Oqtane.Repository
{
public class UserRoleRepository : IUserRoleRepository
{
private TenantDBContext db;
public UserRoleRepository(TenantDBContext context)
{
db = context;
}
public IEnumerable<UserRole> GetUserRoles()
{
try
{
return db.UserRole.ToList();
}
catch
{
throw;
}
}
public IEnumerable<UserRole> GetUserRoles(int UserId)
{
try
{
return db.UserRole.Where(item => item.UserId == UserId)
.Include(item => item.Role) // eager load roles
.ToList();
}
catch
{
throw;
}
}
public UserRole AddUserRole(UserRole UserRole)
{
try
{
db.UserRole.Add(UserRole);
db.SaveChanges();
return UserRole;
}
catch
{
throw;
}
}
public UserRole UpdateUserRole(UserRole UserRole)
{
try
{
db.Entry(UserRole).State = EntityState.Modified;
db.SaveChanges();
return UserRole;
}
catch
{
throw;
}
}
public UserRole GetUserRole(int UserRoleId)
{
try
{
return db.UserRole.Include(item => item.Role) // eager load roles
.SingleOrDefault(item => item.UserRoleId == UserRoleId);
}
catch
{
throw;
}
}
public void DeleteUserRole(int UserRoleId)
{
try
{
UserRole UserRole = db.UserRole.Find(UserRoleId);
db.UserRole.Remove(UserRole);
db.SaveChanges();
}
catch
{
throw;
}
}
}
}