/// <summary>
        /// 修改一个用户的角色(清除原有角色)
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public JsonResult UpdateUserRoles(int userId, List <int> roleIds)
        {
            var        Res    = new JsonResult();
            RespResult result = new RespResult();

            try
            {
                if (!SysRoleAccessor.Instance.DeleteByUserId(userId))
                {
                    result.Error = AppError.ERROR_FAILED;
                }
                else
                {
                    foreach (int roleId in roleIds)
                    {
                        SysRoleUser item = new SysRoleUser();
                        item.UserId = userId;
                        item.RoleId = roleId;
                        item.EntId  = CurrentUser.EntId;
                        SysRoleUserAccessor.Instance.Insert(item);
                    }
                }
                result.Error = AppError.ERROR_SUCCESS;
            }
            catch (Exception e)
            {
                result.Error     = AppError.ERROR_FAILED;
                result.ExMessage = e.ToString();
            }
            Res.Data = result;
            Res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return(Res);
        }
        /// <summary>
        /// 修改一个用户的角色(清除原有角色)
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public RespResult UpdateUserRole(int userId, List <int> roleIds)
        {
            RespResult result = new RespResult();

            try
            {
                if (!SysRoleAccessor.Instance.Delete(userId))
                {
                    result.Error = AppError.ERROR_FAILED;
                }
                else
                {
                    foreach (int roleId in roleIds)
                    {
                        SysRoleUser item = new SysRoleUser();
                        item.UserId = userId;
                        item.RoleId = roleId;
                        SysRoleUserAccessor.Instance.Insert(item);
                    }
                }
                result.Error = AppError.ERROR_SUCCESS;
            }
            catch (Exception e)
            {
                result.Error     = AppError.ERROR_FAILED;
                result.ExMessage = e.ToString();
            }
            return(result);
        }
예제 #3
0
        /// <summary>
        /// 添加数据
        /// <param name="es">数据实体对象数组</param>
        /// <returns></returns>
        /// </summary>
        public int Insert(SysRoleUser e)
        {
            MySqlConnection oc = ConnectManager.Create();
            MySqlCommand    _cmdInsertSysRoleUser = cmdInsertSysRoleUser.Clone() as MySqlCommand;
            int             returnValue           = 0;

            _cmdInsertSysRoleUser.Connection = oc;
            try
            {
                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }
                _cmdInsertSysRoleUser.Parameters["@RoleId"].Value = e.RoleId;
                _cmdInsertSysRoleUser.Parameters["@UserId"].Value = e.UserId;
                _cmdInsertSysRoleUser.Parameters["@EntId"].Value  = e.EntId;

                _cmdInsertSysRoleUser.ExecuteNonQuery();
                returnValue = Convert.ToInt32(_cmdInsertSysRoleUser.LastInsertedId);
                return(returnValue);
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdInsertSysRoleUser.Dispose();
                _cmdInsertSysRoleUser = null;
            }
        }
예제 #4
0
        /// <summary>
        /// 添加数据
        /// <param name="es">数据实体对象数组</param>
        /// <returns></returns>
        /// </summary>
        public bool Insert(SysRoleUser e)
        {
            MySqlConnection oc = ConnectManager.Create();
            MySqlCommand    _cmdInsertSysRoleUser = cmdInsertSysRoleUser.Clone() as MySqlCommand;
            bool            returnValue           = false;

            _cmdInsertSysRoleUser.Connection = oc;
            try
            {
                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }
                //_cmdInsertSysRoleUser.Parameters["@SysRoleUserId"].Value = e.SysRoleUserId;
                _cmdInsertSysRoleUser.Parameters["@RoleId"].Value = e.RoleId;
                _cmdInsertSysRoleUser.Parameters["@UserId"].Value = e.UserId;

                _cmdInsertSysRoleUser.ExecuteNonQuery();
                return(returnValue);
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdInsertSysRoleUser.Dispose();
                _cmdInsertSysRoleUser = null;
            }
        }
