mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-02 11:44:41 +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<RoleRecord> _roleRepository;
|
||||||
private readonly IRepository<PermissionRecord> _permissionRepository;
|
private readonly IRepository<PermissionRecord> _permissionRepository;
|
||||||
|
private readonly IRepository<UserRolesPartRecord> _userRolesRepository;
|
||||||
private readonly IEnumerable<IPermissionProvider> _permissionProviders;
|
private readonly IEnumerable<IPermissionProvider> _permissionProviders;
|
||||||
private readonly ICacheManager _cacheManager;
|
private readonly ICacheManager _cacheManager;
|
||||||
private readonly ISignals _signals;
|
private readonly ISignals _signals;
|
||||||
|
|
||||||
public RoleService(IRepository<RoleRecord> roleRepository,
|
public RoleService(
|
||||||
IRepository<PermissionRecord> permissionRepository,
|
IRepository<RoleRecord> roleRepository,
|
||||||
IEnumerable<IPermissionProvider> permissionProviders,
|
IRepository<PermissionRecord> permissionRepository,
|
||||||
ICacheManager cacheManager,
|
IRepository<UserRolesPartRecord> userRolesRepository,
|
||||||
ISignals signals) {
|
IEnumerable<IPermissionProvider> permissionProviders,
|
||||||
|
ICacheManager cacheManager,
|
||||||
|
ISignals signals
|
||||||
|
) {
|
||||||
_roleRepository = roleRepository;
|
_roleRepository = roleRepository;
|
||||||
_permissionRepository = permissionRepository;
|
_permissionRepository = permissionRepository;
|
||||||
|
_userRolesRepository = userRolesRepository;
|
||||||
_permissionProviders = permissionProviders;
|
_permissionProviders = permissionProviders;
|
||||||
_cacheManager = cacheManager;
|
_cacheManager = cacheManager;
|
||||||
_signals = signals;
|
_signals = signals;
|
||||||
@@ -111,6 +116,12 @@ namespace Orchard.Roles.Services {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteRole(int id) {
|
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));
|
_roleRepository.Delete(GetRole(id));
|
||||||
TriggerSignal();
|
TriggerSignal();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user