public static void Execute(HttpServerUtility server, HttpResponse response)
        {
            Exception exc = server.GetLastError();

            if (exc.GetType() == typeof(HttpException))
            {
                if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength"))
                {
                    return;
                }

                server.Transfer("HttpErrorPage.aspx");
            }
            else if (exc.GetType() == typeof(DinazorAuthorizationException))
            {
                RedirectDinazorResult.RedirectWithData(new DinazorResult()
                {
                    Status  = ResultStatus.Unauthorized,
                    Message = exc.Message
                });
            }

            Log.Error(exc);
            server.ClearError();
        }
Exemplo n.º 2
0
        public static void SessionExecute()
        {
            string authorizationUrl = "";

            var configurationManager   = IocManager.Instance.Resolve <IConfigurationManager>();
            var authorizationUrlResult = configurationManager.GetValue("AuthorizationUrl");

            if (authorizationUrlResult != null && authorizationUrlResult.Count > 0)
            {
                authorizationUrl = authorizationUrlResult[0];
                if (!string.IsNullOrEmpty(authorizationUrl))
                {
                    authorizationUrl = authorizationUrl.ToLower();
                }
            }
            else
            {
                Log.Error("No Authorization Url Found In DB");
            }

            var request = HttpContext.Current.Request;

            // authorization url control

            var url = request.Path.ToLower(new CultureInfo("en-US", false));

            url = url[url.Length - 1] == '/' ? url.Remove(url.Length - 1) : url;
            if (url.EndsWith(authorizationUrl))
            {
                return;
            }

            //Control thr URL if it needs Token or not

            var urlNoNeedTokenList = configurationManager.GetValue("UrlNoNeedToken");

            if (urlNoNeedTokenList != null && urlNoNeedTokenList.Count > 0)
            {
                foreach (var item in urlNoNeedTokenList)
                {
                    var reqUrl = item.Split(':')[0].ToLower();
                    var verb   = item.Split(':')[1];

                    if (url == reqUrl && request.HttpMethod.ToLower() == verb.ToLower())
                    {
                        return;
                    }
                }
            }

            var token = request.QueryString["token"];

            if (token == null)
            {
                RedirectDinazorResult.RedirectWithData(new DinazorResult()
                {
                    Status  = ResultStatus.Unauthorized,
                    Message = "Token information is missing"
                });
                return;
            }

            DinazorPrincipal.AuthenticateUser(token);

            var dinazorPrincipal = (DinazorPrincipal)HttpContext.Current.User;

            if (dinazorPrincipal == null || !dinazorPrincipal.Identity.IsAuthenticated)
            {
                RedirectDinazorResult.RedirectWithData(new DinazorResult()
                {
                    Status  = ResultStatus.SessionNotValid,
                    Message = $"Token information is wrong. token is {token}"
                });
            }
        }