예제 #1
0
        public ActionResult Login(UserView userView, string ReturnUrl)
        {
            ViewBag.Enter = TranslateHandler.ENTER;

            local.Controller = this.ControllerContext.RouteData.Values["controller"].ToString();
            local.Action     = this.ControllerContext.RouteData.Values["action"].ToString();

            if (ReturnUrl == null)
            {
                ReturnUrl = Url.RouteUrl("Default", ((Route)RouteTable.Routes["Default"]).Defaults);
            }
            try
            {
                if ((string.IsNullOrWhiteSpace(userView.Login) && string.IsNullOrWhiteSpace(userView.Password)) ||
                    (userView.Login != null && string.IsNullOrWhiteSpace(userView.Password)) || (string.IsNullOrWhiteSpace(userView.Login) && userView.Password != null))
                {
                    TempData["ErrorMessage"] = TranslateHandler.LOGINANDPASS;
                    logRepository.Insert(systemUser, LogType.ERROR, local, string.Format("{0} - {1}", TempData["ErrorMessage"].ToString(), userView.Login));
                    return(View(userView));
                }

                if (ModelState.IsValid)
                {
                    try
                    {
                        UserRepository  userRepository  = new UserRepository();
                        GuestRepository guestRepository = new GuestRepository();

                        var authenticatedUser = mapper.Map <UserRepository, UserView>(userRepository.Logon(userView.Login.ToUpper(), Cript.GetMd5Hash(userView.Password)));

                        if (authenticatedUser == null)
                        {
                            TempData["ErrorMessage"] = TranslateHandler.LOGININVALID;
                            logRepository.Insert(systemUser, LogType.ERROR, local, string.Format("{0} - {1}", TempData["ErrorMessage"].ToString(), userView.Login));
                            return(Redirect(ReturnUrl));
                        }

                        var confirmed = guestRepository.GetGuestByUserId(authenticatedUser.ID);
                        if (confirmed != null)
                        {
                            authenticatedUser.Confirmed = authenticatedUser.Profile.Equals(UserProfile.ADM) ? true : true;
                        }
                        else
                        {
                            authenticatedUser.Confirmed = authenticatedUser.Profile.Equals(UserProfile.ADM) ? true : false;
                        }

                        userSession.LoggedUser = authenticatedUser;
                    }
                    catch (Exception ex)
                    {
                        logRepository.Insert(ex, systemUser, LogType.ERROR, local);

                        TempData["ErrorMessage"] = TranslateHandler.LOGINERROR;
                        return(View(userView));
                    }
                }

                return(Redirect(ReturnUrl));
            }
            catch (Exception ex)
            {
                logRepository.Insert(ex, systemUser, LogType.ERROR, local);

                TempData["ErrorMessage"] = TranslateHandler.LOGINERROR;
                return(RedirectToAction("Login"));
            }
        }