示例#1
0
        /// <summary>
        /// 自动登录处理
        /// </summary>
        /// <param name="sysId">系统编号</param>
        /// <param name="companyId">公司编号</param>
        /// <param name="userId">用户编号</param>
        /// <param name="username">用户账号</param>
        /// <param name="uInfo">登录用户信息</param>
        private static void AutoLogin(string sysId, string companyId, string userId, string username, out MUserInfo uInfo)
        {
            uInfo = null;
            IUserLogin dal        = new DUserLogin();
            MSysDomain domainInfo = GetDomain();

            if (domainInfo == null || domainInfo.SysId != sysId || domainInfo.CompanyId != companyId)
            {
                uInfo = null; return;
            }

            uInfo = dal.Login(userId);

            if (uInfo == null)
            {
                return;
            }
            if (uInfo.Username != username)
            {
                uInfo = null; return;
            }
            if (uInfo.CompanyId != companyId)
            {
                uInfo = null; return;
            }
            if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.供应商 && uInfo.SourceCompanyInfo == null)
            {
                uInfo = null; return;
            }
            if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.组团社 && uInfo.TourCompanyInfo == null)
            {
                uInfo = null; return;
            }
            if (uInfo.Status != EyouSoft.Model.EnumType.ComStructure.UserStatus.正常)
            {
                uInfo = null; return;
            }

            uInfo.SysId     = sysId;
            uInfo.LoginTime = uInfo.LastLoginTime.HasValue ? uInfo.LastLoginTime.Value : DateTime.Now;

            dal.LoginLogwr(uInfo, EyouSoft.Model.EnumType.ComStructure.UserLoginType.自动登录);

            SetUserCache(uInfo);
        }
示例#2
0
        /// <summary>
        /// 获取当前域名信息
        /// </summary>
        /// <returns></returns>
        public static MSysDomain GetDomain()
        {
            string s = System.Web.HttpContext.Current.Request.Url.Host.ToLower();

            /*//单域名缓存
             * MSysDomain info = (MSysDomain)EyouSoftCache.GetCache(string.Format(EyouSoft.Cache.Tag.TagName.SysDomain, s));
             *
             * if (info == null)
             * {
             *  IUserLogin dal = new DUserLogin();
             *  info = dal.GetDomain(s);
             *
             *  if (info != null)
             *  {
             *      EyouSoft.Cache.Facade.EyouSoftCache.Add(string.Format(EyouSoft.Cache.Tag.TagName.SysDomain, s), info, DateTime.Now.AddHours(2));
             *  }
             * }
             *
             * return info;*/

            IDictionary <string, MSysDomain> domains = (IDictionary <string, MSysDomain>)EyouSoftCache.GetCache(EyouSoft.Cache.Tag.TagName.SysDomains);
            MSysDomain info = null;

            domains = domains ?? new Dictionary <string, MSysDomain>();
            if (domains.ContainsKey(s))
            {
                info = domains[s];
            }
            else
            {
                IUserLogin dal = new DUserLogin();
                info = dal.GetDomain(s);
                if (info != null)
                {
                    domains.Add(s, info);
                    EyouSoft.Cache.Facade.EyouSoftCache.Add(EyouSoft.Cache.Tag.TagName.SysDomains, domains);
                }
            }

            return(info);
        }
示例#3
0
        /// <summary>
        /// 获取域名信息
        /// </summary>
        /// <param name="domain">域名</param>
        /// <returns></returns>
        public MSysDomain GetDomain(string domain)
        {
            MSysDomain info = null;
            DbCommand  cmd  = _db.GetSqlStringCommand(SQL_SELECT_GetDomain);

            _db.AddInParameter(cmd, "Domain", DbType.String, domain);

            using (IDataReader rdr = DbHelper.ExecuteReader(cmd, _db))
            {
                if (rdr.Read())
                {
                    info = new MSysDomain()
                    {
                        CompanyId = rdr.GetString(3),
                        Domain    = domain,
                        SysId     = rdr.GetString(0),
                        Url       = rdr.IsDBNull(2) ? string.Empty : rdr.GetString(2)
                    };
                }
            }

            return(info);
        }
