Esempio n. 1
0
        /// <summary>
        /// 判断用户登录角色
        /// </summary>
        /// <param name="username">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="rememberPassWordFlag">记住密码标识</param>
        /// <param name="rturl">返回路径</param>
        /// <param name="ip"></param>
        /// <param name="SpecialUrl">特殊的Url 供店铺装修使用</param>
        /// <returns></returns>
        public Base CheckAndLogin(string username, string password, string ip, bool rememberPassWordFlag, out SoUser soUser)
        {
            soUser = new SoUser();

            Base   b = new Base();
            ExUser ex;

            string msg = string.Empty;

            #region 用户登录
            try
            {
                using (var db = new EFContext())
                {
                    var f = db.selmanager.FirstOrDefault(x => x.IsDel == 0 && x.IsLock == 0 && x.LoginName.ToLower() == username && x.LoginPwd.ToLower() == password);

                    if (f != null)
                    {
                        var shop = db.selshop.FirstOrDefault(x => x.ID == f.ShopID);
                        #region addcookie
                        SoUser sm = new SoUser();
                        sm.UserName      = f.LoginName;
                        sm.NickName      = f.NickName;
                        sm.ManagerId     = f.ID;
                        sm.ShopId        = f.ShopID;
                        sm.IsOwner       = f.IsOwner;
                        sm.ShopName      = shop.ShopName;
                        sm.UserLoginType = (int)UserLoginType.UserSelf;
                        sm.IP            = ip;
                        bool flag = SoLogin.Login(sm);
                        #endregion

                        #region 处理登录成功结果
                        if (flag)
                        {
                            b.Code    = 1;
                            b.Message = "登录成功!";
                            soUser    = sm;
                            return(b);
                        }
                        else
                        {
                            b.Code    = 0;
                            b.Message = "登录失败!";
                            soUser    = sm;
                            return(b);
                        }
                        #endregion
                    }
                    else
                    {
                        b.Code    = 0;
                        b.Message = "登录失败!";
                    }
                }
            }
            catch (Exception Exc)
            {
                b.Code    = 0;
                b.Message = "登录异常";
            }
            #endregion

            return(b);
        }
Esempio n. 2
0
        public ContentResult LoginOut()
        {
            bool b = SoLogin.LoginOut();

            return(Content(b.ToString()));
        }
