Merge pull request #5425 from sbwalker/dev

fix #5346 - deleting role should remove associated useroles
This commit is contained in:
Shaun Walker
2025-07-29 09:05:54 -04:00
committed by GitHub
3 changed files with 19 additions and 10 deletions

View File

@ -159,7 +159,7 @@
} }
@if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host) && _isdeleted == "True") @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host) && _isdeleted == "True")
{ {
<ActionDialog Header="Delete User" Message="Are You Sure You Wish To Permanently Delete This User?" Action="Delete" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await DeleteUser())" ResourceKey="DeleteUser" /> <ActionDialog Header="Delete User" Message="Are You Sure You Wish To Permanently Delete This User?" Action="Delete" Security="SecurityAccessLevel.Host" Class="btn btn-danger ms-1" OnClick="@(async () => await DeleteUser())" ResourceKey="DeleteUser" />
} }
<br /><br /> <br /><br />
<AuditInfo CreatedBy="@_createdby" CreatedOn="@_createdon" ModifiedBy="@_modifiedby" ModifiedOn="@_modifiedon" DeletedBy="@_deletedby" DeletedOn="@_deletedon"></AuditInfo> <AuditInfo CreatedBy="@_createdby" CreatedOn="@_createdon" ModifiedBy="@_modifiedby" ModifiedOn="@_modifiedon" DeletedBy="@_deletedby" DeletedOn="@_deletedon"></AuditInfo>

View File

@ -74,18 +74,19 @@ namespace Oqtane.Repository
{ {
using var db = _dbContextFactory.CreateDbContext(); using var db = _dbContextFactory.CreateDbContext();
Role role = db.Role.Find(roleId); // remove userroles for role
foreach (var userrole in db.UserRole.Where(item => item.RoleId == roleId))
// remove permissions for this role
var permissions = db.Permission.Where(item => item.SiteId == role.SiteId).ToList();
foreach (var permission in permissions)
{ {
if (permission.RoleId == roleId) db.UserRole.Remove(userrole);
{
db.Permission.Remove(permission);
}
} }
// remove permissions for role
foreach (var permission in db.Permission.Where(item => item.RoleId == roleId))
{
db.Permission.Remove(permission);
}
Role role = db.Role.Find(roleId);
db.Role.Remove(role); db.Role.Remove(role);
db.SaveChanges(); db.SaveChanges();
} }

View File

@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Oqtane.Models; using Oqtane.Models;
using Oqtane.Modules.Admin.Users;
using Oqtane.Shared; using Oqtane.Shared;
namespace Oqtane.Repository namespace Oqtane.Repository
@ -131,6 +132,13 @@ namespace Oqtane.Repository
public void DeleteUser(int userId) public void DeleteUser(int userId)
{ {
using var db = _dbContextFactory.CreateDbContext(); using var db = _dbContextFactory.CreateDbContext();
// remove permissions for user
foreach (var permission in db.Permission.Where(item => item.UserId == userId))
{
db.Permission.Remove(permission);
}
var user = db.User.Find(userId); var user = db.User.Find(userId);
db.User.Remove(user); db.User.Remove(user);
db.SaveChanges(); db.SaveChanges();