improvements to module/theme installation and removal

This commit is contained in:
Shaun Walker
2019-10-09 12:06:53 -04:00
parent 879dae75aa
commit 2607d4dbb3
23 changed files with 169 additions and 37 deletions

View File

@ -7,6 +7,7 @@ namespace Oqtane.Repository
{
IEnumerable<ModuleDefinition> GetModuleDefinitions(int SideId);
void UpdateModuleDefinition(ModuleDefinition ModuleDefinition);
void DeleteModuleDefinition(int ModuleDefinitionId, int SiteId);
}
}

View File

@ -13,6 +13,7 @@ namespace Oqtane.Repository
void UpdatePermissions(int SiteId, string EntityName, int EntityId, string Permissions);
Permission GetPermission(int PermissionId);
void DeletePermission(int PermissionId);
void DeletePermissions(int SiteId, string EntityName, int EntityId);
string EncodePermissions(int EntityId, IEnumerable<Permission> Permissions);
IEnumerable<Permission> DecodePermissions(string Permissions, int SiteId, string EntityName, int EntityId);
}

View File

@ -186,5 +186,13 @@ namespace Oqtane.Repository
{
Permissions.UpdatePermissions(ModuleDefinition.SiteId, "ModuleDefinition", ModuleDefinition.ModuleDefinitionId, ModuleDefinition.Permissions);
}
public void DeleteModuleDefinition(int ModuleDefinitionId, int SiteId)
{
ModuleDefinition ModuleDefinition = db.ModuleDefinition.Find(ModuleDefinitionId);
Permissions.DeletePermissions(SiteId, "ModuleDefinition", ModuleDefinitionId);
db.ModuleDefinition.Remove(ModuleDefinition);
db.SaveChanges();
}
}
}

View File

@ -61,8 +61,9 @@ namespace Oqtane.Repository
// get current permissions and delete
IEnumerable<Permission> permissions = db.Permission
.Where(item => item.EntityName == EntityName)
.Where(item => item.EntityId == EntityId);
foreach(Permission permission in permissions)
.Where(item => item.EntityId == EntityId)
.Where(item => item.SiteId == SiteId);
foreach (Permission permission in permissions)
{
db.Permission.Remove(permission);
}
@ -87,6 +88,19 @@ namespace Oqtane.Repository
db.SaveChanges();
}
public void DeletePermissions(int SiteId, string EntityName, int EntityId)
{
IEnumerable<Permission> permissions = db.Permission
.Where(item => item.EntityName == EntityName)
.Where(item => item.EntityId == EntityId)
.Where(item => item.SiteId == SiteId);
foreach (Permission permission in permissions)
{
db.Permission.Remove(permission);
}
db.SaveChanges();
}
// permissions are stored in the format "{permissionname:!rolename1;![userid1];rolename2;rolename3;[userid2];[userid3]}" where "!" designates Deny permissions
public string EncodePermissions(int EntityId, IEnumerable<Permission> Permissions)
{