Dynamic User Roles
This commit is contained in:
@ -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
|
||||
{
|
||||
|
@ -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)
|
||||
|
15
Oqtane.Server/Repository/Interfaces/IRoleRepository.cs
Normal file
15
Oqtane.Server/Repository/Interfaces/IRoleRepository.cs
Normal 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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
15
Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs
Normal file
15
Oqtane.Server/Repository/Interfaces/IUserRoleRepository.cs
Normal 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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -73,8 +73,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
try
|
||||
{
|
||||
Module Module = db.Module.Find(ModuleId);
|
||||
return Module;
|
||||
return db.Module.Find(ModuleId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -70,8 +70,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
try
|
||||
{
|
||||
Page Page = db.Page.Find(PageId);
|
||||
return Page;
|
||||
return db.Page.Find(PageId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
95
Oqtane.Server/Repository/RoleRepository.cs
Normal file
95
Oqtane.Server/Repository/RoleRepository.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -59,8 +59,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
try
|
||||
{
|
||||
Setting Setting = db.Setting.Find(SettingId);
|
||||
return Setting;
|
||||
return db.Setting.Find(SettingId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -58,8 +58,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
try
|
||||
{
|
||||
Site site = db.Site.Find(siteId);
|
||||
return site;
|
||||
return db.Site.Find(siteId);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
{
|
||||
|
97
Oqtane.Server/Repository/UserRoleRepository.cs
Normal file
97
Oqtane.Server/Repository/UserRoleRepository.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user