Esempio n. 3
0
        public JsonResult UserReg(FormCollection form)
        {
            #region field
            ViewUserReg b = new ViewUserReg();

            DateTime dt1 = DateTime.Now;

            var iLog = log4net.LogManager.GetLogger("LogToTXT");

            //仿照sso添加登录信息模型
            string msg          = string.Empty;
            bool   flag         = false;
            string tg           = form.Get("tg");
            string userName     = form.Get("userName");
            string password     = form.Get("password");
            string cpassword    = form.Get("cpassword");
            string email        = form.Get("email");
            string phone        = form.Get("phone");
            string validatecode = form.Get("validatecode");
            string validateid   = form.Get("validateid");
            #endregion

            #region 开始验证

            #region 判断用户密码是否为空
            if (string.IsNullOrEmpty(validateid))
            {
                flag = true;
                msg  = string.Format("验证码不能为空!");
            }

            if (string.IsNullOrEmpty(validatecode))
            {
                flag = true;
                msg  = string.Format("验证码不能为空!");
            }

            if (password != cpassword)
            {
                flag = true;
                msg  = string.Format("两次输入的密码不相同!");
            }

            if (string.IsNullOrEmpty(cpassword))
            {
                flag = true;
                msg  = string.Format("确认密码不能为空!");
            }

            if (string.IsNullOrEmpty(password))
            {
                flag = true;
                msg  = string.Format("密码不能为空!");
            }

            if (string.IsNullOrEmpty(email))
            {
                flag = true;
                msg  = string.Format("邮箱不能为空!");
            }
            if (string.IsNullOrEmpty(userName))
            {
                flag = true;
                msg  = string.Format("用户名不能为空!");
            }
            #endregion

            #region 开始校验
            if (Session["ValidateCode"] == null || validatecode != Session["ValidateCode"].ToString())
            {
                flag = true;
                msg  = string.Format("验证码输入不正确!");
            }
            if (Session["ValidateId"] == null || validateid != Session["ValidateId"].ToString())
            {
                flag = true;
                msg  = string.Format("验证码输入不正确!");
            }
            if (Session["Email"] == null || email != Session["Email"].ToString())
            {
                flag = true;
                msg  = string.Format("验证码输入不正确!");
            }
            #endregion


            #region 开始判断
            if (flag)
            {
                ViewBag.Email    = email;
                ViewBag.UserName = userName;
                ViewBag.Phone    = phone;

                b.Code    = 0;
                b.Message = msg;
                return(Json(b));
            }

            var bbb = RegexHelper.CheckPassword(password);
            if (bbb.Code == 0)
            {
                b.Code    = 0;
                b.Message = bbb.Message;
                return(Json(b));
            }

            var bbbb = RegexHelper.CheckUserName(userName);
            if (bbbb.Code == 0)
            {
                b.Code    = 0;
                b.Message = bbbb.Message;
                return(Json(b));
            }
            #endregion

            #endregion

            #region 用户注册
            try
            {
                #region httpclient

                var apiUrl = ConfigHelper.GetApiUrl;
                var url    = string.Format(apiUrl + "/api/so/postRegister");

                using (var http = new HttpClient())
                {
                    var content = new FormUrlEncodedContent(new Dictionary <string, string>()
                    {
                        { "safecode", SafeCodeHelper.GetSafeCode },
                        { "username", userName },
                        { "password", password },
                        { "email", email },
                        { "tg", tg }
                    });

                    var response = http.PostAsync(url, content).Result;
                    if (response.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        NewBase <ExRegUser> bb = JsonConvert.DeserializeObject <NewBase <ExRegUser> >(response.Content.ReadAsStringAsync().Result);
                        if (bb.Code == 1)
                        {
                            b.Code = 1;
                            //采用服务端的返回提示
                            // b.Message = "注册成功!";
                            b.Url     = ConfigHelper.GetHomeUrl;
                            b.Message = bb.Message;

                            //清理注册Session
                            Session["ValidateCode"] = null;

                            Session["ValidateId"] = null;

                            Session["Email"] = null;

                            //登录成功之后 默认用户登录 然后跳转到用户后台
                            SoUser sm = new SoUser();
                            sm.UserName  = userName;
                            sm.NickName  = userName;
                            sm.IP        = SM.Current.IPManager.GetIP();
                            sm.ManagerId = bb.Data.UGUID;
                            bool isLogin = SoLogin.Login(sm);
                            return(Json(b));
                        }
                        else
                        {
                            b.Code = 0;
                            //采用服务端的返回提示
                            //b.Message = "注册失败!";
                            b.Message = bb.Message;
                            return(Json(b));
                        }
                    }
                    else
                    {
                        b.Code    = 0;
                        b.Message = response.ReasonPhrase;
                        return(Json(b));
                    }
                }
                #endregion
            }
            catch (Exception Exc)
            {
                b.Code    = 0;
                b.Message = "注册异常!";
                return(Json(b));
            }
            #endregion
        }