예제 #5
0
        /// <summary>
        /// 获取指定记录
        /// <param name="id">Id值</param>
        /// </summary>
        public SysRoleUser Get(int SysRoleUserId)
        {
            SysRoleUser     returnValue        = null;
            MySqlConnection oc                 = ConnectManager.Create();
            MySqlCommand    _cmdGetSysRoleUser = cmdGetSysRoleUser.Clone() as MySqlCommand;

            _cmdGetSysRoleUser.Connection = oc;
            try
            {
                _cmdGetSysRoleUser.Parameters["@SysRoleUserId"].Value = SysRoleUserId;

                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }

                MySqlDataReader reader = _cmdGetSysRoleUser.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    returnValue = new SysRoleUser().BuildSampleEntity(reader);
                }
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdGetSysRoleUser.Dispose();
                _cmdGetSysRoleUser = null;
                GC.Collect();
            }
            return(returnValue);
        }
예제 #6
0
        /// <summary>
        /// 修改指定的数据
        /// <param name="e">修改后的数据实体对象</param>
        /// <para>数据对应的主键必须在实例中设置</para>
        /// </summary>
        public void Update(SysRoleUser e)
        {
            MySqlConnection oc = ConnectManager.Create();
            MySqlCommand    _cmdUpdateSysRoleUser = cmdUpdateSysRoleUser.Clone() as MySqlCommand;

            _cmdUpdateSysRoleUser.Connection = oc;

            try
            {
                if (oc.State == ConnectionState.Closed)
                {
                    oc.Open();
                }

                _cmdUpdateSysRoleUser.Parameters["@SysRoleUserId"].Value = e.SysRoleUserId;
                _cmdUpdateSysRoleUser.Parameters["@RoleId"].Value        = e.RoleId;
                _cmdUpdateSysRoleUser.Parameters["@UserId"].Value        = e.UserId;

                _cmdUpdateSysRoleUser.ExecuteNonQuery();
            }
            finally
            {
                oc.Close();
                oc.Dispose();
                oc = null;
                _cmdUpdateSysRoleUser.Dispose();
                _cmdUpdateSysRoleUser = null;
                GC.Collect();
            }
        }
예제 #7
0
        /// <summary>
        /// 初始化种子数据,添加超级管理组和超级管理员,默认账号:admin 111111
        /// </summary>
        /// <returns></returns>
        public async Task InitSeedDataAsync()
        {
            var defaultRole = await _sysRoleRepository.GetModelAsync(p => p.IsSuper);

            if (defaultRole != null)
            {
                throw new Exception("默认管理员组已存在");
            }

            var defaultUser = await _sysUserRepository.GetCountAsync(p => p.UserId > 0);

            if (defaultUser != 0)
            {
                throw new Exception("已有用户");
            }

            using (var uow = _fsq.CreateUnitOfWork())
            {
                _sysRoleRepository.UnitOfWork = uow;
                _sysUserRepository.UnitOfWork = uow;
                var userRoleRepo = uow.GetRepository <SysRoleUser>();
                userRoleRepo.UnitOfWork = uow;

                var role = new SysRole()
                {
                    IsSuper         = true,
                    RoleName        = "超级管理员组",
                    CreatedUserId   = 0,
                    CreatedUserName = "******",
                    UpdatedUserId   = 0,
                    UpdatedUserName = "******",
                };

                await _sysRoleRepository.InsertAsync(role);

                var user = new SysUser()
                {
                    LoginName       = "admin",
                    Password        = "******".EncryptMD5Encode(),
                    Status          = true,
                    UserName        = "******",
                    CreatedUserId   = 0,
                    CreatedUserName = "******",
                    UpdatedUserId   = 0,
                    UpdatedUserName = "******",
                };

                await _sysUserRepository.InsertAsync(user);

                var roleUser = new SysRoleUser()
                {
                    RoleId = role.RoleId,
                    UserId = user.UserId,
                };

                await userRoleRepo.InsertAsync(roleUser);

                uow.Commit();
            }
        }
예제 #8
0
 /// <summary>
 /// 根据关键字段的值获取记录
 /// </summary>
 /// <param name="Id">关键字段的值</param>
 /// <returns>符合查询条件的记录</returns>
 public SysRoleUser GetSysRoleUserById(string Id)
 {
     using (ISysRoleUserBLL SysRoleUserBLL = BLLContainer.Resolve <ISysRoleUserBLL>())
     {
         SysRoleUser model = SysRoleUserBLL.GetFirstOrDefault(Id);
         return(model);
     }
 }