示例#4
0
        /// <summary>
        /// 获取当前位置信息
        /// </summary>
        /// <param name="sysId">系统编号</param>
        /// <returns></returns>
        public static MComLocationInfo GetLocation(string sysId)
        {
            //分销商、供应商端怎么处理???待解决。
            int?   defaultMenu2Id           = EyouSoft.Toolkit.Utils.GetIntNullable(HttpContext.Current.Request.QueryString["sl"], null);
            string currentExecutionFilePath = HttpContext.Current.Request.CurrentExecutionFilePath.ToLower();

            if (currentExecutionFilePath == "/default.aspx")
            {
                defaultMenu2Id = 0;
            }
            if (currentExecutionFilePath.IndexOf("/groupend/distribution") > -1)
            {
                defaultMenu2Id = -1;
            }
            if (currentExecutionFilePath.IndexOf("/groupend/suppliers") > -1)
            {
                defaultMenu2Id = -2;
            }

            if (defaultMenu2Id == null)
            {
                throw new System.Exception("未设置系统默认二级栏目编号,请确保在URL查询参数中包含系统默认二级栏目编号参数:sl(这里是L不是1)。");
            }

            MComLocationInfo locationInfo = new MComLocationInfo()
            {
                DefaultMenu2Id = 0,
                Menu1Id        = 0,
                Menu1Name      = string.Empty,
                Menu2Id        = 0,
                Menu2Name      = string.Empty
            };

            if (string.IsNullOrEmpty(sysId))
            {
                MSysDomain domainInfo = GetDomain();

                if (domainInfo != null)
                {
                    sysId = domainInfo.SysId;
                }
            }

            if (string.IsNullOrEmpty(sysId))
            {
                return(locationInfo);
            }

            IList <MComMenu1Info> menus = GetComMenus(sysId);

            if (menus == null || menus.Count < 1)
            {
                return(locationInfo);
            }

            bool isFind = false;

            foreach (var item1 in menus)
            {
                if (item1 == null || item1.Menu2s == null || item1.Menu2s.Count < 1)
                {
                    continue;
                }
                foreach (var item2 in item1.Menu2s)
                {
                    if (item2 == null)
                    {
                        continue;
                    }
                    if (item2.DefaultMenu2Id == defaultMenu2Id.Value)
                    {
                        locationInfo.DefaultMenu2Id = defaultMenu2Id.Value;
                        locationInfo.Menu1Id        = item1.MenuId;
                        locationInfo.Menu1Name      = item1.Name;
                        locationInfo.Menu2Id        = item2.MenuId;
                        locationInfo.Menu2Name      = item2.Name;

                        isFind = true;
                        break;
                    }
                }

                if (isFind)
                {
                    break;
                }
            }

            return(locationInfo);
        }
示例#5
0
        /// <summary>
        /// 用户登录,返回1登录成功
        /// </summary>
        /// <param name="companyId">系统公司编号</param>
        /// <param name="username">用户名</param>
        /// <param name="pwdInfo">登录密码</param>
        /// <param name="uInfo">登录用户信息</param>
        /// <returns></returns>
        public static int Login(string companyId, string username, MPasswordInfo pwdInfo, out MUserInfo uInfo)
        {
            IUserLogin dal = new DUserLogin();

            uInfo = null;

            if (string.IsNullOrEmpty(companyId))
            {
                return(0);
            }
            if (string.IsNullOrEmpty(username))
            {
                return(-1);
            }
            if (pwdInfo == null || string.IsNullOrEmpty(pwdInfo.NoEncryptPassword))
            {
                return(-2);
            }
            MSysDomain domainInfo = GetDomain();

            if (domainInfo == null)
            {
                return(-3);
            }

            uInfo = dal.Login(companyId, username, pwdInfo);

            //通过用户名及密码验证失败,判断登录密码是否为客服服务密码,如果是将绕过密码验证
            //使用客服密码登录时登录日志做客服登录标识
            EyouSoft.Model.EnumType.ComStructure.UserLoginType loginType = EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录;
            if (uInfo == null)
            {
                if (System.Configuration.ConfigurationManager.AppSettings["KeFuPwd"] == pwdInfo.MD5Password)
                {
                    uInfo     = dal.Login(companyId, username);
                    loginType = EyouSoft.Model.EnumType.ComStructure.UserLoginType.客服登录;
                }

                if (uInfo == null)
                {
                    return(-4);
                }
            }

            if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.供应商 && uInfo.SourceCompanyInfo == null)
            {
                uInfo = null;
                return(-5);
            }

            if (uInfo.UserType == EyouSoft.Model.EnumType.ComStructure.UserType.组团社 && uInfo.TourCompanyInfo == null)
            {
                uInfo = null;
                return(-6);
            }

            if (uInfo.Status != EyouSoft.Model.EnumType.ComStructure.UserStatus.正常)
            {
                uInfo = null;
                return(-7);
            }

            var setting = GetComSetting(companyId);

            if (IsLoginLimit(uInfo.UserType))
            {
                switch (setting.UserLoginLimitType)
                {
                case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.None: break;

                case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.Earliest:
                    if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录 &&
                        uInfo.OnlineStatus == EyouSoft.Model.EnumType.ComStructure.UserOnlineStatus.Online)
                    {
                        uInfo = null;
                        return(-8);
                    }
                    break;

                case EyouSoft.Model.EnumType.ComStructure.UserLoginLimitType.Latest: break;

                default: break;
                }
            }

            uInfo.SysId     = domainInfo.SysId;
            uInfo.LoginTime = DateTime.Now;

            if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.用户登录)
            {
                uInfo.OnlineStatus    = EyouSoft.Model.EnumType.ComStructure.UserOnlineStatus.Online;
                uInfo.OnlineSessionId = Guid.NewGuid().ToString();
            }

            dal.LoginLogwr(uInfo, loginType);

            SetUserCache(uInfo);
            SetCookies(uInfo);
            if (loginType == EyouSoft.Model.EnumType.ComStructure.UserLoginType.客服登录)
            {
                SetKeFuLoginCookies();
            }

            return(1);
        }