コード例 #1
0
ファイル: ModalControl.cs プロジェクト: ch604aru/ProviderBase
        protected override void OnLoad(EventArgs e)
        {
            string currentPage        = "";
            string currentWebsiteHost = "";

            this.Page = (Page)this.Context.Handler;

            currentWebsiteHost = this.Context.Request.Url.Authority;

            this.Website = DataProvider.SelectSingleFull <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (this.Website == null || this.Website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    this.Website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    return;
                }
            }

            currentPage          = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", "");
            this.WebsitePageList = DataProvider.SelectOrDefault <WebsitePage>(new WebsitePage()
            {
                PageName  = currentPage,
                WebsiteID = this.Website.WebsiteID
            }, this.Website.WebsiteConnection.ConnectionString, "PageName");
        }
コード例 #2
0
ファイル: BaseHandler.cs プロジェクト: ch604aru/ProviderBase
        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback callBack, object extraData)
        {
            ProviderFramework providerFramework = new ProviderFramework();

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string currentWebsiteHost       = "";
            int    userID = 0;

            this.Tracking = new Tracking();
            this.Tracking.AssemblyName = Assembly.GetExecutingAssembly().GetName().Name;
            this.Tracking.AssemblyType = this.GetType().FullName;

            this.AjaxResult = new AjaxResult(callBack, context, extraData);
            this.Context    = context;

            currentWebsiteHost = this.Context.Request.Url.Authority;

            this.Website = DataProvider.SelectSingleFull <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (this.Website == null || this.Website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    this.Website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    callBack(this.AjaxResult);
                    return(this.AjaxResult);
                }
            }

            this.RequestParameters = ProviderBase.Framework.Utility.GetQueryAndFormValues();
            this.CommandRequest    = ProviderBase.Framework.Utility.GetQueryValue <string>("Command", "");

            if (Int32.TryParse(this.Context.User.Identity.Name, out userID) == true)
            {
                this.User = ProviderBase.Data.Providers.DataProvider.SelectSingle <User>(new User()
                {
                    UserID = userID
                }, this.Website.WebsiteConnection.ConnectionString);
            }
            else
            {
                this.User = new User();
            }

            this.Tracking.MethodName  = CommandRequest;
            this.Tracking.UserID      = this.User.UserID;
            this.Tracking.RequestData = serializer.Serialize(ProviderBase.Framework.Utility.GetQueryAndFormValues());

            this.ProcessRequest(context);

            callBack(this.AjaxResult);

            return(this.AjaxResult);
        }
コード例 #3
0
        protected void URLRewrite(object sender, EventArgs e)
        {
            HttpApplication app     = (HttpApplication)sender;
            Website         website = null;

            string currentWebsiteHost = "";

            currentWebsiteHost = app.Request.Url.Authority;

            website = DataProvider.SelectSingle <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (website == null || website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    return;
                }
            }

            string pageURL = "";

            string[]           pageURLSplit    = null;
            List <WebsitePage> websitePageList = null;

            websitePageList = DataProvider.Select <WebsitePage>(new WebsitePage()
            {
                WebsiteID = website.WebsiteID
            }, website.WebsiteConnection.ConnectionString);

            pageURLSplit = app.Request.CurrentExecutionFilePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

            if (pageURLSplit?.Count() > 0)
            {
                pageURL = pageURLSplit[0];
            }
            else
            {
                pageURL = "Default.aspx";
            }

            if (websitePageList.Exists(x => x.PageName.ToLower() == pageURL.ToLower()) == false)
            {
                return;
            }

            WebsitePage websitePage = null;

            websitePage = websitePageList.Where(x => x.PageName.ToLower() == pageURL.ToLower()).FirstOrDefault <WebsitePage>();

            if (websitePage != null && websitePage.WebsitePageID > 0)
            {
                string pageURLPath = "";

                pageURLPath = "/" + pageURL + ".aspx";

                if (pageURLSplit.Count() > 1)
                {
                    pageURLPath += "?FirstValue=" + pageURLSplit[1];

                    if (app.Request.QueryString.Count > 0)
                    {
                        pageURLPath += "&" + Utility.ToQueryString(app.Request.QueryString);
                    }
                }

                app.Context.RewritePath(pageURLPath);
            }
            else
            {
                app.Response.Redirect("/");
            }
        }
