public async Task<ActionResult> Profile(RegisterViewModel model, bool captchaValid, string captchaErrorMessage) { if (!model.IsUserProfile) { VerifyCaptcha(model, captchaValid, captchaErrorMessage); ValidateUserLoginDetails(model.userLoginViewModel); if (ModelState.IsValid) { model.Active = true; if (model.TermsCondition) { if (model.UserType == (short)UserType.Self) model.IsOrganization = 0; if (model.UserType == (short)UserType.Organization) model.IsOrganization = 1; var mappedUserProfile = Mapper.Map<RegisterViewModel, User>(model); mappedUserProfile.UserLogins.FirstOrDefault().SecurityQuestionId = model.SecurityQuestionId; if (mappedUserProfile.Id == 0) { mappedUserProfile.CreatedDate = DateTime.Now; mappedUserProfile.CreatedBy = 0; mappedUserProfile.UpdatedDate = DateTime.Now; mappedUserProfile.UpdatedBy = 0; mappedUserProfile.Active = true; var userFromDb = _wcfService.InvokeService<IUserService, User>(svc => svc.AddUser(mappedUserProfile)); if (userFromDb != null) { model.CreationSuccessful = true; model.Message = "Dear '{0}'. You have been registered successfully and a welcome email has been sent to '{1}' and a welcome sms is sent to '{2}'.".ToFormat(model.FullName, model.Email, model.Mobile); } } } else { ModelState.AddModelError("TermsCondition", "Terms and Conditions is required."); } model.userLoginViewModel = new List<UserLoginViewModel>(); model.IsUserProfile = false; BindDropDowns(model); } } else { if (ModelState.IsValid) { var userFromDb = _wcfService.InvokeService<IUserService, User>((svc) => svc.GetUserById(model.Id)); model.userLoginViewModel.ForEach(x => { x.Password = userFromDb.UserLogins.FirstOrDefault().Password; x.SecurityAnswer = userFromDb.UserLogins.FirstOrDefault().SecurityAnswer; x.Captcha = userFromDb.UserLogins.FirstOrDefault().Captcha; x.UserHistoryViewModel = new List<UserHistoryViewModel>(); var userHstry = userFromDb.UserLogins.Select(z => z.UserHistories); foreach (var item in userFromDb.UserLogins.FirstOrDefault().UserHistories) { UserHistoryViewModel userHistoryViewModel = new UserHistoryViewModel() { UserId = item.UserloginId, UserHistoryId = item.Id, SaltKey = item.saltkey, PasswordCap = item.PasswordCap, IpAddress = item.IpAddress, CreatedDate = item.CreatedDate, Captcha = item.Captcha }; x.UserHistoryViewModel.Add(userHistoryViewModel); } }); var mappedUserProfile = Mapper.Map<RegisterViewModel, User>(model); mappedUserProfile.UserLogins.FirstOrDefault().SecurityQuestionId = model.SecurityQuestionId; mappedUserProfile.UserLogins.FirstOrDefault().PasswordCap = userFromDb.UserLogins.FirstOrDefault().PasswordCap; mappedUserProfile.UserLogins.FirstOrDefault().saltkey = userFromDb.UserLogins.FirstOrDefault().saltkey; mappedUserProfile.UserLogins.FirstOrDefault().Id = userFromDb.UserLogins.FirstOrDefault().Id; mappedUserProfile.UpdatedDate = DateTime.Now; mappedUserProfile.UpdatedBy = SessionContext.CurrentUser.Id; var userProfile = _wcfService.InvokeService<IUserService, User>((svc) => svc.UpdateUserProfile(mappedUserProfile)); if (userProfile.IsNotNull()) { var registerMappedProfile = Mapper.Map<User, RegisterViewModel>(userProfile); registerMappedProfile.Message = "Saved Successfully."; registerMappedProfile.CreationSuccessful = true; } } } return View(model); }
public void VerifyCaptcha(RegisterViewModel model, bool captchaValid, string captchaErrorMessage) { if (!captchaValid) { model.CaptchaUserInput = string.Empty; ModelState.AddModelError("recaptcha", captchaErrorMessage); } else { var userHistoryLst = new List<UserHistoryViewModel>(); var userHistory = new UserHistoryViewModel(); model.CaptchaValid = model.CaptchaUserInput; userHistory.Captcha = model.CaptchaValid; userHistory.CreatedDate = DateTime.Now; var ipAddress = GetClientIpAddress(); model.IpAddress = userHistory.IpAddress = ipAddress; userHistoryLst.Add(userHistory); model.userLoginViewModel.FirstOrDefault().Captcha = model.CaptchaUserInput; model.userLoginViewModel.FirstOrDefault().UserHistoryViewModel = model.UserHistoryViewModel = userHistoryLst; } }
public ActionResult Login(LoginViewModel model, string returnUrl, bool captchaValid, string captchaErrorMessage) { if (ModelState.IsValid) { User user = new Domain.User(); var loginType = CheckInputType(model.UserName); user = _wcfService.InvokeService<IUserService, User>(svc => svc.GetUserByUsername(model.UserName, loginType)); if (user != null) { var userLogin = user.UserLogins.FirstOrDefault(); if (!user.Active) ModelState.AddModelError("", "Your account has been disabled. Please contact your administrator."); var hashedPassword = Common.Common.CreatePasswordHash(model.Password, userLogin.saltkey); if (hashedPassword.Equals(userLogin.Password)) { var userHistry = user.UserLogins.Select(x => x.UserHistories.FirstOrDefault(y => y.IpAddress == GetClientIpAddress())).ToList(); var hashedPasswordCap = Common.Common.CreatePasswordCapHash(model.Password, userLogin.saltkey, userLogin.Captcha); if (userHistry == null) { //if (!hashedPasswordCap.Equals(userLogin.PasswordCap)) //{ if (model.IsCaptchaDisplay.HasValue) { if (captchaValid) { var encryptedCaptcha = EncryptionExtensions.Encrypt(model.CaptchaUserInput); model.Captcha = encryptedCaptcha; try { var userHistryViewModel = new UserHistoryViewModel() { Captcha = model.Captcha, IpAddress = GetClientIpAddress(), PasswordCap = hashedPasswordCap, SaltKey = user.UserLogins.First().saltkey, UserId = user.Id }; var mappedModel = Mapper.Map<UserHistoryViewModel, UserHistory>(userHistryViewModel); var userHistory = _wcfService.InvokeService<IUserService, UserHistory>((svc) => svc.AddUserHistory(mappedModel)); } catch (Exception e) { } } } //} } else { var passwordCapFromDb = userHistry; if (!passwordCapFromDb.Equals(hashedPasswordCap)) { _wcfService.InvokeService<IUserService>((svc) => svc.UpdateUserLogin(userHistry.FirstOrDefault())); } else { SessionContext.SuspiciousErrorMessage = "NOTE: Please change your password immediately."; } } AuthenticateUser(user, userLogin); if (returnUrl != null) { return RedirectToLocal(returnUrl); } else { if (user.OrganizationId == 0) return RedirectToAction("Organization", "Dashboard"); else { if (user.OrganizationId.HasValue) { var organization = _wcfService.InvokeService<IOrganizationService, Organization>((svc) => svc.GetOrganizationById(user.OrganizationId.Value)); var docFolder = organization.LibraryFolders.FirstOrDefault(x => x.FolderName == "Documents"); if (!docFolder.LibraryAssets.IsCollectionValid()) { return RedirectToAction("OrganizationDocs", "Dashboard"); } else if (!organization.Roles.IsCollectionValid()) { return RedirectToAction("AddRole", "Dashboard"); } else { return RedirectToAction("Index", "Dashboard"); } } } } } else { ModelState.AddModelError("", "Please enter a valid Username/Password"); } } else { ModelState.AddModelError("", "Please enter a valid Username/Password"); } } // If we got this far, something failed, redisplay form return View(model); }