修改BUG:菜单维护页面,授权角色按钮保存时,不能删除角色
This commit is contained in:
parent
2ae1a241de
commit
5c1780cc00
|
@ -25,37 +25,37 @@ namespace Bootstrap.Admin.Controllers.Api
|
|||
return value.RetrieveData();
|
||||
}
|
||||
/// <summary>
|
||||
/// 通过指定ID获得所有角色集合
|
||||
/// 通过指定用户ID/部门ID/菜单ID获得所有角色集合,已经授权的有checked标记
|
||||
/// </summary>
|
||||
/// <param name="id">用户ID/部门ID/菜单ID</param>
|
||||
/// <param name="type">类型</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("{id}")]
|
||||
public IEnumerable<Role> Post(string id, [FromQuery]string type)
|
||||
public IEnumerable<object> Post(string id, [FromQuery]string type)
|
||||
{
|
||||
var ret = new List<Role>();
|
||||
IEnumerable<Role> ret = new List<Role>();
|
||||
switch (type)
|
||||
{
|
||||
case "user":
|
||||
ret = RoleHelper.RetrieveRolesByUserId(id).ToList();
|
||||
ret = RoleHelper.RetrieveRolesByUserId(id);
|
||||
break;
|
||||
case "group":
|
||||
ret = RoleHelper.RetrieveRolesByGroupId(id).ToList();
|
||||
ret = RoleHelper.RetrieveRolesByGroupId(id);
|
||||
break;
|
||||
case "menu":
|
||||
ret = RoleHelper.RetrieveRolesByMenuId(id).ToList();
|
||||
ret = RoleHelper.RetrieveRolesByMenuId(id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
return ret.Select(m => new { m.Id, m.Checked, m.RoleName, m.Description });
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据GroupID获取
|
||||
/// 保存角色
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="roleIds"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="id">用户ID/部门ID/菜单ID</param>
|
||||
/// <param name="roleIds">选中的角色ID集合</param>
|
||||
/// <param name="type">type=menu时,菜单维护页面对角色授权弹框保存按钮调用</param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{id}")]
|
||||
public bool Put(string id, [FromBody]IEnumerable<string> roleIds, [FromQuery]string type)
|
||||
|
|
|
@ -122,14 +122,24 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
/// <returns></returns>
|
||||
public override bool SavaRolesByMenuId(string menuId, IEnumerable<string> roleIds)
|
||||
{
|
||||
roleIds.ToList().ForEach(rId =>
|
||||
var roles = MongoDbAccessManager.Roles.Find(md => md.Menus != null && md.Menus.Contains(menuId)).ToList();
|
||||
|
||||
// Remove roles
|
||||
roles.ForEach(p =>
|
||||
{
|
||||
var menus = p.Menus == null ? new List<string>() : p.Menus.ToList();
|
||||
menus.Remove(menuId);
|
||||
MongoDbAccessManager.Roles.UpdateOne(md => md.Id == p.Id, Builders<Role>.Update.Set(md => md.Menus, menus));
|
||||
});
|
||||
|
||||
roles = MongoDbAccessManager.Roles.Find(md => roleIds.Contains(md.Id)).ToList();
|
||||
roles.ForEach(role =>
|
||||
{
|
||||
var role = MongoDbAccessManager.Roles.Find(md => md.Id == rId).FirstOrDefault();
|
||||
var menus = role.Menus == null ? new List<string>() : role.Menus.ToList();
|
||||
if (!menus.Contains(menuId))
|
||||
{
|
||||
menus.Add(menuId);
|
||||
MongoDbAccessManager.Roles.UpdateOne(md => md.Id == rId, Builders<Role>.Update.Set(md => md.Menus, menus));
|
||||
MongoDbAccessManager.Roles.UpdateOne(md => md.Id == role.Id, Builders<Role>.Update.Set(md => md.Menus, menus));
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue