public async Task <ActionResult> DoctorLogin(LoginRegisterViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } var result = await SignInManager.PasswordSignInAsync(model.LoginViewModel.Email, model.LoginViewModel.Password, model.LoginViewModel.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: { //var userId = HttpContext.User.Identity.GetUserId(); string userId = UserManager.FindByName(model.LoginViewModel.Email)?.Id; SessionHandler.UserName = model.LoginViewModel.Email; SessionHandler.Password = model.LoginViewModel.Password; SessionHandler.UserId = userId; var objRepo = new DoctorRepository(); var doctor = objRepo.GetByUserId(userId); if (doctor == null) { ModelState.AddModelError("", "Invalid login attempt."); ViewBag.ModelError = "Invalid Username or Password."; return(View(model)); } if (doctor.status == null || !((bool)doctor.status)) { ModelState.AddModelError("", "Account review is in progress. You can login after approval."); ViewBag.ModelError = "Account review is in progress. You can login after approval."; return(View(model)); } var userModel = new UserInfoModel(); userModel.Id = doctor.doctorID; userModel.Email = doctor.email; userModel.FirstName = doctor.firstName; userModel.LastName = doctor.lastName; userModel.userId = doctor.userId; userModel.title = doctor.title; userModel.timeZone = doctor.timeZone; userModel.timeZoneOffset = doctor.timeZoneoffset; userModel.role = doctor.role; userModel.iOSToken = doctor.iOSToken; userModel.AndroidToken = doctor.AndroidToken; SessionHandler.UserInfo = userModel; SessionHandler.ProfilePhoto = doctor.doctorID.ToString() + ".png"; if (doctor.active == null || (bool)doctor.active) { //return RedirectToAction("DoctorTimings", "Doctor"); return(RedirectToAction("Index", "DoctorAppointment")); } } return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid Username or Password."); ViewBag.ModelError = "Invalid Username or Password."; return(View(model)); } }
public async Task <ActionResult> Questions(string email, string code) { var user = await UserManager.FindByNameAsync(email); ForgotPasswordCodeModel.Token = code; var objModel = new SecretQuestionModel(); objModel.Email = user.UserName; var roles = UserManager.GetRoles(user.Id); Random rnd = new Random(); int caseSwitch = rnd.Next(1, 4); if (roles.Contains("Patient")) { PatientRepository objRepo = new PatientRepository(); var resultAdd = objRepo.GetByUserId(user.Id); switch (caseSwitch) { case 1: objModel.SecretQuestion = resultAdd.secretQuestion1; objModel.SecretAnswerHidden = resultAdd.secretAnswer1; break; case 2: objModel.SecretQuestion = resultAdd.secretQuestion2; objModel.SecretAnswerHidden = resultAdd.secretAnswer2; break; default: objModel.SecretQuestion = resultAdd.secretQuestion3; objModel.SecretAnswerHidden = resultAdd.secretAnswer3; break; } if (objModel.SecretQuestion == null) { if (resultAdd.secretQuestion1 != null) { objModel.SecretQuestion = resultAdd.secretQuestion1; objModel.SecretAnswerHidden = resultAdd.secretAnswer1; } if (resultAdd.secretQuestion2 != null) { objModel.SecretQuestion = resultAdd.secretQuestion2; objModel.SecretAnswerHidden = resultAdd.secretAnswer2; } if (resultAdd.secretQuestion3 != null) { objModel.SecretQuestion = resultAdd.secretQuestion3; objModel.SecretAnswerHidden = resultAdd.secretAnswer3; } } } else if (roles.Contains("Doctor")) { DoctorRepository objRepo = new DoctorRepository(); var resultAdd = objRepo.GetByUserId(user.Id); switch (caseSwitch) { case 1: objModel.SecretQuestion = resultAdd.secretQuestion1; objModel.SecretAnswerHidden = resultAdd.secretAnswer1; break; case 2: objModel.SecretQuestion = resultAdd.secretQuestion2; objModel.SecretAnswerHidden = resultAdd.secretAnswer2; break; default: objModel.SecretQuestion = resultAdd.secretQuestion3; objModel.SecretAnswerHidden = resultAdd.secretAnswer3; break; } if (objModel.SecretQuestion == null) { if (resultAdd.secretQuestion1 != null) { objModel.SecretQuestion = resultAdd.secretQuestion1; objModel.SecretAnswerHidden = resultAdd.secretAnswer1; } if (resultAdd.secretQuestion2 != null) { objModel.SecretQuestion = resultAdd.secretQuestion2; objModel.SecretAnswerHidden = resultAdd.secretAnswer2; } if (resultAdd.secretQuestion3 != null) { objModel.SecretQuestion = resultAdd.secretQuestion3; objModel.SecretAnswerHidden = resultAdd.secretAnswer3; } } } if (objModel.SecretQuestion == null) { ViewBag.ErrorMessage = "Sorry! User does not setup his recovery secret questions."; } return(View("ForgotPasswordConfirmation", objModel)); }
public async Task <ActionResult> Login(LoginRegisterViewModel model, string returnUrl) { //var IsPatient = (bool)ViewBag.IsPatient; if (!ModelState.IsValid) { return(View(model)); } //var strContent = JsonConvert.SerializeObject(model); //var response = ApiConsumerHelper.PostData("api/Account/Login", strContent); //var resultTest = JsonConvert.DeserializeObject<SignInStatus>(response); // This doen't count login failures towards lockout only two factor authentication // To enable password failures to trigger lockout, change to shouldLockout: true var result = await SignInManager.PasswordSignInAsync(model.LoginViewModel.Email, model.LoginViewModel.Password, model.LoginViewModel.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: { //var userId = HttpContext.User.Identity.GetUserId(); string userId = UserManager.FindByName(model.LoginViewModel.Email)?.Id; SessionHandler.UserName = model.LoginViewModel.Email; SessionHandler.Password = model.LoginViewModel.Password; SessionHandler.UserId = userId; var roles = UserManager.GetRoles(userId); if (roles.Contains("Doctor")) { var objRepo = new DoctorRepository(); var doctor = objRepo.GetByUserId(userId); var userModel = new UserInfoModel(); userModel.Id = doctor.doctorID; userModel.Email = doctor.email; userModel.FirstName = doctor.firstName; userModel.LastName = doctor.lastName; userModel.userId = doctor.userId; userModel.title = doctor.title; userModel.timeZoneOffset = doctor.timeZoneoffset; userModel.role = doctor.role; userModel.iOSToken = doctor.iOSToken; userModel.AndroidToken = doctor.AndroidToken; SessionHandler.UserInfo = userModel; if (doctor.picture != null && doctor.picture.Count() > 0) { SessionHandler.ProfilePhoto = Encoding.ASCII.GetString(doctor.picture); } if (doctor.active == null || (bool)doctor.active) { return(RedirectToAction("DoctorTimings", "Doctor")); } } else if (roles.Contains("Patient")) { var objRepo = new PatientRepository(); var patient = objRepo.GetByUserId(userId); var userModel = new UserInfoModel(); userModel.Id = patient.patientID; userModel.Email = patient.email; userModel.FirstName = patient.firstName; userModel.LastName = patient.lastName; userModel.userId = patient.userId; userModel.title = patient.title; userModel.timeZoneOffset = patient.timeZoneoffset; userModel.role = patient.role; userModel.iOSToken = patient.iOSToken; userModel.AndroidToken = patient.AndroidToken; SessionHandler.UserInfo = userModel; if (patient.active == null || (bool)patient.active) { return(RedirectToAction("Index", "Patient")); } } else if (roles.Contains("Admin")) { var user = await UserManager.FindAsync(model.LoginViewModel.Email, model.LoginViewModel.Password); Session["LogedUserID"] = model.LoginViewModel.Email; Session["LogedUserFullname"] = user.FirstName + " " + user.LastName; return(RedirectToAction("Default", "Admin")); } } return(RedirectToLocal(returnUrl)); case SignInStatus.LockedOut: return(View("Lockout")); case SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid login attempt."); return(View(model)); } }