예제 #1
0
        /// <summary>
        /// 设置用户的权限
        /// </summary>
        /// <param name="user"></param>
        /// <param name="sysId"></param>
        private void SetUserRights(UserContext user, int sysId)
        {
            UserTypeOptions userType     = user.LoginUser.AccountType;
            bool            isSuperAdmin = userType == UserTypeOptions.SuperAdmin;
            bool            isWhiteUser  = user.LoginUser.IsWhiteUser;

            if (user.AvailableRights == null)
            {
                List <Right> availableRights = DABasicInfoHelper.GetRights(sysId, -1, CacheTimeOption.Short);
                List <int>   rights          = DARightsHelper.GetUserRights(sysId, user.LoginUser.ID, user.LoginUser.AccountType).Select(a => a.RightID).ToList();
                user.AvailableRights = availableRights.Where(a => (isSuperAdmin || internalRequest || !a.OnlyInternal || isWhiteUser) && rights.Contains(a.ID)).ToList();
            }
            //只有report才有这些权限
            if (sysId == DACommonHelper.REPORT_SYS_ID)
            {
                if (user.AvailableSofts == null)
                {
                    //从Report平台获得的产品权限
                    List <Soft> availableSofts = GetAvailableSofts();
                    List <int>  rights         = DARightsHelper.GetUserSoftRights(user.LoginUser.ID).Select(a => a.RightID).ToList();
                    user.AvailableSofts = availableSofts.Where(a => a.Status == StatusOptions.Valid && (isSuperAdmin || internalRequest || !a.OnlyInternal || isWhiteUser) && rights.Contains(a.ID)).ToList();
                }
                if (user.AvailableProjectSources == null)
                {
                    List <ProjectSource> availableProjectSources = GetAvailableProjectSources();
                    List <int>           rights = DARightsHelper.GetUserProjectSourceRights(user.LoginUser.ID).Select(a => a.RightID).ToList();
                    user.AvailableProjectSources = availableProjectSources.Where(a => (isSuperAdmin || internalRequest || !a.OnlyInternal || isWhiteUser) && rights.Contains(a.ProjectSourceID)).ToList();
                }
                if (internalRequest && user.AvailableResIds == null)
                {
                    user.AvailableResIds = DARightsHelper.GetUserResRights(user.LoginUser.ID).Select(a => a.RightID).ToList();
                }
            }
            else
            {
                if (user.AvailableSofts == null)
                {
                    user.AvailableSofts = new List <Soft>();
                }
                if (user.AvailableProjectSources == null)
                {
                    user.AvailableProjectSources = new List <ProjectSource>();
                }
                if (internalRequest && user.AvailableResIds == null)
                {
                    user.AvailableResIds = new List <int>();
                }
            }
            if (user.AdminSystems == null)
            {
                List <SystemInfo> systems = DABasicInfoHelper.GetSystems(CacheTimeOption.Short);
                List <int>        sysIds  = DARightsHelper.GetAdminSystemIds(user.LoginUser.ID);
                user.AdminSystems = systems.Where(a => sysIds.Contains(a.ID)).ToList();
            }
        }
        /// <summary>
        /// 根据账号或姓名模糊查找,并分页返回用户信息列表
        /// </summary>
        /// <param name="sysId"></param>
        /// <param name="status"></param>
        /// <param name="accountType"></param>
        /// <param name="keyword"></param>
        /// <param name="onlyWhiteUser"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="recordCount"></param>
        /// <returns></returns>
        public List <User> GetUsers(int sysId, StatusOptions status, UserTypeOptions accountType, string keyword, bool onlyWhiteUser, int pageIndex, int pageSize, ref int recordCount)
        {
            //权限判断
            loginService.HaveAdminRight(sysId, true);

            //if (loginService.LoginUser.AccountType == UserTypeOptions.ProductAdmin)
            //{
            //    return DABasicInfoHelper.GetUsers(sysId, status, accountType, keyword, onlyWhiteUser, pageIndex, pageSize, ref recordCount);
            //}
            return(DABasicInfoHelper.GetUsers(sysId, status, accountType, keyword, onlyWhiteUser, pageIndex, pageSize, ref recordCount));
        }
