From 4fda7b17d0e76404d554ef0f85e744e8412a8d61 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Mon, 5 Aug 2019 09:31:04 -0400 Subject: [PATCH] Refactored repository pattern for Add and Update methods so that they return their respective entity objects --- Oqtane.Client/Services/AliasService.cs | 8 +- Oqtane.Client/Services/IAliasService.cs | 4 +- Oqtane.Client/Services/IModuleService.cs | 4 +- Oqtane.Client/Services/IPageModuleService.cs | 4 +- Oqtane.Client/Services/IPageService.cs | 4 +- Oqtane.Client/Services/ISiteService.cs | 4 +- Oqtane.Client/Services/IUserService.cs | 8 +- Oqtane.Client/Services/ModuleService.cs | 8 +- Oqtane.Client/Services/PageModuleService.cs | 8 +- Oqtane.Client/Services/PageService.cs | 8 +- Oqtane.Client/Services/SiteService.cs | 8 +- Oqtane.Client/Services/UserService.cs | 24 ++--- Oqtane.Client/Shared/Installer.razor | 1 - Oqtane.Server/Controllers/AliasController.cs | 14 ++- Oqtane.Server/Controllers/ModuleController.cs | 14 ++- Oqtane.Server/Controllers/PageController.cs | 14 ++- .../Controllers/PageModuleController.cs | 14 ++- Oqtane.Server/Controllers/SiteController.cs | 14 ++- Oqtane.Server/Controllers/TenantController.cs | 14 ++- Oqtane.Server/Controllers/UserController.cs | 20 ++-- .../Controllers/HtmlTextController.cs | 14 ++- .../HtmlText/Repository/HtmlTextRepository.cs | 6 +- .../Repository/IHtmlTextRepository.cs | 4 +- Oqtane.Server/Repository/AliasRepository.cs | 18 ++-- Oqtane.Server/Repository/IAliasRepository.cs | 8 +- Oqtane.Server/Repository/IModuleRepository.cs | 4 +- .../Repository/IPageModuleRepository.cs | 4 +- Oqtane.Server/Repository/IPageRepository.cs | 4 +- Oqtane.Server/Repository/ISiteRepository.cs | 8 +- .../Repository/ISiteUserRepository.cs | 15 +++ Oqtane.Server/Repository/ITenantRepository.cs | 8 +- Oqtane.Server/Repository/IUserRepository.cs | 4 +- Oqtane.Server/Repository/ModuleRepository.cs | 6 +- .../Repository/PageModuleRepository.cs | 6 +- Oqtane.Server/Repository/PageRepository.cs | 6 +- Oqtane.Server/Repository/SiteRepository.cs | 10 +- .../Repository/SiteUserRepository.cs | 100 ++++++++++++++++++ Oqtane.Server/Repository/TenantDBContext.cs | 1 + Oqtane.Server/Repository/TenantRepository.cs | 18 ++-- Oqtane.Server/Repository/UserRepository.cs | 6 +- Oqtane.Server/Scripts/Tenant.sql | 24 +++++ Oqtane.Shared/Models/SiteUser.cs | 17 +++ Oqtane.Shared/Models/User.cs | 2 + 43 files changed, 353 insertions(+), 137 deletions(-) create mode 100644 Oqtane.Server/Repository/ISiteUserRepository.cs create mode 100644 Oqtane.Server/Repository/SiteUserRepository.cs create mode 100644 Oqtane.Shared/Models/SiteUser.cs diff --git a/Oqtane.Client/Services/AliasService.cs b/Oqtane.Client/Services/AliasService.cs index 1d29f68a..f1b22cb3 100644 --- a/Oqtane.Client/Services/AliasService.cs +++ b/Oqtane.Client/Services/AliasService.cs @@ -37,14 +37,14 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/" + AliasId.ToString()); } - public async Task AddAliasAsync(Alias alias) + public async Task AddAliasAsync(Alias alias) { - await http.PostJsonAsync(apiurl, alias); + return await http.PostJsonAsync(apiurl, alias); } - public async Task UpdateAliasAsync(Alias alias) + public async Task UpdateAliasAsync(Alias alias) { - await http.PutJsonAsync(apiurl + "/" + alias.AliasId.ToString(), alias); + return await http.PutJsonAsync(apiurl + "/" + alias.AliasId.ToString(), alias); } public async Task DeleteAliasAsync(int AliasId) { diff --git a/Oqtane.Client/Services/IAliasService.cs b/Oqtane.Client/Services/IAliasService.cs index c4fe200b..b9b515ac 100644 --- a/Oqtane.Client/Services/IAliasService.cs +++ b/Oqtane.Client/Services/IAliasService.cs @@ -10,9 +10,9 @@ namespace Oqtane.Services Task GetAliasAsync(int AliasId); - Task AddAliasAsync(Alias alias); + Task AddAliasAsync(Alias Alias); - Task UpdateAliasAsync(Alias alias); + Task UpdateAliasAsync(Alias Alias); Task DeleteAliasAsync(int AliasId); } diff --git a/Oqtane.Client/Services/IModuleService.cs b/Oqtane.Client/Services/IModuleService.cs index 4f800cf7..2252e7b6 100644 --- a/Oqtane.Client/Services/IModuleService.cs +++ b/Oqtane.Client/Services/IModuleService.cs @@ -9,8 +9,8 @@ namespace Oqtane.Services Task> GetModulesAsync(int PageId); Task> GetModulesAsync(int SiteId, string ModuleDefinitionName); Task GetModuleAsync(int ModuleId); - Task AddModuleAsync(Module module); - Task UpdateModuleAsync(Module module); + Task AddModuleAsync(Module Module); + Task UpdateModuleAsync(Module Module); Task DeleteModuleAsync(int ModuleId); } } diff --git a/Oqtane.Client/Services/IPageModuleService.cs b/Oqtane.Client/Services/IPageModuleService.cs index 2f3d037c..e574ad34 100644 --- a/Oqtane.Client/Services/IPageModuleService.cs +++ b/Oqtane.Client/Services/IPageModuleService.cs @@ -7,8 +7,8 @@ namespace Oqtane.Services public interface IPageModuleService { Task> GetPageModulesAsync(); - Task AddPageModuleAsync(PageModule pagemodule); - Task UpdatePageModuleAsync(PageModule pagemodule); + Task AddPageModuleAsync(PageModule PageModule); + Task UpdatePageModuleAsync(PageModule PageModule); Task DeletePageModuleAsync(int PageModuleId); } } diff --git a/Oqtane.Client/Services/IPageService.cs b/Oqtane.Client/Services/IPageService.cs index 5388af7b..846c7b9a 100644 --- a/Oqtane.Client/Services/IPageService.cs +++ b/Oqtane.Client/Services/IPageService.cs @@ -8,8 +8,8 @@ namespace Oqtane.Services { Task> GetPagesAsync(int SiteId); Task GetPageAsync(int PageId); - Task AddPageAsync(Page page); - Task UpdatePageAsync(Page page); + Task AddPageAsync(Page Page); + Task UpdatePageAsync(Page Page); Task DeletePageAsync(int PageId); } } diff --git a/Oqtane.Client/Services/ISiteService.cs b/Oqtane.Client/Services/ISiteService.cs index 4fb0ab98..fc81edcf 100644 --- a/Oqtane.Client/Services/ISiteService.cs +++ b/Oqtane.Client/Services/ISiteService.cs @@ -10,9 +10,9 @@ namespace Oqtane.Services Task GetSiteAsync(int SiteId); - Task AddSiteAsync(Site site); + Task AddSiteAsync(Site Site); - Task UpdateSiteAsync(Site site); + Task UpdateSiteAsync(Site Site); Task DeleteSiteAsync(int SiteId); } diff --git a/Oqtane.Client/Services/IUserService.cs b/Oqtane.Client/Services/IUserService.cs index e1b42bdd..e263d92c 100644 --- a/Oqtane.Client/Services/IUserService.cs +++ b/Oqtane.Client/Services/IUserService.cs @@ -12,18 +12,18 @@ namespace Oqtane.Services Task GetUserAsync(string Username); - Task AddUserAsync(User user); + Task AddUserAsync(User User); - Task UpdateUserAsync(User user); + Task UpdateUserAsync(User User); Task DeleteUserAsync(int UserId); Task GetCurrentUserAsync(); - Task LoginUserAsync(User user); + Task LoginUserAsync(User User); Task LogoutUserAsync(); - bool IsAuthorized(User user, string accesscontrollist); + bool IsAuthorized(User User, string AccessControlList); } } diff --git a/Oqtane.Client/Services/ModuleService.cs b/Oqtane.Client/Services/ModuleService.cs index 60f22eeb..8fa12e89 100644 --- a/Oqtane.Client/Services/ModuleService.cs +++ b/Oqtane.Client/Services/ModuleService.cs @@ -46,14 +46,14 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/" + ModuleId.ToString()); } - public async Task AddModuleAsync(Module module) + public async Task AddModuleAsync(Module Module) { - await http.PostJsonAsync(apiurl, module); + return await http.PostJsonAsync(apiurl, Module); } - public async Task UpdateModuleAsync(Module module) + public async Task UpdateModuleAsync(Module Module) { - await http.PutJsonAsync(apiurl + "/" + module.ModuleId.ToString(), module); + return await http.PutJsonAsync(apiurl + "/" + Module.ModuleId.ToString(), Module); } public async Task DeleteModuleAsync(int ModuleId) diff --git a/Oqtane.Client/Services/PageModuleService.cs b/Oqtane.Client/Services/PageModuleService.cs index 65ea4b9f..3c7dbf66 100644 --- a/Oqtane.Client/Services/PageModuleService.cs +++ b/Oqtane.Client/Services/PageModuleService.cs @@ -31,14 +31,14 @@ namespace Oqtane.Services return await http.GetJsonAsync>(apiurl); } - public async Task AddPageModuleAsync(PageModule pagemodule) + public async Task AddPageModuleAsync(PageModule PageModule) { - await http.PostJsonAsync(apiurl, pagemodule); + return await http.PostJsonAsync(apiurl, PageModule); } - public async Task UpdatePageModuleAsync(PageModule pagemodule) + public async Task UpdatePageModuleAsync(PageModule PageModule) { - await http.PutJsonAsync(apiurl + "/" + pagemodule.PageModuleId.ToString(), pagemodule); + return await http.PutJsonAsync(apiurl + "/" + PageModule.PageModuleId.ToString(), PageModule); } public async Task DeletePageModuleAsync(int PageModuleId) diff --git a/Oqtane.Client/Services/PageService.cs b/Oqtane.Client/Services/PageService.cs index d0124c79..74f75e15 100644 --- a/Oqtane.Client/Services/PageService.cs +++ b/Oqtane.Client/Services/PageService.cs @@ -37,14 +37,14 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/" + PageId.ToString()); } - public async Task AddPageAsync(Page page) + public async Task AddPageAsync(Page Page) { - await http.PostJsonAsync(apiurl, page); + return await http.PostJsonAsync(apiurl, Page); } - public async Task UpdatePageAsync(Page page) + public async Task UpdatePageAsync(Page Page) { - await http.PutJsonAsync(apiurl + "/" + page.PageId.ToString(), page); + return await http.PutJsonAsync(apiurl + "/" + Page.PageId.ToString(), Page); } public async Task DeletePageAsync(int PageId) { diff --git a/Oqtane.Client/Services/SiteService.cs b/Oqtane.Client/Services/SiteService.cs index 83cfad34..2ca7139b 100644 --- a/Oqtane.Client/Services/SiteService.cs +++ b/Oqtane.Client/Services/SiteService.cs @@ -37,14 +37,14 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/" + SiteId.ToString()); } - public async Task AddSiteAsync(Site site) + public async Task AddSiteAsync(Site Site) { - await http.PostJsonAsync(apiurl, site); + return await http.PostJsonAsync(apiurl, Site); } - public async Task UpdateSiteAsync(Site site) + public async Task UpdateSiteAsync(Site Site) { - await http.PutJsonAsync(apiurl + "/" + site.SiteId.ToString(), site); + return await http.PutJsonAsync(apiurl + "/" + Site.SiteId.ToString(), Site); } public async Task DeleteSiteAsync(int SiteId) { diff --git a/Oqtane.Client/Services/UserService.cs b/Oqtane.Client/Services/UserService.cs index eeb19433..d9dd281d 100644 --- a/Oqtane.Client/Services/UserService.cs +++ b/Oqtane.Client/Services/UserService.cs @@ -43,14 +43,14 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/name/" + Username); } - public async Task AddUserAsync(User user) + public async Task AddUserAsync(User User) { - await http.PostJsonAsync(apiurl, user); + return await http.PostJsonAsync(apiurl, User); } - public async Task UpdateUserAsync(User user) + public async Task UpdateUserAsync(User User) { - await http.PutJsonAsync(apiurl + "/" + user.UserId.ToString(), user); + return await http.PutJsonAsync(apiurl + "/" + User.UserId.ToString(), User); } public async Task DeleteUserAsync(int UserId) { @@ -62,9 +62,9 @@ namespace Oqtane.Services return await http.GetJsonAsync(apiurl + "/current"); } - public async Task LoginUserAsync(User user) + public async Task LoginUserAsync(User User) { - return await http.PostJsonAsync(apiurl + "/login", user); + return await http.PostJsonAsync(apiurl + "/login", User); } public async Task LogoutUserAsync() @@ -74,23 +74,23 @@ namespace Oqtane.Services } // ACLs are stored in the format "!rolename1;![userid1];rolename2;rolename3;[userid2];[userid3]" where "!" designates Deny permissions - public bool IsAuthorized(User user, string accesscontrollist) + public bool IsAuthorized(User User, string AccessControlList) { bool isAllowed = false; - if (user != null) + if (User != null) { //super user always has full access - isAllowed = user.IsSuperUser; + isAllowed = User.IsSuperUser; } if (!isAllowed) { - if (accesscontrollist != null) + if (AccessControlList != null) { - foreach (string permission in accesscontrollist.Split(new[] { ';' })) + foreach (string permission in AccessControlList.Split(new[] { ';' })) { - bool? allowed = VerifyPermission(user, permission); + bool? allowed = VerifyPermission(User, permission); if (allowed.HasValue) { isAllowed = allowed.Value; diff --git a/Oqtane.Client/Shared/Installer.razor b/Oqtane.Client/Shared/Installer.razor index 98aebf80..1c0f497a 100644 --- a/Oqtane.Client/Shared/Installer.razor +++ b/Oqtane.Client/Shared/Installer.razor @@ -117,7 +117,6 @@ private string DatabaseType = "LocalDB"; private string ServerName = "(LocalDb)\\MSSQLLocalDB"; private string DatabaseName = "Oqtane-" + DateTime.Now.ToString("yyyyMMddHHmm"); -private bool IntegratedSecurity = true; private string Username = ""; private string Password = ""; private string HostUsername = "host"; diff --git a/Oqtane.Server/Controllers/AliasController.cs b/Oqtane.Server/Controllers/AliasController.cs index 772bb974..facd0453 100644 --- a/Oqtane.Server/Controllers/AliasController.cs +++ b/Oqtane.Server/Controllers/AliasController.cs @@ -31,18 +31,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Alias alias) + public Alias Post([FromBody] Alias Alias) { if (ModelState.IsValid) - aliases.AddAlias(alias); + { + Alias = aliases.AddAlias(Alias); + } + return Alias; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Alias alias) + public Alias Put(int id, [FromBody] Alias Alias) { if (ModelState.IsValid) - aliases.UpdateAlias(alias); + { + Alias = aliases.UpdateAlias(Alias); + } + return Alias; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index 12e4c739..994afbae 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -53,18 +53,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Module Module) + public Module Post([FromBody] Module Module) { if (ModelState.IsValid) - modules.AddModule(Module); + { + Module = modules.AddModule(Module); + } + return Module; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Module Module) + public Module Put(int id, [FromBody] Module Module) { if (ModelState.IsValid) - modules.UpdateModule(Module); + { + Module = modules.UpdateModule(Module); + } + return Module; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index a2addeb4..59ac9bdd 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -38,18 +38,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Page Page) + public Page Post([FromBody] Page Page) { if (ModelState.IsValid) - pages.AddPage(Page); + { + Page = pages.AddPage(Page); + } + return Page; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Page Page) + public Page Put(int id, [FromBody] Page Page) { if (ModelState.IsValid) - pages.UpdatePage(Page); + { + Page = pages.UpdatePage(Page); + } + return Page; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/PageModuleController.cs b/Oqtane.Server/Controllers/PageModuleController.cs index 25d225da..500825d0 100644 --- a/Oqtane.Server/Controllers/PageModuleController.cs +++ b/Oqtane.Server/Controllers/PageModuleController.cs @@ -31,18 +31,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] PageModule PageModule) + public PageModule Post([FromBody] PageModule PageModule) { if (ModelState.IsValid) - pagemodules.AddPageModule(PageModule); + { + PageModule = pagemodules.AddPageModule(PageModule); + } + return PageModule; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] PageModule PageModule) + public PageModule Put(int id, [FromBody] PageModule PageModule) { if (ModelState.IsValid) - pagemodules.UpdatePageModule(PageModule); + { + PageModule = pagemodules.UpdatePageModule(PageModule); + } + return PageModule; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs index c6493504..3d2528f9 100644 --- a/Oqtane.Server/Controllers/SiteController.cs +++ b/Oqtane.Server/Controllers/SiteController.cs @@ -31,18 +31,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Site site) + public Site Post([FromBody] Site Site) { if (ModelState.IsValid) - sites.AddSite(site); + { + Site = sites.AddSite(Site); + } + return Site; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Site site) + public Site Put(int id, [FromBody] Site Site) { if (ModelState.IsValid) - sites.UpdateSite(site); + { + Site = sites.UpdateSite(Site); + } + return Site; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/TenantController.cs b/Oqtane.Server/Controllers/TenantController.cs index af19f7af..a5c38ebe 100644 --- a/Oqtane.Server/Controllers/TenantController.cs +++ b/Oqtane.Server/Controllers/TenantController.cs @@ -31,18 +31,24 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public void Post([FromBody] Tenant site) + public Tenant Post([FromBody] Tenant Tenant) { if (ModelState.IsValid) - tenants.AddTenant(site); + { + Tenant = tenants.AddTenant(Tenant); + } + return Tenant; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] Tenant site) + public Tenant Put(int id, [FromBody] Tenant Tenant) { if (ModelState.IsValid) - tenants.UpdateTenant(site); + { + Tenant = tenants.UpdateTenant(Tenant); + } + return Tenant; } // DELETE api//5 diff --git a/Oqtane.Server/Controllers/UserController.cs b/Oqtane.Server/Controllers/UserController.cs index 86f1fa8a..00f4fb9b 100644 --- a/Oqtane.Server/Controllers/UserController.cs +++ b/Oqtane.Server/Controllers/UserController.cs @@ -4,8 +4,6 @@ using Oqtane.Repository; using Oqtane.Models; using Microsoft.AspNetCore.Identity; using System.Threading.Tasks; -using Microsoft.Extensions.Primitives; -using System.Security.Claims; namespace Oqtane.Controllers { @@ -39,33 +37,35 @@ namespace Oqtane.Controllers // POST api/ [HttpPost] - public async Task Post([FromBody] User user) + public async Task Post([FromBody] User User) { if (ModelState.IsValid) { - IdentityUser identityuser = await identityUserManager.FindByNameAsync(user.Username); + IdentityUser identityuser = await identityUserManager.FindByNameAsync(User.Username); if (identityuser == null) { identityuser = new IdentityUser(); - identityuser.UserName = user.Username; - identityuser.Email = user.Username; - var result = await identityUserManager.CreateAsync(identityuser, user.Password); + identityuser.UserName = User.Username; + identityuser.Email = User.Username; + var result = await identityUserManager.CreateAsync(identityuser, User.Password); if (result.Succeeded) { - users.AddUser(user); + User = users.AddUser(User); } } } + return User; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] User user) + public User Put(int id, [FromBody] User User) { if (ModelState.IsValid) { - users.UpdateUser(user); + User = users.UpdateUser(User); } + return User; } // DELETE api//5 diff --git a/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs b/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs index 36eda275..f3dc2d9b 100644 --- a/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs +++ b/Oqtane.Server/Modules/HtmlText/Controllers/HtmlTextController.cs @@ -31,18 +31,24 @@ namespace Oqtane.Server.Modules.HtmlText.Controllers // POST api/ [HttpPost] - public void Post([FromBody] HtmlTextInfo HtmlText) + public HtmlTextInfo Post([FromBody] HtmlTextInfo HtmlText) { if (ModelState.IsValid) - htmltext.AddHtmlText(HtmlText); + { + HtmlText = htmltext.AddHtmlText(HtmlText); + } + return HtmlText; } // PUT api//5 [HttpPut("{id}")] - public void Put(int id, [FromBody] HtmlTextInfo HtmlText) + public HtmlTextInfo Put(int id, [FromBody] HtmlTextInfo HtmlText) { if (ModelState.IsValid) - htmltext.UpdateHtmlText(HtmlText); + { + HtmlText = htmltext.UpdateHtmlText(HtmlText); + } + return HtmlText; } // DELETE api//5 diff --git a/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs b/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs index ff5a8534..2347e601 100644 --- a/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs +++ b/Oqtane.Server/Modules/HtmlText/Repository/HtmlTextRepository.cs @@ -27,12 +27,13 @@ namespace Oqtane.Server.Modules.HtmlText.Repository } } - public void AddHtmlText(HtmlTextInfo HtmlText) + public HtmlTextInfo AddHtmlText(HtmlTextInfo HtmlText) { try { db.HtmlText.Add(HtmlText); db.SaveChanges(); + return HtmlText; } catch { @@ -40,12 +41,13 @@ namespace Oqtane.Server.Modules.HtmlText.Repository } } - public void UpdateHtmlText(HtmlTextInfo HtmlText) + public HtmlTextInfo UpdateHtmlText(HtmlTextInfo HtmlText) { try { db.Entry(HtmlText).State = EntityState.Modified; db.SaveChanges(); + return HtmlText; } catch { diff --git a/Oqtane.Server/Modules/HtmlText/Repository/IHtmlTextRepository.cs b/Oqtane.Server/Modules/HtmlText/Repository/IHtmlTextRepository.cs index 6afc00c2..463d5e50 100644 --- a/Oqtane.Server/Modules/HtmlText/Repository/IHtmlTextRepository.cs +++ b/Oqtane.Server/Modules/HtmlText/Repository/IHtmlTextRepository.cs @@ -6,8 +6,8 @@ namespace Oqtane.Server.Modules.HtmlText.Repository public interface IHtmlTextRepository { IEnumerable GetHtmlText(); - void AddHtmlText(HtmlTextInfo HtmlText); - void UpdateHtmlText(HtmlTextInfo HtmlText); + HtmlTextInfo AddHtmlText(HtmlTextInfo HtmlText); + HtmlTextInfo UpdateHtmlText(HtmlTextInfo HtmlText); HtmlTextInfo GetHtmlText(int HtmlTextIdId); void DeleteHtmlText(int HtmlTextId); } diff --git a/Oqtane.Server/Repository/AliasRepository.cs b/Oqtane.Server/Repository/AliasRepository.cs index 8d512a59..8595557c 100644 --- a/Oqtane.Server/Repository/AliasRepository.cs +++ b/Oqtane.Server/Repository/AliasRepository.cs @@ -35,12 +35,13 @@ namespace Oqtane.Repository } } - public void AddAlias(Alias alias) + public Alias AddAlias(Alias Alias) { try { - db.Alias.Add(alias); + db.Alias.Add(Alias); db.SaveChanges(); + return Alias; } catch { @@ -48,12 +49,13 @@ namespace Oqtane.Repository } } - public void UpdateAlias(Alias alias) + public Alias UpdateAlias(Alias Alias) { try { - db.Entry(alias).State = EntityState.Modified; + db.Entry(Alias).State = EntityState.Modified; db.SaveChanges(); + return Alias; } catch { @@ -61,11 +63,11 @@ namespace Oqtane.Repository } } - public Alias GetAlias(int aliasId) + public Alias GetAlias(int AliasId) { try { - Alias alias = db.Alias.Find(aliasId); + Alias alias = db.Alias.Find(AliasId); return alias; } catch @@ -74,11 +76,11 @@ namespace Oqtane.Repository } } - public void DeleteAlias(int aliasId) + public void DeleteAlias(int AliasId) { try { - Alias alias = db.Alias.Find(aliasId); + Alias alias = db.Alias.Find(AliasId); db.Alias.Remove(alias); db.SaveChanges(); } diff --git a/Oqtane.Server/Repository/IAliasRepository.cs b/Oqtane.Server/Repository/IAliasRepository.cs index 4bc56f7b..3ab61f13 100644 --- a/Oqtane.Server/Repository/IAliasRepository.cs +++ b/Oqtane.Server/Repository/IAliasRepository.cs @@ -6,9 +6,9 @@ namespace Oqtane.Repository public interface IAliasRepository { IEnumerable GetAliases(); - void AddAlias(Alias alias); - void UpdateAlias(Alias alias); - Alias GetAlias(int aliasId); - void DeleteAlias(int aliasId); + Alias AddAlias(Alias Alias); + Alias UpdateAlias(Alias Alias); + Alias GetAlias(int AliasId); + void DeleteAlias(int AliasId); } } diff --git a/Oqtane.Server/Repository/IModuleRepository.cs b/Oqtane.Server/Repository/IModuleRepository.cs index 5fd6e321..9e9cde33 100644 --- a/Oqtane.Server/Repository/IModuleRepository.cs +++ b/Oqtane.Server/Repository/IModuleRepository.cs @@ -7,8 +7,8 @@ namespace Oqtane.Repository { IEnumerable GetModules(); IEnumerable GetModules(int SiteId, string ModuleDefinitionName); - void AddModule(Module Module); - void UpdateModule(Module Module); + Module AddModule(Module Module); + Module UpdateModule(Module Module); Module GetModule(int ModuleId); void DeleteModule(int ModuleId); } diff --git a/Oqtane.Server/Repository/IPageModuleRepository.cs b/Oqtane.Server/Repository/IPageModuleRepository.cs index 4b00f98f..a1fccef8 100644 --- a/Oqtane.Server/Repository/IPageModuleRepository.cs +++ b/Oqtane.Server/Repository/IPageModuleRepository.cs @@ -7,8 +7,8 @@ namespace Oqtane.Repository { IEnumerable GetPageModules(); IEnumerable GetPageModules(int PageId); - void AddPageModule(PageModule PageModule); - void UpdatePageModule(PageModule PageModule); + PageModule AddPageModule(PageModule PageModule); + PageModule UpdatePageModule(PageModule PageModule); PageModule GetPageModule(int PageModuleId); void DeletePageModule(int PageModuleId); } diff --git a/Oqtane.Server/Repository/IPageRepository.cs b/Oqtane.Server/Repository/IPageRepository.cs index 128810c8..cb479e98 100644 --- a/Oqtane.Server/Repository/IPageRepository.cs +++ b/Oqtane.Server/Repository/IPageRepository.cs @@ -7,8 +7,8 @@ namespace Oqtane.Repository { IEnumerable GetPages(); IEnumerable GetPages(int SiteId); - void AddPage(Page Page); - void UpdatePage(Page Page); + Page AddPage(Page Page); + Page UpdatePage(Page Page); Page GetPage(int PageId); void DeletePage(int PageId); } diff --git a/Oqtane.Server/Repository/ISiteRepository.cs b/Oqtane.Server/Repository/ISiteRepository.cs index a032c580..65cf9aff 100644 --- a/Oqtane.Server/Repository/ISiteRepository.cs +++ b/Oqtane.Server/Repository/ISiteRepository.cs @@ -6,9 +6,9 @@ namespace Oqtane.Repository public interface ISiteRepository { IEnumerable GetSites(); - void AddSite(Site site); - void UpdateSite(Site site); - Site GetSite(int siteId); - void DeleteSite(int siteId); + Site AddSite(Site Site); + Site UpdateSite(Site Site); + Site GetSite(int SiteId); + void DeleteSite(int SiteId); } } diff --git a/Oqtane.Server/Repository/ISiteUserRepository.cs b/Oqtane.Server/Repository/ISiteUserRepository.cs new file mode 100644 index 00000000..747f95e6 --- /dev/null +++ b/Oqtane.Server/Repository/ISiteUserRepository.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using Oqtane.Models; + +namespace Oqtane.Repository +{ + public interface ISiteUserRepository + { + IEnumerable GetSiteUsers(); + IEnumerable GetSiteUsers(int SiteId, int UserId); + SiteUser AddSiteUser(SiteUser SiteUser); + SiteUser UpdateSiteUser(SiteUser SiteUser); + SiteUser GetSiteUser(int SiteUserId); + void DeleteSiteUser(int SiteUserId); + } +} diff --git a/Oqtane.Server/Repository/ITenantRepository.cs b/Oqtane.Server/Repository/ITenantRepository.cs index df9181f6..17a8b1d0 100644 --- a/Oqtane.Server/Repository/ITenantRepository.cs +++ b/Oqtane.Server/Repository/ITenantRepository.cs @@ -6,9 +6,9 @@ namespace Oqtane.Repository public interface ITenantRepository { IEnumerable GetTenants(); - void AddTenant(Tenant tenant); - void UpdateTenant(Tenant tenant); - Tenant GetTenant(int tenantId); - void DeleteTenant(int tenantId); + Tenant AddTenant(Tenant Tenant); + Tenant UpdateTenant(Tenant Tenant); + Tenant GetTenant(int TenantId); + void DeleteTenant(int TenantId); } } diff --git a/Oqtane.Server/Repository/IUserRepository.cs b/Oqtane.Server/Repository/IUserRepository.cs index 05ede0ad..63757b49 100644 --- a/Oqtane.Server/Repository/IUserRepository.cs +++ b/Oqtane.Server/Repository/IUserRepository.cs @@ -6,8 +6,8 @@ namespace Oqtane.Repository public interface IUserRepository { IEnumerable GetUsers(); - void AddUser(User User); - void UpdateUser(User User); + User AddUser(User User); + User UpdateUser(User User); User GetUser(int UserId); User GetUser(string Username); void DeleteUser(int UserId); diff --git a/Oqtane.Server/Repository/ModuleRepository.cs b/Oqtane.Server/Repository/ModuleRepository.cs index aef77fbb..76c07605 100644 --- a/Oqtane.Server/Repository/ModuleRepository.cs +++ b/Oqtane.Server/Repository/ModuleRepository.cs @@ -41,12 +41,13 @@ namespace Oqtane.Repository } } - public void AddModule(Module Module) + public Module AddModule(Module Module) { try { db.Module.Add(Module); db.SaveChanges(); + return Module; } catch { @@ -54,12 +55,13 @@ namespace Oqtane.Repository } } - public void UpdateModule(Module Module) + public Module UpdateModule(Module Module) { try { db.Entry(Module).State = EntityState.Modified; db.SaveChanges(); + return Module; } catch { diff --git a/Oqtane.Server/Repository/PageModuleRepository.cs b/Oqtane.Server/Repository/PageModuleRepository.cs index 130d56e9..00c0fd0b 100644 --- a/Oqtane.Server/Repository/PageModuleRepository.cs +++ b/Oqtane.Server/Repository/PageModuleRepository.cs @@ -40,12 +40,13 @@ namespace Oqtane.Repository } } - public void AddPageModule(PageModule PageModule) + public PageModule AddPageModule(PageModule PageModule) { try { db.PageModule.Add(PageModule); db.SaveChanges(); + return PageModule; } catch { @@ -53,12 +54,13 @@ namespace Oqtane.Repository } } - public void UpdatePageModule(PageModule PageModule) + public PageModule UpdatePageModule(PageModule PageModule) { try { db.Entry(PageModule).State = EntityState.Modified; db.SaveChanges(); + return PageModule; } catch { diff --git a/Oqtane.Server/Repository/PageRepository.cs b/Oqtane.Server/Repository/PageRepository.cs index 45a09d7c..33612112 100644 --- a/Oqtane.Server/Repository/PageRepository.cs +++ b/Oqtane.Server/Repository/PageRepository.cs @@ -38,12 +38,13 @@ namespace Oqtane.Repository } } - public void AddPage(Page Page) + public Page AddPage(Page Page) { try { db.Page.Add(Page); db.SaveChanges(); + return Page; } catch { @@ -51,12 +52,13 @@ namespace Oqtane.Repository } } - public void UpdatePage(Page Page) + public Page UpdatePage(Page Page) { try { db.Entry(Page).State = EntityState.Modified; db.SaveChanges(); + return Page; } catch { diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index b382a214..bba65d22 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -26,12 +26,13 @@ namespace Oqtane.Repository } } - public void AddSite(Site site) + public Site AddSite(Site Site) { try { - db.Site.Add(site); + db.Site.Add(Site); db.SaveChanges(); + return Site; } catch { @@ -39,12 +40,13 @@ namespace Oqtane.Repository } } - public void UpdateSite(Site site) + public Site UpdateSite(Site Site) { try { - db.Entry(site).State = EntityState.Modified; + db.Entry(Site).State = EntityState.Modified; db.SaveChanges(); + return Site; } catch { diff --git a/Oqtane.Server/Repository/SiteUserRepository.cs b/Oqtane.Server/Repository/SiteUserRepository.cs new file mode 100644 index 00000000..81fa29f5 --- /dev/null +++ b/Oqtane.Server/Repository/SiteUserRepository.cs @@ -0,0 +1,100 @@ +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 GetSiteUsers() + { + try + { + return db.SiteUser.ToList(); + } + catch + { + throw; + } + } + public IEnumerable GetSiteUsers(int SiteId, int UserId) + { + try + { + List siteusers = db.SiteUser.Where(item => item.SiteId == SiteId).ToList(); + if (UserId != -1) + { + siteusers = siteusers.Where(item => item.UserId == UserId).ToList(); + } + return siteusers; + } + catch + { + throw; + } + } + + public SiteUser AddSiteUser(SiteUser SiteUser) + { + try + { + db.SiteUser.Add(SiteUser); + db.SaveChanges(); + return SiteUser; + } + catch + { + throw; + } + } + + public SiteUser UpdateSiteUser(SiteUser SiteUser) + { + try + { + db.Entry(SiteUser).State = EntityState.Modified; + db.SaveChanges(); + return SiteUser; + } + catch + { + throw; + } + } + + public SiteUser GetSiteUser(int SiteUserId) + { + try + { + SiteUser SiteUser = db.SiteUser.Find(SiteUserId); + return SiteUser; + } + catch + { + throw; + } + } + + public void DeleteSiteUser(int SiteUserId) + { + try + { + SiteUser SiteUser = db.SiteUser.Find(SiteUserId); + db.SiteUser.Remove(SiteUser); + db.SaveChanges(); + } + catch + { + throw; + } + } + } +} diff --git a/Oqtane.Server/Repository/TenantDBContext.cs b/Oqtane.Server/Repository/TenantDBContext.cs index 190fe9e0..a6f83e57 100644 --- a/Oqtane.Server/Repository/TenantDBContext.cs +++ b/Oqtane.Server/Repository/TenantDBContext.cs @@ -11,6 +11,7 @@ namespace Oqtane.Repository public virtual DbSet PageModule { get; set; } public virtual DbSet Module { get; set; } public virtual DbSet User { get; set; } + public virtual DbSet SiteUser { get; set; } public TenantDBContext(ITenantResolver TenantResolver, IHttpContextAccessor accessor) : base(TenantResolver, accessor) { diff --git a/Oqtane.Server/Repository/TenantRepository.cs b/Oqtane.Server/Repository/TenantRepository.cs index 42d2c00a..d21d8f2e 100644 --- a/Oqtane.Server/Repository/TenantRepository.cs +++ b/Oqtane.Server/Repository/TenantRepository.cs @@ -36,12 +36,13 @@ namespace Oqtane.Repository } } - public void AddTenant(Tenant tenant) + public Tenant AddTenant(Tenant Tenant) { try { - db.Tenant.Add(tenant); + db.Tenant.Add(Tenant); db.SaveChanges(); + return Tenant; } catch { @@ -49,12 +50,13 @@ namespace Oqtane.Repository } } - public void UpdateTenant(Tenant tenant) + public Tenant UpdateTenant(Tenant Tenant) { try { - db.Entry(tenant).State = EntityState.Modified; + db.Entry(Tenant).State = EntityState.Modified; db.SaveChanges(); + return Tenant; } catch { @@ -62,11 +64,11 @@ namespace Oqtane.Repository } } - public Tenant GetTenant(int tenantId) + public Tenant GetTenant(int TenantId) { try { - Tenant tenant = db.Tenant.Find(tenantId); + Tenant tenant = db.Tenant.Find(TenantId); return tenant; } catch @@ -75,11 +77,11 @@ namespace Oqtane.Repository } } - public void DeleteTenant(int tenantId) + public void DeleteTenant(int TenantId) { try { - Tenant tenant = db.Tenant.Find(tenantId); + Tenant tenant = db.Tenant.Find(TenantId); db.Tenant.Remove(tenant); db.SaveChanges(); } diff --git a/Oqtane.Server/Repository/UserRepository.cs b/Oqtane.Server/Repository/UserRepository.cs index b296110e..6b863e37 100644 --- a/Oqtane.Server/Repository/UserRepository.cs +++ b/Oqtane.Server/Repository/UserRepository.cs @@ -26,12 +26,13 @@ namespace Oqtane.Repository } } - public void AddUser(User user) + public User AddUser(User user) { try { db.User.Add(user); db.SaveChanges(); + return user; } catch { @@ -39,12 +40,13 @@ namespace Oqtane.Repository } } - public void UpdateUser(User user) + public User UpdateUser(User user) { try { db.Entry(user).State = EntityState.Modified; db.SaveChanges(); + return user; } catch { diff --git a/Oqtane.Server/Scripts/Tenant.sql b/Oqtane.Server/Scripts/Tenant.sql index 9b3a1a7d..d81f34f7 100644 --- a/Oqtane.Server/Scripts/Tenant.sql +++ b/Oqtane.Server/Scripts/Tenant.sql @@ -96,6 +96,21 @@ CREATE TABLE [dbo].[User]( ) GO +CREATE TABLE [dbo].[SiteUser]( + [SiteUserId] [int] IDENTITY(1,1) NOT NULL, + [SiteId] [int] NOT NULL, + [UserId] [int] NOT NULL, + [IsAuthorized] [bit] NOT NULL, + [CreatedBy] [nvarchar](256) NOT NULL, + [CreatedOn] [datetime] NOT NULL, + [ModifiedBy] [nvarchar](256) NOT NULL, + [ModifiedOn] [datetime] NOT NULL, + CONSTRAINT [PK_SiteUser] PRIMARY KEY CLUSTERED + ( + [SiteUserId] ASC + ) +) +GO /* Create foreign key relationships @@ -125,6 +140,15 @@ REFERENCES [dbo].[Page] ([PageId]) ON DELETE CASCADE GO +ALTER TABLE [dbo].[SiteUser] WITH CHECK ADD CONSTRAINT [FK_SiteUser_Site] FOREIGN KEY([SiteId]) +REFERENCES [dbo].[Site] ([SiteId]) +ON DELETE CASCADE +GO + +ALTER TABLE [dbo].[SiteUser] WITH CHECK ADD CONSTRAINT [FK_SiteUser_User] FOREIGN KEY([UserId]) +REFERENCES [dbo].[User] ([UserId]) +GO + /* Create seed data diff --git a/Oqtane.Shared/Models/SiteUser.cs b/Oqtane.Shared/Models/SiteUser.cs new file mode 100644 index 00000000..cfae5d2f --- /dev/null +++ b/Oqtane.Shared/Models/SiteUser.cs @@ -0,0 +1,17 @@ +using System; + +namespace Oqtane.Models +{ + public class SiteUser : IAuditable + { + public int SiteUserId { get; set; } + public int SiteId { get; set; } + public int UserId { get; set; } + public bool IsAuthorized { get; set; } + + public string CreatedBy { get; set; } + public DateTime CreatedOn { get; set; } + public string ModifiedBy { get; set; } + public DateTime ModifiedOn { get; set; } + } +} diff --git a/Oqtane.Shared/Models/User.cs b/Oqtane.Shared/Models/User.cs index 34b27776..96e7d786 100644 --- a/Oqtane.Shared/Models/User.cs +++ b/Oqtane.Shared/Models/User.cs @@ -10,6 +10,8 @@ namespace Oqtane.Models public string Roles { get; set; } public bool IsSuperUser { get; set; } + [NotMapped] + public int SiteId { get; set; } [NotMapped] public string Password { get; set; } [NotMapped]