Refactor host user security model, support static assets in modules and themes, module definition permissions and categories, paging control, remove SiteUsers, move seed data from script to site template for installation
This commit is contained in:
@ -17,6 +17,7 @@ namespace Oqtane.Repository
|
||||
|
||||
public virtual DbSet<Alias> Alias { get; set; }
|
||||
public virtual DbSet<Tenant> Tenant { get; set; }
|
||||
public virtual DbSet<ModuleDefinition> ModuleDefinition { get; set; }
|
||||
|
||||
public override int SaveChanges()
|
||||
{
|
||||
|
@ -12,7 +12,6 @@ namespace Oqtane.Repository
|
||||
public virtual DbSet<Module> Module { get; set; }
|
||||
public virtual DbSet<User> User { get; set; }
|
||||
public virtual DbSet<Profile> Profile { 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<Permission> Permission { get; set; }
|
||||
|
@ -5,6 +5,8 @@ namespace Oqtane.Repository
|
||||
{
|
||||
public interface IModuleDefinitionRepository
|
||||
{
|
||||
IEnumerable<ModuleDefinition> GetModuleDefinitions();
|
||||
IEnumerable<ModuleDefinition> GetModuleDefinitions(int SideId);
|
||||
void UpdateModuleDefinition(ModuleDefinition ModuleDefinition);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,16 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public interface ISiteUserRepository
|
||||
{
|
||||
IEnumerable<SiteUser> GetSiteUsers();
|
||||
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);
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@ namespace Oqtane.Repository
|
||||
public interface IUserRoleRepository
|
||||
{
|
||||
IEnumerable<UserRole> GetUserRoles();
|
||||
IEnumerable<UserRole> GetUserRoles(int UserId);
|
||||
IEnumerable<UserRole> GetUserRoles(int SiteId);
|
||||
IEnumerable<UserRole> GetUserRoles(int UserId, int SiteId);
|
||||
UserRole AddUserRole(UserRole UserRole);
|
||||
UserRole UpdateUserRole(UserRole UserRole);
|
||||
|
@ -10,14 +10,16 @@ namespace Oqtane.Repository
|
||||
{
|
||||
public class ModuleDefinitionRepository : IModuleDefinitionRepository
|
||||
{
|
||||
private readonly List<ModuleDefinition> ModuleDefinitions;
|
||||
private MasterDBContext db;
|
||||
private readonly IPermissionRepository Permissions;
|
||||
|
||||
public ModuleDefinitionRepository()
|
||||
public ModuleDefinitionRepository(MasterDBContext context, IPermissionRepository Permissions)
|
||||
{
|
||||
ModuleDefinitions = LoadModuleDefinitions();
|
||||
db = context;
|
||||
this.Permissions = Permissions;
|
||||
}
|
||||
|
||||
private List<ModuleDefinition> LoadModuleDefinitions()
|
||||
private List<ModuleDefinition> LoadModuleDefinitions(int SiteId)
|
||||
{
|
||||
List<ModuleDefinition> ModuleDefinitions = new List<ModuleDefinition>();
|
||||
|
||||
@ -29,6 +31,27 @@ namespace Oqtane.Repository
|
||||
ModuleDefinitions = LoadModuleDefinitionsFromAssembly(ModuleDefinitions, assembly);
|
||||
}
|
||||
|
||||
// sync module definitions with database
|
||||
List<ModuleDefinition> moduledefs = db.ModuleDefinition.ToList();
|
||||
foreach (ModuleDefinition moduledefinition in ModuleDefinitions)
|
||||
{
|
||||
IEnumerable<Permission> permissions = Permissions.GetPermissions(SiteId, "ModuleDefinition").ToList();
|
||||
ModuleDefinition moduledef = moduledefs.Where(item => item.ModuleDefinitionName == moduledefinition.ModuleDefinitionName).FirstOrDefault();
|
||||
if (moduledef == null)
|
||||
{
|
||||
moduledef = new ModuleDefinition { ModuleDefinitionName = moduledefinition.ModuleDefinitionName };
|
||||
db.ModuleDefinition.Add(moduledef);
|
||||
db.SaveChanges();
|
||||
}
|
||||
moduledefinition.ModuleDefinitionId = moduledef.ModuleDefinitionId;
|
||||
moduledefinition.SiteId = SiteId;
|
||||
moduledefinition.Permissions = Permissions.EncodePermissions(moduledefinition.ModuleDefinitionId, permissions);
|
||||
moduledefinition.CreatedBy = moduledef.CreatedBy;
|
||||
moduledefinition.CreatedOn = moduledef.CreatedOn;
|
||||
moduledefinition.ModifiedBy = moduledef.ModifiedBy;
|
||||
moduledefinition.ModifiedOn = moduledef.ModifiedOn;
|
||||
}
|
||||
|
||||
return ModuleDefinitions;
|
||||
}
|
||||
|
||||
@ -64,13 +87,14 @@ namespace Oqtane.Repository
|
||||
ModuleDefinitionName = QualifiedModuleType,
|
||||
Name = GetProperty(properties, "Name"),
|
||||
Description = GetProperty(properties, "Description"),
|
||||
Categories = GetProperty(properties, "Categories"),
|
||||
Version = GetProperty(properties, "Version"),
|
||||
Owner = GetProperty(properties, "Owner"),
|
||||
Url = GetProperty(properties, "Url"),
|
||||
Contact = GetProperty(properties, "Contact"),
|
||||
License = GetProperty(properties, "License"),
|
||||
Dependencies = GetProperty(properties, "Dependencies"),
|
||||
Permissions = GetProperty(properties, "Permissions"),
|
||||
PermissionNames = GetProperty(properties, "PermissionNames"),
|
||||
ControlTypeTemplate = ModuleType + ".{Control}" + ", " + typename[1],
|
||||
ControlTypeRoutes = "",
|
||||
AssemblyName = assembly.FullName.Split(",")[0]
|
||||
@ -83,13 +107,14 @@ namespace Oqtane.Repository
|
||||
ModuleDefinitionName = QualifiedModuleType,
|
||||
Name = ModuleType.Substring(ModuleType.LastIndexOf(".") + 1),
|
||||
Description = ModuleType.Substring(ModuleType.LastIndexOf(".") + 1),
|
||||
Categories = ((QualifiedModuleType.StartsWith("Oqtane.Modules.Admin.")) ? "Admin" : ""),
|
||||
Version = new Version(1, 0, 0).ToString(),
|
||||
Owner = "",
|
||||
Url = "",
|
||||
Contact = "",
|
||||
License = "",
|
||||
Dependencies = "",
|
||||
Permissions = "",
|
||||
PermissionNames = "",
|
||||
ControlTypeTemplate = ModuleType + ".{Control}" + ", " + typename[1],
|
||||
ControlTypeRoutes = "",
|
||||
AssemblyName = assembly.FullName.Split(",")[0]
|
||||
@ -116,11 +141,6 @@ namespace Oqtane.Repository
|
||||
return moduledefinitions;
|
||||
}
|
||||
|
||||
public IEnumerable<ModuleDefinition> GetModuleDefinitions()
|
||||
{
|
||||
return ModuleDefinitions;
|
||||
}
|
||||
|
||||
private string GetProperty(Dictionary<string, string> Properties, string Key)
|
||||
{
|
||||
string Value = "";
|
||||
@ -130,5 +150,15 @@ namespace Oqtane.Repository
|
||||
}
|
||||
return Value;
|
||||
}
|
||||
|
||||
public IEnumerable<ModuleDefinition> GetModuleDefinitions(int SiteId)
|
||||
{
|
||||
return LoadModuleDefinitions(SiteId);
|
||||
}
|
||||
|
||||
public void UpdateModuleDefinition(ModuleDefinition ModuleDefinition)
|
||||
{
|
||||
Permissions.UpdatePermissions(ModuleDefinition.SiteId, "ModuleDefinition", ModuleDefinition.ModuleDefinitionId, ModuleDefinition.Permissions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,18 +2,56 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
using System;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public class SiteRepository : ISiteRepository
|
||||
{
|
||||
private TenantDBContext db;
|
||||
private readonly TenantDBContext db;
|
||||
private readonly IRoleRepository RoleRepository;
|
||||
private readonly IProfileRepository ProfileRepository;
|
||||
private readonly IPageRepository PageRepository;
|
||||
private readonly IModuleRepository ModuleRepository;
|
||||
private readonly IPageModuleRepository PageModuleRepository;
|
||||
private readonly List<PageTemplate> SiteTemplate;
|
||||
|
||||
public SiteRepository(TenantDBContext context)
|
||||
public SiteRepository(TenantDBContext context, IRoleRepository RoleRepository, IProfileRepository ProfileRepository, IPageRepository PageRepository, IModuleRepository ModuleRepository, IPageModuleRepository PageModuleRepository)
|
||||
{
|
||||
db = context;
|
||||
this.RoleRepository = RoleRepository;
|
||||
this.ProfileRepository = ProfileRepository;
|
||||
this.PageRepository = PageRepository;
|
||||
this.ModuleRepository = ModuleRepository;
|
||||
this.PageModuleRepository = PageModuleRepository;
|
||||
|
||||
// defines the default site template
|
||||
SiteTemplate = new List<PageTemplate>();
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Home", Parent = "", Path = "", Order = 1, Icon = "home", IsNavigation = true, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "", ModulePermissions = "", Title = "", Pane = "", ContainerType = "" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Admin", Parent = "", Path = "admin", Order = 1, Icon = "", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Dashboard, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Administration", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Site Management", Parent = "Admin", Path = "admin/sites", Order = 1, Icon = "globe", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Sites, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Site Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Page Management", Parent = "Admin", Path = "admin/pages", Order = 1, Icon = "layers", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Pages, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Page Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Module Management", Parent = "Admin", Path = "admin/modules", Order = 1, Icon = "browser", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.ModuleDefinitions, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Module Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Theme Management", Parent = "Admin", Path = "admin/themes", Order = 1, Icon = "brush", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Themes, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Theme Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "User Management", Parent = "Admin", Path = "admin/users", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Users, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "User Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Role Management", Parent = "Admin", Path = "admin/roles", Order = 1, Icon = "lock-locked", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Roles, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Role Management", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Login", Parent = "", Path = "login", Order = 1, Icon = "lock-locked", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Login, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Login", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Register", Parent = "", Path = "register", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Register, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "Register", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
SiteTemplate.Add(new PageTemplate { Name = "Profile", Parent = "", Path = "profile", Order = 1, Icon = "person", IsNavigation = false, PagePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
|
||||
ModuleDefinitionName = "Oqtane.Modules.Admin.Profile, Oqtane.Client", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]", Title = "User Profile", Pane = "top", ContainerType = "Oqtane.Themes.Theme2.Container2, Oqtane.Client" });
|
||||
}
|
||||
|
||||
|
||||
public IEnumerable<Site> GetSites()
|
||||
{
|
||||
return db.Site;
|
||||
@ -23,6 +61,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
db.Site.Add(Site);
|
||||
db.SaveChanges();
|
||||
CreateSite(Site);
|
||||
return Site;
|
||||
}
|
||||
|
||||
@ -44,5 +83,74 @@ namespace Oqtane.Repository
|
||||
db.Site.Remove(site);
|
||||
db.SaveChanges();
|
||||
}
|
||||
|
||||
private void CreateSite(Site site)
|
||||
{
|
||||
RoleRepository.AddRole(new Role { SiteId = null, Name = Constants.AllUsersRole, Description = "All Users", IsAutoAssigned = false, IsSystem = true });
|
||||
RoleRepository.AddRole(new Role { SiteId = null, Name = Constants.HostRole, Description = "Application Administrators", IsAutoAssigned = false, IsSystem = true });
|
||||
|
||||
RoleRepository.AddRole(new Role { SiteId = site.SiteId, Name = Constants.RegisteredRole, Description = "Registered Users", IsAutoAssigned = true, IsSystem = true });
|
||||
RoleRepository.AddRole(new Role { SiteId = site.SiteId, Name = Constants.AdminRole, Description = "Site Administrators", IsAutoAssigned = false, IsSystem = true });
|
||||
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "FirstName", Title = "First Name", Description = "Your First Or Given Name", Category = "Name", ViewOrder = 1, MaxLength = 50, DefaultValue = "", IsRequired = true, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "LastName", Title = "Last Name", Description = "Your Last Or Family Name", Category = "Name", ViewOrder = 2, MaxLength = 50, DefaultValue = "", IsRequired = true, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "Street", Title = "Street", Description = "Street Or Building Address", Category = "Address", ViewOrder = 3, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "City", Title = "City", Description = "City", Category = "Address", ViewOrder = 4, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "Region", Title = "Region", Description = "State Or Province", Category = "Address", ViewOrder = 5, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "Country", Title = "Country", Description = "Country", Category = "Address", ViewOrder = 6, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "PostalCode", Title = "Postal Code", Description = "Postal Code Or Zip Code", Category = "Address", ViewOrder = 7, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "Phone", Title = "Phone Number", Description = "Phone Number", Category = "Contact", ViewOrder = 8, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
|
||||
|
||||
foreach (PageTemplate pagetemplate in SiteTemplate)
|
||||
{
|
||||
int? parentid = null;
|
||||
if (pagetemplate.Parent != "")
|
||||
{
|
||||
List<Page> pages = PageRepository.GetPages(site.SiteId).ToList();
|
||||
Page parent = pages.Where(item => item.Name == pagetemplate.Parent).FirstOrDefault();
|
||||
parentid = parent.PageId;
|
||||
}
|
||||
|
||||
Page page = new Page
|
||||
{
|
||||
SiteId = site.SiteId,
|
||||
ParentId = parentid,
|
||||
Name = pagetemplate.Name,
|
||||
Path = pagetemplate.Path,
|
||||
Order = pagetemplate.Order,
|
||||
IsNavigation = pagetemplate.IsNavigation,
|
||||
ThemeType = site.DefaultThemeType,
|
||||
LayoutType = site.DefaultLayoutType,
|
||||
Icon = pagetemplate.Icon,
|
||||
Permissions = pagetemplate.PagePermissions
|
||||
};
|
||||
Type type = Type.GetType(page.ThemeType);
|
||||
System.Reflection.PropertyInfo property = type.GetProperty("Panes");
|
||||
page.Panes = (string)property.GetValue(Activator.CreateInstance(type), null);
|
||||
page = PageRepository.AddPage(page);
|
||||
|
||||
if (pagetemplate.ModuleDefinitionName != "")
|
||||
{
|
||||
Module module = new Module
|
||||
{
|
||||
SiteId = site.SiteId,
|
||||
ModuleDefinitionName = pagetemplate.ModuleDefinitionName,
|
||||
Permissions = pagetemplate.ModulePermissions,
|
||||
};
|
||||
module = ModuleRepository.AddModule(module);
|
||||
|
||||
PageModule pagemodule = new PageModule
|
||||
{
|
||||
PageId = page.PageId,
|
||||
ModuleId = module.ModuleId,
|
||||
Title = pagetemplate.Title,
|
||||
Pane = pagetemplate.Pane,
|
||||
Order = 1,
|
||||
ContainerType = pagetemplate.ContainerType
|
||||
};
|
||||
PageModuleRepository.AddPageModule(pagemodule);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,60 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Oqtane.Models;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
public class SiteUserRepository : ISiteUserRepository
|
||||
{
|
||||
private TenantDBContext db;
|
||||
|
||||
public SiteUserRepository(TenantDBContext context)
|
||||
{
|
||||
db = context;
|
||||
}
|
||||
|
||||
public IEnumerable<SiteUser> GetSiteUsers()
|
||||
{
|
||||
return db.SiteUser;
|
||||
}
|
||||
public IEnumerable<SiteUser> GetSiteUsers(int SiteId)
|
||||
{
|
||||
return db.SiteUser.Where(item => item.SiteId == SiteId)
|
||||
.Include(item => item.User); // eager load users
|
||||
}
|
||||
|
||||
public SiteUser AddSiteUser(SiteUser SiteUser)
|
||||
{
|
||||
db.SiteUser.Add(SiteUser);
|
||||
db.SaveChanges();
|
||||
return SiteUser;
|
||||
}
|
||||
|
||||
public SiteUser UpdateSiteUser(SiteUser SiteUser)
|
||||
{
|
||||
db.Entry(SiteUser).State = EntityState.Modified;
|
||||
db.SaveChanges();
|
||||
return SiteUser;
|
||||
}
|
||||
|
||||
public SiteUser GetSiteUser(int SiteUserId)
|
||||
{
|
||||
return db.SiteUser.Include(item => item.User) // eager load users
|
||||
.SingleOrDefault(item => item.SiteUserId == SiteUserId);
|
||||
}
|
||||
|
||||
public SiteUser GetSiteUser(int SiteId, int UserId)
|
||||
{
|
||||
return db.SiteUser.Where(item => item.SiteId == SiteId)
|
||||
.Where(item => item.UserId == UserId).FirstOrDefault();
|
||||
}
|
||||
|
||||
public void DeleteSiteUser(int SiteUserId)
|
||||
{
|
||||
SiteUser SiteUser = db.SiteUser.Find(SiteUserId);
|
||||
db.SiteUser.Remove(SiteUser);
|
||||
db.SaveChanges();
|
||||
}
|
||||
}
|
||||
}
|
@ -10,13 +10,6 @@ namespace Oqtane.Repository
|
||||
{
|
||||
public class ThemeRepository : IThemeRepository
|
||||
{
|
||||
private readonly List<Theme> Themes;
|
||||
|
||||
public ThemeRepository()
|
||||
{
|
||||
Themes = LoadThemes();
|
||||
}
|
||||
|
||||
private List<Theme> LoadThemes()
|
||||
{
|
||||
List<Theme> Themes = new List<Theme>();
|
||||
@ -119,11 +112,6 @@ namespace Oqtane.Repository
|
||||
return themes;
|
||||
}
|
||||
|
||||
public IEnumerable<Theme> GetThemes()
|
||||
{
|
||||
return Themes;
|
||||
}
|
||||
|
||||
private string GetProperty(Dictionary<string, string> Properties, string Key)
|
||||
{
|
||||
string Value = "";
|
||||
@ -133,5 +121,10 @@ namespace Oqtane.Repository
|
||||
}
|
||||
return Value;
|
||||
}
|
||||
|
||||
public IEnumerable<Theme> GetThemes()
|
||||
{
|
||||
return LoadThemes();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,17 +18,20 @@ namespace Oqtane.Repository
|
||||
{
|
||||
return db.UserRole;
|
||||
}
|
||||
public IEnumerable<UserRole> GetUserRoles(int UserId)
|
||||
public IEnumerable<UserRole> GetUserRoles(int SiteId)
|
||||
{
|
||||
return db.UserRole.Where(item => item.UserId == UserId)
|
||||
.Include(item => item.Role); // eager load roles
|
||||
return db.UserRole
|
||||
.Include(item => item.Role) // eager load roles
|
||||
.Include(item => item.User) // eager load users
|
||||
.Where(item => item.Role.SiteId == SiteId);
|
||||
}
|
||||
|
||||
public IEnumerable<UserRole> GetUserRoles(int UserId, int SiteId)
|
||||
{
|
||||
return db.UserRole.Where(item => item.UserId == UserId)
|
||||
.Include(item => item.Role) // eager load roles
|
||||
.Where(item => item.Role.SiteId == SiteId);
|
||||
.Include(item => item.User) // eager load users
|
||||
.Where(item => item.Role.SiteId == SiteId || item.Role.SiteId == null);
|
||||
}
|
||||
|
||||
public UserRole AddUserRole(UserRole UserRole)
|
||||
@ -47,7 +50,9 @@ namespace Oqtane.Repository
|
||||
|
||||
public UserRole GetUserRole(int UserRoleId)
|
||||
{
|
||||
return db.UserRole.Include(item => item.Role) // eager load roles
|
||||
return db.UserRole
|
||||
.Include(item => item.Role) // eager load roles
|
||||
.Include(item => item.User) // eager load users
|
||||
.SingleOrDefault(item => item.UserRoleId == UserRoleId);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user