public ActionResult Login() { var vm = new LoginViewModel(); if (LoggedInUser != null) { if (LoggedInUser.Type == UserAuthenticationType.Board) { var boardMember = _boardMemberRepository.GetBoardMember(LoggedInUser.BoardMemberId.Value); if (boardMember == null) return RedirectTo.BoardMember.New(); return RedirectTo.Search.NonProfits(); } else { var loggedInCharity = _charityRepository.GetSpecificCharity(x => x.CharityId == LoggedInUser.CharityId); if (loggedInCharity == null) return RedirectTo.NonProfit.New(); return RedirectTo.Search.BoardMembers(); } } return View(vm); }
public ActionResult Login(LoginViewModel vm) { var encryptor = new Encryptor(); if (!String.IsNullOrEmpty(vm.BoardPassword)) vm.BoardPassword = encryptor.Encrypt(vm.BoardPassword); if (!String.IsNullOrWhiteSpace(vm.CharityPassword)) vm.CharityPassword = encryptor.Encrypt(vm.CharityPassword); if (ModelState.IsValid) { ActionResult result = null; string ticket = null; if (vm.Type == "board") { var boardMemberId = _boardMemberRepository.ValidateLogin(vm.BoardEmail, vm.BoardPassword); if (!boardMemberId.HasValue) { ModelState.AddModelError("BoardPassword", "Invalid login."); return View(vm); } ticket = _formsAuth.SignIn(vm.BoardEmail, UserAuthenticationType.Board, string.Empty, boardMemberId); var boardMember = _boardMemberRepository.GetBoardMember(boardMemberId.Value); if (boardMemberId == null) { result = RedirectTo.BoardMember.New(); } else { result = RedirectTo.Search.NonProfits(); } } else { var charityId = _charityRepository.ValidateLogin(vm.CharityUsername, vm.CharityPassword); if (string.IsNullOrWhiteSpace(charityId)) { ModelState.AddModelError("CharityPassword", "Invalid login."); return View(vm); } if (vm.CharityUsername == "61903") ticket = _formsAuth.SignIn(vm.CharityUsername, UserAuthenticationType.UberMegaSuperUltraUser, charityId, null); else ticket = _formsAuth.SignIn(vm.CharityUsername, UserAuthenticationType.Charity, charityId, null); var charity = _charityRepository.GetSpecificCharity(x => x.CharityId == charityId); if (charity == null) result = RedirectTo.NonProfit.New(); else { result = RedirectTo.Search.BoardMembers(); } } var cookie = new HttpCookie(FormsAuthFacade.COOKIE_NAME, ticket); cookie.Expires = DateTime.Now.AddDays(30); Response.Cookies.Add(cookie); return result; } return View(vm); }