コード例 #4
0
        protected override void OnLoad(EventArgs e)
        {
            string              currentWebsiteHost            = "";
            WebsitePage         websitePageItem               = null;
            WebsitePageSizeType websitePageSizeType           = WebsitePageSizeType.Desktop;
            Provider            fiftyOneDegreesMobileProvider = null;

            this.Page = (Page)this.Context.Handler;

            currentWebsiteHost = this.Context.Request.Url.Authority;

            this.Website = DataProvider.SelectSingleFull <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (this.Website == null || this.Website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    this.Website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    return;
                }
            }

            this.CurrentPage = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", "");

            fiftyOneDegreesMobileProvider = new Provider(StreamFactory.Create(this.Context.Server.MapPath("App_Data/51Degrees.dat")));

            if (fiftyOneDegreesMobileProvider != null)
            {
                Match fiftyOneDegreesMatch = null;

                fiftyOneDegreesMatch = fiftyOneDegreesMobileProvider.Match(this.Context.Request.UserAgent);

                if (fiftyOneDegreesMatch != null)
                {
                    Values fiftyOneDegreesValuesIsMobile = null;

                    fiftyOneDegreesValuesIsMobile = fiftyOneDegreesMatch["IsMobile"];

                    if (fiftyOneDegreesValuesIsMobile != null)
                    {
                        bool isMobile = false;

                        bool.TryParse(fiftyOneDegreesValuesIsMobile.ToString(), out isMobile);

                        websitePageSizeType = (isMobile) ? WebsitePageSizeType.Mobile : WebsitePageSizeType.Desktop;
                    }
                }
            }

            websitePageItem = DataProvider.SelectSingle(new WebsitePage()
            {
                PageName              = this.CurrentPage,
                WebsiteID             = this.Website.WebsiteID,
                WebsitePageSizeTypeID = websitePageSizeType
            }, this.Website.WebsiteConnection.ConnectionString);

            if (websitePageItem != null && websitePageItem.WebsitePageID > 0)
            {
                this.WebsitePage = DataProvider.SelectSingleOrDefaultFull(new WebsitePage()
                {
                    PageName  = this.CurrentPage,
                    WebsiteID = this.Website.WebsiteID,
                    WebsitePageContentTypeID = websitePageItem.WebsitePageContentTypeID,
                    WebsitePageSizeTypeID    = websitePageSizeType
                }, this.Website.WebsiteConnection.ConnectionString, "PageName");

                this.LoadPageHeader();
            }
            else
            {
                throw new Exception("No page data found");
            }
        }