예제 #3
0
        /// <summary>
        /// 获取用户权限(仅用于权限分配)
        /// </summary>
        /// <param name="sysId"></param>
        /// <param name="userId"></param>
        /// <param name="accountType"></param>
        /// <returns></returns>
        public static List <RightItem> GetUserRights(int sysId, int userId, UserTypeOptions accountType)
        {
            string cmdText;

            //渠道相关的用户只能限于角色(系统定义的)关联的权限
            if (accountType == UserTypeOptions.Channel || accountType == UserTypeOptions.ChannelPartner)
            {
                cmdText = string.Format(@"select distinct C.RightID,1 FromRole 
                                        from R_UserRoles A 
                                            inner join R_Roles B on A.RoleID=B.ID and B.RoleType={0} and A.`UserID`=?UserID and B.SysID=?SysID 
                                            inner join R_RoleRights C on B.ID=C.RoleID",
                                        accountType == UserTypeOptions.Channel
                                            ? (int)RoleTypeOptions.Channel
                                            : (int)RoleTypeOptions.ChannelPartner);
            }
            else
            {
                cmdText = @"select RightID,if(sum(FromRole)>0,1,0) FromRole  
                            from (
                                select RightID,0 FromRole from R_UserRights A inner join R_Rights B on A.RightID=B.ID and B.SysID=?SysID and A.`UserID`=?UserID
                                union all
                                select RightID,1 FromRole from R_UserRoles A inner join R_Roles B on A.RoleID=B.ID and B.SysID=?SysID and A.`UserID`=?UserID inner join R_RoleRights C on A.RoleID=C.RoleID) A
                            group by RightID";
            }
            MySqlParameter[] parms = new MySqlParameter[]
            {
                new MySqlParameter("?SysID", sysId),
                new MySqlParameter("?UserID", userId)
            };
            List <RightItem> items = new List <RightItem>();

            using (MySqlDataReader reader = MySqlHelper.ExecuteReader(DACommonHelper.ConnectionString, cmdText, parms))
            {
                while (reader.Read())
                {
                    RightItem r = new RightItem
                    {
                        RightID  = Convert.ToInt32(reader["RightID"]),
                        FromRole = Convert.ToInt32(reader["FromRole"]) == 1
                    };
                    items.Add(r);
                }
            }
            return(items);
        }
        /// <summary>
        /// 获取账号类型说明
        /// </summary>
        /// <param name="userType"></param>
        /// <returns></returns>
        public static string GetUserTypeDescipt(UserTypeOptions userType)
        {
            string accType;

            switch (userType)
            {
            case UserTypeOptions.Admin:
                accType = "管理员";
                break;

            case UserTypeOptions.Channel:
                accType = "渠道内部用户";
                break;

            case UserTypeOptions.ChannelPartner:
                accType = "渠道合作方";
                break;

            case UserTypeOptions.General:
                accType = "普通用户";
                break;

            case UserTypeOptions.ProductAdmin:
                accType = "产品管理员";
                break;

            case UserTypeOptions.SuperAdmin:
                accType = "超级管理员";
                break;

            default:
                accType = string.Empty;
                break;
            }
            return(accType);
        }