Esempio n. 4
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            #region home
            string soLibID = SoLogin.IsLogin();

            var model = SoLogin.GetUserModel();

            if (string.IsNullOrEmpty(soLibID) || model == null)
            {
                if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求
                {
                    JsonResult jr = new JsonResult();
                    jr.Data = new { Code = -200, Message = "登录超时,请重新登录再操作!", Data = "", Url = ConfigHelper.GetSoUrl };
                    jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                    filterContext.Result   = jr;
                }
                else
                {
                    string url         = filterContext.HttpContext.Request.Url.ToString();
                    string regexString = ConfigHelper.GetHomeUrl + @":\d{0,5}";
                    Regex  regex       = new Regex(regexString);
                    if (regex.IsMatch(url))
                    {
                        url = regex.Replace(url, ConfigHelper.GetHomeUrl);
                    }

                    var rawurl = System.Web.HttpUtility.UrlEncode(url);

                    //string loginSoUrl = ConfigHelper.GetSoLoginUrl;
                    string loginSoUrl = string.Format("{0}?url={1}", ConfigHelper.GetSoUrl, rawurl);
                    string newurl     = loginSoUrl;
                    filterContext.Result = new RedirectResult(newurl);
                }
            }
            else
            {
                using (var db = new EFContext())
                {
                    var query = new List <Menu>().AsQueryable();

                    var selshop = db.selshop.FirstOrDefault(x => x.ID == model.ShopId);

                    var selmanagerowner     = db.selmanager.FirstOrDefault(x => x.ShopID == model.ShopId && x.IsOwner == 1);
                    var selmanagerroleowner = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == selmanagerowner.ID);
                    var rolepemitidowner    = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerroleowner.SelRoleID).Select(x => x.SelPemitID).ToList();

                    var selmanagerrole = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == model.ManagerId);
                    var rolepemitid    = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerrole.SelRoleID).Select(x => x.SelPemitID).ToList();
                    if (model.IsOwner == 1)
                    {
                        query = db.selpemit.Where(x => x.IsMenu == 1)
                                .Where(x => rolepemitid.Contains(x.ID))
                                .Select(x => new Menu {
                            MenuId = x.ID
                        });
                    }
                    else
                    {
                        //管理员权限下面的 有效权限

                        query = db.selpemit.Where(x => x.IsMenu == 1)
                                .Where(x => rolepemitid.Contains(x.ID))
                                .Where(x => rolepemitidowner.Contains(x.ID))
                                .Select(x => new Menu()
                        {
                            MenuId = x.ID
                        });
                    }


                    var listmenu = query.ToList();

                    bool hasAuthorization = false;
                    var  f = listmenu.FirstOrDefault(a => a.MenuId == menuId.ToString());
                    if (f != null)
                    {
                        hasAuthorization = true;
                    }

                    if (!hasAuthorization)//没有权限
                    {
                        string redirecturl = string.Format("{0}/{1}/ErrorNopermit", ConfigHelper.GetHomeUrl, "Common");

                        if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求
                        {
                            JsonResult jr = new JsonResult();
                            jr.Data = new { Code = -200, Message = "没有访问权限!", Data = "", Url = redirecturl };
                            jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                            filterContext.Result   = jr;
                        }
                        else
                        {
                            filterContext.Result = new RedirectResult(redirecturl);
                        }
                    }
                    else
                    {
                        base.OnActionExecuting(filterContext);
                    }
                }
            }


            #endregion
        }