コード例 #5
0
        protected void AuthenticateRequest(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;

            string currentWebsiteHost = "";

            currentWebsiteHost = app.Request.Url.Authority;

            this.Website = DataProvider.SelectSingle <Website>(new Website()
            {
                WebsiteHost = currentWebsiteHost
            });

            if (this.Website == null || this.Website.WebsiteID == 0)
            {
                WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias()
                {
                    WebsiteAliasHost = currentWebsiteHost
                });

                if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0)
                {
                    this.Website = DataProvider.SelectSingleFull <Website>(new Website()
                    {
                        WebsiteID = websiteAlias.WebsiteID
                    });
                }
                else
                {
                    return;
                }
            }

            string pageURL    = "";
            string handlerURL = "";

            string[] pageURLSplit = null;

            this.WebsitePageList = DataProvider.Select <WebsitePage>(new WebsitePage()
            {
                WebsiteID = this.Website.WebsiteID
            }, this.Website.WebsiteConnection.ConnectionString);

            pageURLSplit = app.Request.CurrentExecutionFilePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);

            if (pageURLSplit?.Count() > 0)
            {
                pageURL = pageURLSplit[0];
            }
            else
            {
                pageURL = "Default.aspx";
            }

            pageURL    = pageURL.Replace(".aspx", "");
            handlerURL = (pageURL.Contains('.')) ? "." + pageURL.Split('.').Last() : "";

            this.WebsiteHandlerList = DataProvider.Select <WebsiteHandler>(new WebsiteHandler()
            {
                WebsiteID = this.Website.WebsiteID
            }, this.Website.WebsiteConnection.ConnectionString);

            if (this.WebsitePageList.Exists(x => x.PageName.ToLower() == pageURL.ToLower()) == false &&
                this.WebsiteHandlerList.Exists(x => x.HandlerURL.ToLower() == handlerURL.ToLower()) == false)
            {
                return;
            }
            else
            {
                bool releventRequest     = false;
                bool authenticateRequest = true;

                WebsitePage websitePage = null;

                websitePage = this.WebsitePageList.Where(x => x.PageName.ToLower() == pageURL.ToLower()).FirstOrDefault <WebsitePage>();

                if (websitePage?.WebsitePageID > 0)
                {
                    releventRequest     = true;
                    authenticateRequest = websitePage.Authenticate;
                    this.PageRequest    = true;
                }
                else
                {
                    WebsiteHandler websiteHandler = null;

                    websiteHandler = this.WebsiteHandlerList.Where(x => x.HandlerURL.ToLower() == handlerURL.ToLower()).FirstOrDefault <WebsiteHandler>();

                    if (websiteHandler?.WebsiteHandlerID > 0)
                    {
                        releventRequest     = true;
                        authenticateRequest = websiteHandler.Authenticate;
                        this.PageRequest    = false;
                    }
                }

                if (releventRequest)
                {
                    // websitePage
                    if (app.Request.Cookies["ProviderBaseAuthentication"] != null)
                    {
                        string providerBaseAuthenticationHmac  = "";
                        string providerBaseAuthenticationToken = "";

                        if (app.Request.Cookies["ProviderBaseAuthentication"]["Hmac"] != null)
                        {
                            providerBaseAuthenticationHmac = app.Request.Cookies["ProviderBaseAuthentication"]["Hmac"];
                        }

                        if (app.Request.Cookies["ProviderBaseAuthentication"]["Token"] != null)
                        {
                            providerBaseAuthenticationToken = app.Request.Cookies["ProviderBaseAuthentication"]["Token"];
                        }

                        if (string.IsNullOrEmpty(providerBaseAuthenticationHmac) == false && string.IsNullOrEmpty(providerBaseAuthenticationToken) == false)
                        {
                            string token = "";

                            token = ProviderBase.Data.Entities.Encryption.DecryptString(providerBaseAuthenticationToken);

                            if (string.IsNullOrEmpty(token) == false)
                            {
                                string hmac = "";

                                hmac = ProviderBase.Data.Entities.Encryption.HashHMAC(token);

                                if (hmac == providerBaseAuthenticationHmac)
                                {
                                    if (token.Contains("|"))
                                    {
                                        string   user               = "";
                                        string   expiry             = "";
                                        string[] tokenSplit         = token.Split('|');
                                        long     expiryMilliseconds = 0;

                                        user   = tokenSplit[0];
                                        expiry = tokenSplit[1];

                                        if (long.TryParse(expiry, out expiryMilliseconds))
                                        {
                                            DateTime expiryDate = new DateTime(1970, 1, 1);

                                            expiryDate.AddMilliseconds(expiryMilliseconds);

                                            if (expiryDate < DateTime.Now)
                                            {
                                                GenericIdentity identitiy = new GenericIdentity(user);
                                                SetPrinciple(new GenericPrincipal(identitiy, null));

                                                // Add 20 minutes timeout
                                                token = user + "|" + (long)(DateTime.Now.AddMinutes(20) - new DateTime(1970, 1, 1)).TotalMilliseconds;
                                                hmac  = ProviderBase.Data.Entities.Encryption.HashHMAC(token);
                                                token = ProviderBase.Data.Entities.Encryption.EncryptString(token);

                                                app.Response.Cookies["ProviderBaseAuthentication"]["Hmac"]  = hmac;
                                                app.Response.Cookies["ProviderBaseAuthentication"]["Token"] = token;

                                                return; // Authorised
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (authenticateRequest)
                    {
                        app.Response.StatusCode = 401; // Unauthorised
                    }
                }
                else
                {
                    app.Response.StatusCode = 401; // Unauthorised
                }
            }
        }