예제 #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            curUser = loginService.LoginUser;

            label1.Text = "欢迎您:" + (string.IsNullOrEmpty(curUser.TrueName) ? curUser.Account : curUser.TrueName);

            //渠道内部用户及渠道合作方不能查看"关于我们"这个页面
            if (curUser.AccountType == UserTypeOptions.Channel || curUser.AccountType == UserTypeOptions.ChannelPartner)
            {
                btnaboatus.Visible = false;
                aboatusurl         = "";
            }
            if (!X.IsAjaxRequest)
            {
                List <Soft> softs;
                try
                {
                    softs = loginService.AvailableSofts;
                }
                catch (NotRightException)
                {
                    softs = new List <Soft>();
                }
                var topRights = loginService.AvailableRights.Where(a => a.RightLevel == 0);
                for (int i = 0; i < topRights.Count(); i++)
                {
                    Right     topRight = topRights.ElementAt(i);
                    MenuPanel mp       = new MenuPanel();
                    mp.ID         = "mp" + topRight.ID.ToString();
                    mp.Title      = topRight.Name;
                    mp.Icon       = Icon.BulletRight;
                    mp.Width      = 200;
                    mp.AutoScroll = true;
                    var subRights = loginService.AvailableRights.Where(a => a.ParentID == topRight.ID);
                    for (int j = 0; j < subRights.Count(); j++)
                    {
                        Right subRight = subRights.ElementAt(j);
                        //如果是装机商带来量的报表,则必须要求有助手的权限
                        if (subRight.PageUrl.ToLower() == "reports/newuserbymac.aspx")
                        {
                            int[] array = { 68, 69, -9, 58, 9, 57, 60, 61, 71 };
                            if (!softs.Exists(a => array.Contains(a.ID)))
                            {
                                continue;
                            }
                        }

                        Ext.Net.MenuItem mi = new Ext.Net.MenuItem();
                        mi.ID   = subRight.ID.ToString();
                        mi.Text = subRight.Name;
                        mi.Icon = Icon.BulletStart;
                        if (string.IsNullOrEmpty(url))
                        {
                            url         = subRight.PageUrl;
                            title       = subRight.Name;
                            id          = subRight.ID.ToString();
                            menupanleid = mp.ID;
                        }

                        //唯一标识、访问链接地址、显示名称
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','{1}','{2}',this,{3});", subRight.ID, subRight.PageUrl, subRight.Name, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    Panel1.Items.Add(mp);
                }

                #region 系统管理

                UserTypeOptions   accountType  = loginService.LoginUser.AccountType;
                List <SystemInfo> adminSystems = loginService.AdminSystems;
                if ((accountType == UserTypeOptions.SuperAdmin || accountType == UserTypeOptions.Admin ||
                     accountType == UserTypeOptions.ProductAdmin) && adminSystems.Count > 0)
                {
                    MenuPanel mp = new MenuPanel();
                    mp.ID         = "SysManage";
                    mp.Title      = "系统管理";
                    mp.Icon       = Icon.BulletRight;
                    mp.Width      = 200;
                    mp.AutoScroll = true;
                    //用户管理
                    Ext.Net.MenuItem mi = new Ext.Net.MenuItem();
                    mi.ID   = "UserManage";
                    mi.Text = "用户管理";
                    mi.Icon = Icon.BulletStart;
                    mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/UserManage.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                    mp.Menu.Items.Add(mi);
                    if (accountType == UserTypeOptions.SuperAdmin)
                    {
                        //系统管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "SystemManage";
                        mi.Text = "系统管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/SystemManage.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    if (accountType != UserTypeOptions.ProductAdmin)
                    {
                        //角色管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "RoleManage";
                        mi.Text = "角色管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/RoleManage.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    if (accountType == UserTypeOptions.SuperAdmin || accountType == UserTypeOptions.Admin)
                    {
                        //权限管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "RightManage";
                        mi.Text = "权限管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/RightManage.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                        //产品管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "SoftList";
                        mi.Text = "产品管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/SoftList.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                        Panel1.Items.Add(mp);
                        //项目来源管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "ProjectSourceManage";
                        mi.Text = "项目来源管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/ProjectSourceManage.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    //REPORT才有这个权限
                    if (adminSystems.Exists(a => a.ID == 1))
                    {
                        //渠道权限管理
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "ChannelRightManager";
                        mi.Text = "渠道权限管理";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/ChannelRightManager.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    if (accountType != UserTypeOptions.ProductAdmin)
                    {
                        //操作日志
                        mi      = new Ext.Net.MenuItem();
                        mi.ID   = "Log";
                        mi.Text = "操作日志";
                        mi.Icon = Icon.BulletStart;
                        mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/Log.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                        mp.Menu.Items.Add(mi);
                    }
                    //操作日志
                    mi      = new Ext.Net.MenuItem();
                    mi.ID   = "RightSysDescript";
                    mi.Text = "权限说明";
                    mi.Icon = Icon.BulletStart;
                    mi.Listeners.Click.Handler += string.Format("addTab(#{{TabPanel1}},'idClt{0}','UserRights/RightSysDescript.aspx','{1}',this,{2});", mi.ID, mi.Text, mp.ID);
                    mp.Menu.Items.Add(mi);
                    Panel1.Items.Add(mp);
                }

                #endregion
            }
        }
 /// <summary>
 /// 分页获取用户信息列表
 /// </summary>
 /// <param name="sysId"></param>
 /// <param name="status"></param>
 /// <param name="accountType"></param>
 /// <param name="onlyWhiteUser"></param>
 /// <param name="pageIndex"></param>
 /// <param name="pageSize"></param>
 /// <param name="recordCount"></param>
 /// <returns></returns>
 public List <User> GetUsers(int sysId, StatusOptions status, UserTypeOptions accountType, bool onlyWhiteUser, int pageIndex, int pageSize, ref int recordCount)
 {
     return(GetUsers(sysId, status, accountType, string.Empty, onlyWhiteUser, pageIndex, pageSize, ref recordCount));
 }
 public IMembershipRepository CreateMembershipRepository(UserTypeOptions userType)
 {
     throw new NotImplementedException();
 }