예제 #1
0
        public ActionResult Login(LoginViewModel loginViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (!_iUserMaster.CheckUsernameExists(loginViewModel.Username))
                    {
                        TempData["LoginErrors"] = "Invalid Credentials";
                        return(View(loginViewModel));
                    }

                    var usermasterModel = _iUserMaster.GetUserByUsername(loginViewModel.Username);
                    if (usermasterModel != null)
                    {
                        if (usermasterModel.Status == false)
                        {
                            TempData["LoginErrors"] = "User Account is Deactivated Please Contact Admin";
                            return(View(loginViewModel));
                        }

                        var usersalt = _iUserMaster.GetUserSaltbyUserid(Convert.ToInt64(usermasterModel.UserId));
                        if (usersalt == null)
                        {
                            TempData["LoginErrors"] = "Entered Username or Password is Invalid";
                            return(View());
                        }

                        var storedpassword = _password.GetPasswordbyUserId(usermasterModel.UserId);
                        if (storedpassword == null)
                        {
                            TempData["LoginErrors"] = "Invalid Credentials";
                            return(View(loginViewModel));
                        }

                        var generatehash = GenerateHashSha512.Sha512(loginViewModel.Password, usersalt.PasswordSalt);


                        if (string.Equals(storedpassword, generatehash, StringComparison.Ordinal))
                        {
                            if (_savedAssignedRoles.GetAssignedRolesbyUserId(usermasterModel.UserId) != null)
                            {
                                var rolesModel = _savedAssignedRoles.GetAssignedRolesbyUserId(usermasterModel.UserId);

                                if (rolesModel.RoleId == Convert.ToInt32(StatusMain.Roles.User))
                                {
                                    if (!_verification.CheckIsEmailVerifiedRegistration(usermasterModel.UserId))
                                    {
                                        TempData["LoginErrors"] = "Please Verify Your Email-Id to Use Application";
                                        return(View(loginViewModel));
                                    }

                                    ApplicationCustomSettings applicationCustomSettings = new ApplicationCustomSettings();
                                    if (applicationCustomSettings.GetGeneralSetting().EnableEmailFeature&& _verify.CheckVerificationCodeExists(usermasterModel.UserId))
                                    {
                                        TempData["LoginErrors"] = "Please Verify Your Email-Id to Use Application";
                                        return(View(loginViewModel));
                                    }
                                }


                                if (rolesModel.RoleId == Convert.ToInt32(StatusMain.Roles.Agent) || rolesModel.RoleId == Convert.ToInt32(StatusMain.Roles.AgentAdmin) || rolesModel.RoleId == Convert.ToInt32(StatusMain.Roles.Hod))
                                {
                                    if (!IsCategogryAssigned(usermasterModel, rolesModel))
                                    {
                                        TempData["LoginErrors"] = "Category is not Assigned, Please contact your administrator";
                                        return(View(loginViewModel));
                                    }
                                }

                                if (usermasterModel.IsFirstLogin)
                                {
                                    Session["ChangePasswordUserId"] = usermasterModel.UserId;
                                    Session["ChangeRoleId"]         = rolesModel.RoleId;
                                    return(RedirectToAction("ChangePassword", "Force"));
                                }

                                AssignSessionValues(usermasterModel, rolesModel);
                                return(RedirectionManager(usermasterModel, rolesModel));
                            }
                            else
                            {
                                TempData["LoginErrors"] = "Access Not Assigned";
                                return(View(loginViewModel));
                            }
                        }
                        else
                        {
                            TempData["LoginErrors"] = "Invalid Credentials";
                            return(View(loginViewModel));
                        }
                    }
                    else
                    {
                        TempData["LoginErrors"] = "Invalid Credentials";
                        return(View(loginViewModel));
                    }
                }
                else
                {
                    return(View(loginViewModel));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }