Esempio n. 1
0
        /// <summary>
        /// 删除角色和角色对应的中间表数据
        /// Esmart_Sys_Roles
        /// Esmart_Sys_RolesInDeparent
        /// Esmart_Sys_Role_App
        /// Esmart_Sys_Role_Navigations
        /// Esmart_Sys_Role_Navigation_Function
        /// Esmart_Sys_User_Roles
        /// </summary>
        /// <param name="request">角色Id</param>
        /// <returns></returns>
        public bool Del(RoleModel request)
        {
            RoleDbAction.Delete(request.Id);
            RoleNavigationsDbAction.Del(request.Id);
            RoleNavigationFunctionDbAction.Del(request.Id);
            UserRolesDbAction.Delete(request.Id);
            DepartmentRolesDbAction.DeleteByRoleId(request.Id);
            if (LogHelper <RoleModel> .LogAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction") != null)
            {
                LogHelper <RoleModel> .LogAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction")(new UserLiteDto {
                    UserID = request.CreatorId == null?1:request.CreatorId.Value
                }, request);

                LogHelper <RoleModel> .RemoveAction("Esmart.Permission.Application.Data.DepartmentRolesDbAction");
            }
            var remark = string.Format("用户:{0} 删除角色:{1}", request.CreatorId ?? 0, request.Id);

            LogManagerDb.Log(request.CreatorId ?? 0, DateTime.Now, remark, "RoleManager.DelByDepartmentId");

            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// 获取用户或部门的可分配角色列表
        /// </summary>
        public List <RoleResponse> GetAssignRoles(int managerUserId, int deparentmentId, int targetUserId)
        {
            //-------------------------------------
            // 根据管理人获取可分配角色列表
            //-------------------------------------
            var assignableRoles = CommonAction.IsSysAdmin(managerUserId)
                ? RoleDbAction.GetAllRols()
                : UserRolesDbAction.GetUserRolses(managerUserId).Where(n => !BuiltinRoles.Admins.Contains(n.RoleName)).ToList();

            //-------------------------------------
            // 检索目标用户的已分配角色列表
            //-------------------------------------
            var assignedRoles = targetUserId > 0 ? UserRolesDbAction.GetUserRolses(targetUserId) : DepartmentRolesDbAction.GetAssignedRolesOfDepartment(deparentmentId);

            //-------------------------------------
            // 已分配角色列表和可分配角色列表交叉运算
            //-------------------------------------
            var response = assignableRoles.ConvertAll(a =>
            {
                var resp = new RoleResponse()
                {
                    RoleId   = a.RoleId,
                    RoleName = a.RoleName,
                    Remark   = a.Remark
                };

                if (a.StartTime != null)
                {
                    resp.StartTime = a.StartTime.Value.ToString("yyyy-MM-dd");
                }
                if (a.EndTime != null)
                {
                    resp.EndTime = a.EndTime.Value.ToString("yyyy-MM-dd");
                }

                var index = assignedRoles.FindIndex(n => n.RoleId == resp.RoleId);
                if (index >= 0)
                {
                    resp.IsChoice = true;
                    assignedRoles.RemoveAt(index);
                }
                return(resp);
            });

            if (assignedRoles.Count > 0)
            {
                response.InsertRange(0, assignedRoles.ConvertAll(a =>
                {
                    var resp = new RoleResponse()
                    {
                        RoleId   = a.RoleId,
                        RoleName = a.RoleName,
                        Remark   = a.Remark,
                        IsChoice = true
                    };

                    if (a.StartTime != null)
                    {
                        resp.StartTime = a.StartTime.Value.ToString("yyyy-MM-dd");
                    }
                    if (a.EndTime != null)
                    {
                        resp.EndTime = a.EndTime.Value.ToString("yyyy-MM-dd");
                    }
                    return(resp);
                }));
            }
            return(response.OrderBy(n => n.RoleName).ToList());
        }