예제 #1
0
        public ActionResult Login(LoginViewModel model, string ReturnUrl = "")
        {
            if (ModelState.IsValid)
            {
                UserLoginInfo _validateLoginUserData = _userService.GetUserByEmailandPassword(model.Email, model.Password);
                if (_validateLoginUserData != null)
                {
                    //var roles = user.Roles.Select(m => m.RoleName).ToArray();

                    ApplicationPrincipalSerializeModel serializeModel = new ApplicationPrincipalSerializeModel();
                    serializeModel.UserID      = _validateLoginUserData.UserID;
                    serializeModel.UserName    = _validateLoginUserData.UserName;
                    serializeModel.Email       = _validateLoginUserData.Email;
                    serializeModel.FirstName   = _validateLoginUserData.FirstName;
                    serializeModel.LastName    = _validateLoginUserData.LastName;
                    serializeModel.MiddleName  = _validateLoginUserData.MiddleName;
                    serializeModel.DisplayName = _validateLoginUserData.DisplayName;
                    serializeModel.DisplayID   = _validateLoginUserData.DisplayID;
                    serializeModel.Roles       = _validateLoginUserData.Roles;


                    string userData = JsonConvert.SerializeObject(serializeModel);
                    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                        1,
                        _validateLoginUserData.Email,
                        DateTime.Now,
                        DateTime.Now.AddMinutes(FormsAuthentication.Timeout.TotalMinutes),
                        model.RememberMe,
                        userData);

                    string     encTicket = FormsAuthentication.Encrypt(authTicket);
                    HttpCookie faCookie  = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                    Response.Cookies.Add(faCookie);

                    if (!string.IsNullOrWhiteSpace(ReturnUrl) && Url.IsLocalUrl(ReturnUrl))
                    {
                        return(Redirect(ReturnUrl));
                    }
                    if (_validateLoginUserData.Roles.Contains(SystemConfig.SYSADMIN) ||
                        _validateLoginUserData.Roles.Contains(SystemConfig.SITEADMIN) ||
                        _validateLoginUserData.Roles.Contains(SystemConfig.APPMANAGER))
                    {
                        return(RedirectToAction("Index", "Dashboard", new { Area = "Admin" }));
                    }
                    else if (_validateLoginUserData.Roles.Contains(SystemConfig.SYSNOTIFIER) ||
                             _validateLoginUserData.Roles.Contains(SystemConfig.USER))
                    {
                        return(RedirectToAction("Index", "Dashboard", new { Area = "User" }));
                    }
                    else
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                }

                ModelState.AddModelError("", "Invalid username or password!");
            }

            return(View(model));
        }
예제 #2
0
        protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
        {
            HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (authCookie != null)
            {
                FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

                ApplicationPrincipalSerializeModel serializeModel = JsonConvert.DeserializeObject <ApplicationPrincipalSerializeModel>(authTicket.UserData);
                ApplicationPrincipal newUser = new ApplicationPrincipal(authTicket.Name);
                newUser.UserID      = serializeModel.UserID;
                newUser.UserName    = serializeModel.UserName;
                newUser.Email       = serializeModel.Email;
                newUser.FirstName   = serializeModel.FirstName;
                newUser.LastName    = serializeModel.LastName;
                newUser.MiddleName  = serializeModel.MiddleName;
                newUser.DisplayName = serializeModel.DisplayName;
                newUser.DisplayID   = serializeModel.DisplayID;
                newUser.Roles       = serializeModel.Roles;

                HttpContext.Current.User = newUser;
            }
        }