Beispiel #1
0
        public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                if (Request.IsAjaxRequest())
                {
                    return(PartialView(MVC.User.Views._LogOn, model));
                }
                return(View(model));
            }

            string userName = string.Empty;
            int    userId   = 0;

            const string emailRegPattern =
                @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

            string           ip = Request.ServerVariables["REMOTE_ADDR"];
            VerifyUserStatus verificationResult = Regex.IsMatch(model.Identity, emailRegPattern)
                ? _userService.VerifyUserByEmail(model.Identity, model.Password, ref userName, ref userId, ip)
                : _userService.VerifyUserByUserName(model.Identity, model.Password, ref userName, ref userId, ip);

            switch (verificationResult)
            {
            case VerifyUserStatus.VerifiedSuccessfully:
            {
                string roleOfTheUser = _roleService.GetRoleByUserId(userId).Name;

                // set user role cookie
                SetAuthCookie(userName, roleOfTheUser, model.RememberMe);

                _uow.SaveChanges();

                if (Request.IsAjaxRequest())
                {
                    return(JavaScript(IsValidReturnUrl(returnUrl)
                                ? string.Format("window.location ='{0}';", returnUrl)
                                : "window.location.reload();"));
                }

                return(RedirectToAction(MVC.Home.ActionNames.Index, MVC.Home.Name));
            }

            case VerifyUserStatus.UserIsbaned:
                ModelState.AddModelError("", "حساب کاربری شما مسدود است");
                break;

            default:
                ModelState.AddModelError("", "اطلاعات وارد شده صحیح نمی باشند");
                break;
            }
            if (Request.IsAjaxRequest())
            {
                return(PartialView(MVC.User.Views._LogOn, model));
            }
            return(View(model));
        }
Beispiel #2
0
        //[CaptchaVerify("کلمه وارد شده صحیح نمی باشد")]
        public virtual ActionResult LogOn(LogOnModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.ShowCaptcha     = true;
                TempData["ShowCaptcha"] = true;
                if (Request.IsAjaxRequest())
                {
                    return(PartialView(MVC.User.Views._LogOn, model));
                }
                return(View(model));
            }
            else if (TempData["ShowCaptcha"] != null && TempData["ShowCaptcha"].ToString().ToLower() == "true" && !this.IsCaptchaValid("Invalid captcha"))
            {
                ModelState.AddModelError("", "کلمه وارد شده صحیح نمی باشد");
                ViewBag.ShowCaptcha = true;
                if (Request.IsAjaxRequest())
                {
                    return(PartialView(MVC.User.Views._LogOn, model));
                }
                return(View(model));
            }
            ViewBag.ShowCaptcha     = false;
            TempData["ShowCaptcha"] = false;

            string       userName        = string.Empty;
            int          userId          = 0;
            string       roleOfTheUser   = "";
            const string emailRegPattern =
                @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

            string           ip = Request.ServerVariables["REMOTE_ADDR"];
            VerifyUserStatus verificationResult = Regex.IsMatch(model.Identity, emailRegPattern)
                ? _userService.VerifyUserByEmail(model.Identity, model.Password, ref userName, ref userId, ip)
                : _userService.VerifyUserByUserName(model.Identity, model.Password, ref userName, ref userId, ip);

            switch (verificationResult)
            {
            case VerifyUserStatus.VerifiedSuccessfully:
            {
                roleOfTheUser = _roleService.GetRoleByUserId(userId).Name;

                // set user role cookie
                SetAuthCookie(userName, roleOfTheUser, model.RememberMe);

                _uow.SaveChanges();

                if (Request.IsAjaxRequest())
                {
                    return(JavaScript(IsValidReturnUrl(returnUrl)
                                ? string.Format("window.location ='{0}';", returnUrl)
                                : "window.location.reload();"));
                }
                if (!roleOfTheUser.ToLower().Contains("admin"))
                {
                    return(RedirectToAction(MVC.Home.ActionNames.Index, MVC.Home.Name));
                }
            }
            break;

            case VerifyUserStatus.UserIsbaned:
                ModelState.AddModelError("", "حساب کاربری شما مسدود و یا حذف است");
                ViewBag.ShowCaptcha     = true;
                TempData["ShowCaptcha"] = true;
                break;

            default:
                ModelState.AddModelError("", "اطلاعات وارد شده صحیح نمی باشند");
                ViewBag.ShowCaptcha     = true;
                TempData["ShowCaptcha"] = true;
                break;
            }
            if (Request.IsAjaxRequest())
            {
                return(PartialView(MVC.User.Views._LogOn, model));
            }
            if (roleOfTheUser.ToLower().Contains("admin"))
            {
                return(RedirectToAction(MVC.Admin.Home.ActionNames.Index, MVC.Admin.Home.Name));
            }
            return(View(model));
        }