예제 #9
0
 /// <summary>
 /// 修改
 /// </summary>
 /// <param name="mSysRoleUser">模型</param>
 /// <returns>是否成功</returns>
 public bool UpdateSysRoleUser(SysRoleUser mSysRoleUser)
 {
     if (mSysRoleUser == null)
     {
         return(false);
     }
     using (ISysRoleUserBLL SysRoleUserBLL = BLLContainer.Resolve <ISysRoleUserBLL>())
     {
         return(SysRoleUserBLL.Update(mSysRoleUser));
     }
 }
예제 #10
0
 /// <summary>
 /// 按照关键字段删除
 /// </summary>
 /// <param name="Id">关键字段</param>
 /// <returns>是否成功</returns>
 public bool DelSysRoleUser(string Id)
 {
     using (ISysRoleUserBLL SysRoleUserBLL = BLLContainer.Resolve <ISysRoleUserBLL>())
     {
         try
         {
             SysRoleUser item = SysRoleUserBLL.GetFirstOrDefault(Id);
             return(SysRoleUserBLL.Delete(item));
         }
         catch { return(false); }
     }
 }
예제 #11
0
 /// <summary>
 /// 按照关键字段删除
 /// </summary>
 /// <param name="Ids">关键字段数组</param>
 /// <returns>是否成功</returns>
 public bool DelSysRoleUsers(string[] Ids)
 {
     using (ISysRoleUserBLL SysRoleUserBLL = BLLContainer.Resolve <ISysRoleUserBLL>())
     {
         try
         {
             List <SysRoleUser> entitys = new List <SysRoleUser>();
             foreach (string id in Ids)
             {
                 SysRoleUser item = SysRoleUserBLL.GetFirstOrDefault(id);
                 entitys.Add(item);
             }
             return(SysRoleUserBLL.Delete(entitys));
         }
         catch { return(false); }
     }
 }
        /// <summary>
        /// 为角色添加用户
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name="userIds"></param>
        /// <returns></returns>
        public RespResult AddUsersToRole(int roleId, List <int> userIds)
        {
            RespResult result = new RespResult();

            try
            {
                foreach (int userId in userIds)
                {
                    SysRoleUser item = new SysRoleUser();
                    item.UserId = userId;
                    item.RoleId = roleId;
                    SysRoleUserAccessor.Instance.Insert(item);
                }
                result.Error = AppError.ERROR_SUCCESS;
            }
            catch (Exception e)
            {
                result.Error     = AppError.ERROR_FAILED;
                result.ExMessage = e.ToString();
            }
            return(result);
        }
예제 #13
0
        /// <summary>
        /// 保存实体更改
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleIds"></param>
        /// <returns></returns>
        public bool SaveUserRoll(string userId, string[] roleIds)
        {
            var opera        = UserHelper.GetOperator();
            var userid       = opera.Id;
            var list         = fsql.Select <SysRoleUser>().Where(p => p.UserId == userid).ToList();// GetList(userId);
            var existRoleIds = list.Select(x => x.RoleId).ToList();

            roleIds = roleIds ?? new string[0];

            var toDeleteList = existRoleIds.Except(roleIds).ToList();
            var toCreateList = roleIds.Except(existRoleIds).ToList();

            if (toDeleteList.Count > 0)
            {
                var count = fsql.Select <SysRoleUser>().Where(p => p.UserId == userId && toDeleteList.Contains(p.RoleId)).ToDelete().ExecuteAffrows();

                //var sql = new StringBuilder("delete from sys_user_role where user_id='" + userId + "' and role_id in ('" + string.Join("','", toDeleteList) + "')");
                //fsql.Select<OneValue>().WithSql(sql.ToString()).First();
            }

            foreach (var item in toCreateList)
            {
                var entity = new SysRoleUser()
                {
                    RoleId   = item,
                    UserId   = userId,
                    CreateBy = userid
                };
                Ser_SysRoleUser.InsertOrUpdateExt(entity);
            }

            //清除用户对应的权限缓冲
            var userName = fsql.Select <SysUser>().Where(p => p.Id == userId).First().LoginName;

            UserHelper.DeleteUserAuthRedis(userName);

            return(true);
        }