Esempio n. 5
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            #region test

            //filterContext.HttpContext.Session["ManagerId"] = 3;
            //filterContext.HttpContext.Session["ShopId"] = 1;
            #endregion

            #region home

            var    controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
            var    actionName     = filterContext.ActionDescriptor.ActionName;
            string tempurl        = string.Format("/{0}/{1}", controllerName, actionName);
            //var selpemit = DB.selpemit.Value.FirstOrDefault(x => x.Url == tempurl);
            //if (selpemit == null)
            //{
            //    filterContext.Controller.ViewBag.menuid = 0;
            //}
            //else
            //{
            //    filterContext.Controller.ViewBag.menuid = selpemit.ID;
            //}



            string soLibID = SoLogin.IsLogin();

            var model = SoLogin.GetUserModel();

            if (string.IsNullOrEmpty(soLibID) || model == null)
            {
                if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求
                {
                    JsonResult jr = new JsonResult();
                    jr.Data = new { Code = -200, Message = "登录超时,请重新登录再操作!", Data = "", Url = ConfigHelper.GetSoUrl };
                    jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                    filterContext.Result   = jr;
                }
                else
                {
                    string url         = filterContext.HttpContext.Request.Url.ToString();
                    string regexString = ConfigHelper.GetWwwUrl + @":\d{0,5}";
                    Regex  regex       = new Regex(regexString);
                    if (regex.IsMatch(url))
                    {
                        url = regex.Replace(url, ConfigHelper.GetWwwUrl);
                    }

                    var rawurl = System.Web.HttpUtility.UrlEncode(url);

                    //string loginSoUrl = ConfigHelper.GetSoLoginUrl;
                    string loginSoUrl = string.Format("{0}?url={1}", ConfigHelper.GetSoUrl, System.Web.HttpUtility.UrlEncode(rawurl));
                    string newurl     = loginSoUrl;
                    filterContext.Result = new RedirectResult(newurl);
                }
            }
            else
            {
                using (var db = new EFContext())
                {
                    //控制左边菜单显示
                    var query   = new List <ViewPemit>();
                    var selshop = db.selshop.Where(x => x.ID == model.ShopId).Select(x => new { x.ID, x.AuditStatus, x.VersionID }).FirstOrDefault();
                    if (selshop.AuditStatus != 1)
                    {
                        query.Add(new ViewPemit()
                        {
                            ID = "1000", IsDel = 0, PemitType = 0, Title = "完善资料", Sort = 99, Url = "/SM/CompleteInfo", ParentID = "8"
                        });
                    }
                    //查询网店所有者用户拥有的权限

                    var selmanagerowner     = db.selmanager.FirstOrDefault(x => x.ShopID == model.ShopId && x.IsOwner == 1);
                    var selmanagerroleowner = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == selmanagerowner.ID);
                    var rolepemitidowner    = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerroleowner.SelRoleID).Select(x => x.SelPemitID).ToList();

                    var selmanagerrole = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == model.ManagerId);
                    var rolepemitid    = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerrole.SelRoleID).Select(x => x.SelPemitID).ToList();



                    if (model.IsOwner == 1)
                    {
                        query = db.selpemit.Where(x => x.IsMenu == 1)
                                .Where(x => rolepemitid.Contains(x.ID))
                                .Select(x => new ViewPemit()
                        {
                            ID = x.ID, Title = x.Title, ParentID = x.ParentID, IsDel = x.IsDel, ImgUrl = x.ImgUrl, PemitType = x.PemitType, Sort = x.Sort, Url = x.Url
                        }).ToList();
                    }
                    else
                    {
                        //管理员权限下面的 有效权限
                        query = db.selpemit.Where(x => x.IsMenu == 1)
                                .Where(x => rolepemitid.Contains(x.ID))
                                .Where(x => rolepemitidowner.Contains(x.ID))
                                .Select(x => new ViewPemit()
                        {
                            ID = x.ID, Title = x.Title, ParentID = x.ParentID, IsDel = x.IsDel, ImgUrl = x.ImgUrl, PemitType = x.PemitType, Sort = x.Sort, Url = x.Url
                        }).ToList();
                    }


                    filterContext.Controller.ViewBag.MenuList = query;
                    filterContext.Controller.ViewBag.menuid   = 0;
                }

                if (model.UserLoginType == (int)UserLoginType.UserSelf || model.UserLoginType == (int)UserLoginType.Manager)
                {
                    if (filterContext.HttpContext.Session["SoLibID"] == null || filterContext.HttpContext.Session["SoLibID"].ToString() != soLibID)
                    {
                        filterContext.HttpContext.Session["SoLibID"]   = soLibID;
                        filterContext.HttpContext.Session["ManagerId"] = model.ManagerId;
                        filterContext.HttpContext.Session["UserName"]  = model.UserName;
                        filterContext.HttpContext.Session["NickName"]  = model.NickName;
                        filterContext.HttpContext.Session["ShopId"]    = model.ShopId;
                        filterContext.HttpContext.Session["ShopName"]  = model.ShopName;
                        filterContext.HttpContext.Session["IsOwner"]   = model.IsOwner;
                    }
                }
                else if (model.UserLoginType == (int)UserLoginType.SubAccount)
                {
                    if (filterContext.HttpContext.Session["SoLibID"] == null || filterContext.HttpContext.Session["SoLibID"].ToString() != soLibID)
                    {
                        filterContext.HttpContext.Session["SoLibID"]   = soLibID;
                        filterContext.HttpContext.Session["ManagerId"] = model.ManagerId;
                        filterContext.HttpContext.Session["UserName"]  = model.UserName;
                        filterContext.HttpContext.Session["NickName"]  = model.NickName;
                        filterContext.HttpContext.Session["ShopId"]    = model.ShopId;
                        filterContext.HttpContext.Session["ShopName"]  = model.ShopName;
                        filterContext.HttpContext.Session["IsOwner"]   = model.IsOwner;
                    }
                }
                else
                {
                    if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求
                    {
                        JsonResult jr = new JsonResult();
                        jr.Data = new { Code = 0, Message = "没有访问权限!", Data = "" };
                        jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                        filterContext.Result   = jr;
                    }
                    else
                    {
                        string wwwUrl = ConfigHelper.GetWwwUrl;
                        string url    = wwwUrl;
                        filterContext.Result = new RedirectResult(url);
                    }
                }
                filterContext.Controller.ViewBag.UserName = model.UserName;

                string VersionName = string.Empty;
                //获取店铺等级
                using (var db = new EFContext())
                {
                    var selshop = db.selshop.FirstOrDefault(x => x.ID == model.ShopId);
                    model.ShopName = selshop.ShopName;
                    var sysversion = db.sysversion.FirstOrDefault(x => x.VersionID == selshop.VersionID);
                    if (sysversion != null)
                    {
                        VersionName = sysversion.Name;
                    }
                }
                filterContext.Controller.ViewBag.ShopName    = model.ShopName;
                filterContext.Controller.ViewBag.VersionName = VersionName;
            }

            #endregion
        }