mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
#18636: Fixing exception when deleting a role begin used
Work Item: 18636 --HG-- branch : 1.x
This commit is contained in:
@@ -16,17 +16,22 @@ namespace Orchard.Roles.Services {
|
||||
|
||||
private readonly IRepository<RoleRecord> _roleRepository;
|
||||
private readonly IRepository<PermissionRecord> _permissionRepository;
|
||||
private readonly IRepository<UserRolesPartRecord> _userRolesRepository;
|
||||
private readonly IEnumerable<IPermissionProvider> _permissionProviders;
|
||||
private readonly ICacheManager _cacheManager;
|
||||
private readonly ISignals _signals;
|
||||
|
||||
public RoleService(IRepository<RoleRecord> roleRepository,
|
||||
IRepository<PermissionRecord> permissionRepository,
|
||||
IEnumerable<IPermissionProvider> permissionProviders,
|
||||
ICacheManager cacheManager,
|
||||
ISignals signals) {
|
||||
public RoleService(
|
||||
IRepository<RoleRecord> roleRepository,
|
||||
IRepository<PermissionRecord> permissionRepository,
|
||||
IRepository<UserRolesPartRecord> userRolesRepository,
|
||||
IEnumerable<IPermissionProvider> permissionProviders,
|
||||
ICacheManager cacheManager,
|
||||
ISignals signals
|
||||
) {
|
||||
_roleRepository = roleRepository;
|
||||
_permissionRepository = permissionRepository;
|
||||
_userRolesRepository = userRolesRepository;
|
||||
_permissionProviders = permissionProviders;
|
||||
_cacheManager = cacheManager;
|
||||
_signals = signals;
|
||||
@@ -111,6 +116,12 @@ namespace Orchard.Roles.Services {
|
||||
}
|
||||
|
||||
public void DeleteRole(int id) {
|
||||
|
||||
var currentUserRoleRecords = _userRolesRepository.Fetch(x => x.Role.Id == id);
|
||||
foreach(var userRoleRecord in currentUserRoleRecords) {
|
||||
_userRolesRepository.Delete(userRoleRecord);
|
||||
}
|
||||
|
||||
_roleRepository.Delete(GetRole(id));
|
||||
TriggerSignal();
|
||||
}
|
||||
|
Reference in New Issue
Block a user