예제 #14
0
        //初始化企业权限(后期改为异步)
        private void initEntRole(int entId)
        {
            try
            {
                if (roleXmlModel == null)
                {
                    string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "Config/Role.xml";
                    if (System.IO.File.Exists(filePath) == false)
                    {
                        throw new FileNotFoundException("默认权限模板配置文件没有找到", filePath);
                    }
                    string roleConfig = System.IO.File.ReadAllText(filePath);
                    roleXmlModel = new XmlDocument();
                    roleXmlModel.LoadXml(roleConfig);
                }
                int newadminId = 0;

                foreach (XmlNode rolenode in roleXmlModel.SelectNodes("//role"))
                {
                    string rolenodename = rolenode.Attributes["name"].Value;
                    //添加企业角色
                    SysRole erole = new SysRole();
                    erole.EntId    = entId;
                    erole.FatherId = 0;
                    erole.RoleName = rolenodename;
                    int eroleid = SysRoleAccessor.Instance.Insert(erole);
                    if (rolenodename == "管理员")
                    {
                        newadminId = eroleid;
                    }
                    foreach (XmlNode fathernode in rolenode.ChildNodes)
                    {
                        string fnname = fathernode.Attributes["name"].Value;
                        string fnid   = fathernode.Attributes["id"].Value;
                        //添加企业角色权限
                        SysRoleFunction frf = new SysRoleFunction();
                        frf.EntId      = entId;
                        frf.RoleId     = eroleid;
                        frf.FunctionId = Convert.ToInt32(fnid);
                        SysRoleFunctionAccessor.Instance.Insert(frf);
                        foreach (XmlNode sonnode in fathernode.ChildNodes)
                        {
                            string          sname = sonnode.Attributes["name"].Value;
                            string          sid   = sonnode.Attributes["id"].Value;
                            SysRoleFunction srf   = new SysRoleFunction();
                            srf.EntId      = entId;
                            srf.RoleId     = eroleid;
                            srf.FunctionId = Convert.ToInt32(sid);
                            SysRoleFunctionAccessor.Instance.Insert(srf);
                        }
                    }
                }
                SysRoleUser ru = new SysRoleUser();
                ru.EntId  = entId;
                ru.UserId = entId;
                ru.RoleId = newadminId;
                SysRoleUserAccessor.Instance.Insert(ru);
            }
            catch
            {
                throw new InvalidDataException("权限模板配置文件内容不正确");
            }
        }
//根据用户ID修改用户权限

        public JsonResult UpdateUserRole(int userId, int roleId)
        {
            var        Res    = new JsonResult();
            RespResult result = new RespResult();

            try
            {
                if (CacheManagerFactory.GetMemoryManager().Contains(token))
                {
                    if (!CheckUserFunction(26))
                    {
                        result.Error            = AppError.ERROR_PERMISSION_FORBID;
                        Res.Data                = result;
                        Res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                        return(Res);
                    }

                    //如果是管理员则不能修改角色
                    List <SysRole> list = new List <SysRole>();
                    list = SysRoleAccessor.Instance.SearchSysRolesByUserId(userId);
                    foreach (SysRole sr in list)
                    {
                        if (sr.RoleName == "管理员")
                        {
                            result.Error            = AppError.ERROR_PERMISSION_FORBID;
                            Res.Data                = result;
                            Res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                            return(Res);
                        }
                    }

                    if (roleId == -1)//移除全部权限
                    {
                        SysRoleUserAccessor.Instance.Delete(userId, CurrentUser.EntId);
                        AddUserTimeMachine(userId, 3, 0);
                    }
                    else
                    {
                        if (SysRoleUserAccessor.Instance.CheckExist(userId, CurrentUser.EntId))
                        {
                            SysRoleUserAccessor.Instance.UpdateUserRole(userId, roleId);
                        }
                        else
                        {
                            SysRoleUser item = new SysRoleUser();
                            item.UserId = userId;
                            item.RoleId = roleId;
                            item.EntId  = CurrentUser.EntId;
                            SysRoleUserAccessor.Instance.Insert(item);
                        }
                        AddUserTimeMachine(userId, 4, roleId);
                    }
                    result.Error = AppError.ERROR_SUCCESS;
                }
                else
                {
                    result.Error = AppError.ERROR_PERSON_NOT_LOGIN;
                }
            }
            catch (Exception e)
            {
                result.Error     = AppError.ERROR_FAILED;
                result.ExMessage = e.ToString();
            }
            Res.Data = result;
            Res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            return(Res);
        }