fix #5346 - deleting role should remove associated useroles

This commit is contained in:
sbwalker
2025-07-29 09:05:37 -04:00
parent b1770ebb76
commit 658059806b
3 changed files with 19 additions and 10 deletions

View File

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

View File

@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
using Oqtane.Modules.Admin.Users;
using Oqtane.Shared;
namespace Oqtane.Repository
@ -131,6 +132,13 @@ namespace Oqtane.Repository
public void DeleteUser(int userId)
{
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);
db.User.Remove(user);
db.SaveChanges();