예제 #1
0
 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"));
     }
 }
예제 #2
0
        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
                    }
                }
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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"));
        }