public ActionResult PharmacySelect(int pharmacy) { User.setPharmacy(pharmacy); if (pharmacy > -1) { using (var service = new PharmacistService()) { var pharmacist = service.GetWhere(PharmacistService.EmailCol == User.Email).FirstOrDefault(); var serializedPharmacist = new PPOKPrincipalSerializeModel(pharmacist, pharmacy); //serializedPharmacist.Pharmacy = User.Pharmacy; makeAuthTicket(serializedPharmacist); } return(RedirectToAction("Index", "LandingPage")); } else { using (var service = new SystemAdminService()) { var admin = service.GetWhere(SystemAdminService.EmailCol == User.Email).FirstOrDefault(); var serializedAdmin = new PPOKPrincipalSerializeModel(admin); serializedAdmin.Pharmacy = User.Pharmacy; makeAuthTicket(serializedAdmin); } return(RedirectToAction("Index", "SystemAdmin")); } }
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { if (FormsAuthentication.CookiesSupported == true) { if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) { try { //get the username FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value); JavaScriptSerializer serializer = new JavaScriptSerializer(); PPOKPrincipalSerializeModel serializeModel = serializer.Deserialize <PPOKPrincipalSerializeModel>(authTicket.UserData); PPOKPrincipal newUser = new PPOKPrincipal(serializeModel.Email); switch (serializeModel.Type) { case AccountTypes.Pharmacist: case AccountTypes.Admin: using (var service = new PharmacistService()) { newUser = new PPOKPrincipal(service.Get(serializeModel.Code), serializeModel.Pharmacy.Code); } break; case AccountTypes.Patient: using (var service = new PatientService()) { newUser = new PPOKPrincipal(service.Get(serializeModel.Code)); } break; case AccountTypes.System: using (var service = new SystemAdminService()) { newUser = new PPOKPrincipal(service.Get(serializeModel.Code)); } break; } HttpContext.Current.User = newUser; } catch (Exception ex) { Console.WriteLine(ex.Message); //somehting went wrong } } } }
private void makeAuthTicket(PPOKPrincipalSerializeModel user) { FormsAuthentication.SignOut(); JavaScriptSerializer serializer = new JavaScriptSerializer(); if (user.Pharmacy != null) { // this clears any circular references user.getPharmacy().AllJobs = null; user.getPharmacy().Patients = null; } string userData = serializer.Serialize(user); FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, user.Email, DateTime.Now, DateTime.Now.AddHours(Config.TokenDuration), false, userData); string encTicket = FormsAuthentication.Encrypt(authTicket); HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); Response.Cookies.Add(authCookie); }
public ActionResult Login(string email, string password) { if (PPOKPrincipal.IsValid(email, password)) { using (var PharmService = new PharmacistService()) using (var SysService = new SystemAdminService()) { Pharmacist pharmacist = PharmService.GetWhere(PharmacistService.EmailCol == email).FirstOrDefault(); SystemAdmin admin = SysService.GetWhere(SystemAdminService.EmailCol == email).FirstOrDefault(); var logins = new LoginModel(email); if (logins.pharmacyList.Count > 1) { if (admin != null) { makeAuthTicket(new PPOKPrincipalSerializeModel(admin)); } else { makeAuthTicket(new PPOKPrincipalSerializeModel(pharmacist)); } return(View("PharmacySelect", logins)); } else if (admin != null) { var serializedAdmin = new PPOKPrincipalSerializeModel(admin); makeAuthTicket(serializedAdmin); return(RedirectToAction("Index", "SystemAdmin")); } else if (pharmacist != null) { var serializedPharmacist = new PPOKPrincipalSerializeModel(pharmacist); makeAuthTicket(serializedPharmacist); return(RedirectToAction("Index", "LandingPage")); } } } ViewBag.Error = "Invalid username/password combination"; return(View("Index")); }