public JsonResult GetPolicyList(string lang = null, PoliciesRequestType type = PoliciesRequestType.All) { string outputFormat = _workContext.GetContext().HttpContext.Request.Headers["OutputFormat"]; IEnumerable <PolicyTextInfoPart> policies = _policyServices.GetPolicies(lang); var orchardUsersSettings = _orchardServices.WorkContext.CurrentSite.As <UserRegistrationSettingsPart>(); var registrationPoliciesIds = new Int32[0]; if (orchardUsersSettings.PolicyTextReferences.Contains("{All}")) { registrationPoliciesIds = policies.Select(x => x.Id).ToArray(); } else { registrationPoliciesIds = orchardUsersSettings.PolicyTextReferences.Select(x => Convert.ToInt32(x.Replace("{", "").Replace("}", ""))).ToArray(); } if (type == PoliciesRequestType.ForRegistration) { policies = policies.Where(x => registrationPoliciesIds.Contains(x.Id)); } else if (type == PoliciesRequestType.NotForRegistration) { policies = policies.Where(x => !registrationPoliciesIds.Contains(x.Id)); } var jsonResult = ""; if (String.Equals(outputFormat, "LMNV", StringComparison.OrdinalIgnoreCase)) { jsonResult = _policyServices.PoliciesLMNVSerialization(policies); } else { jsonResult = _policyServices.PoliciesPureJsonSerialization(policies); } var serializer = new JavaScriptSerializer(); return(Json(serializer.DeserializeObject(jsonResult), JsonRequestBehavior.AllowGet)); }
public void OnActionExecuting(ActionExecutingContext filterContext) { bool isAdminService = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AdminServiceAttribute), false).Any(); var fullActionName = filterContext.Controller.GetType().FullName + "." + filterContext.ActionDescriptor.ActionName; if (_workContext.GetContext().CurrentUser != null && !allowedControllers.Contains(filterContext.Controller.GetType().FullName) && !allowedControllers.Contains(fullActionName) && !AdminFilter.IsApplied(filterContext.RequestContext) && !isAdminService) { var language = _workContext.GetContext().CurrentCulture; IEnumerable <PolicyTextInfoPart> neededPolicies = _userExtensionServices.GetUserLinkedPolicies(language); if (neededPolicies.Count() > 0) { var missingPolicies = MissingRegistrationPolices(); if (missingPolicies.Count() > 0) { if (filterContext.Controller.GetType().FullName == "Laser.Orchard.WebServices.Controllers.JsonController") { string data = _policyServices.PoliciesLMNVSerialization(neededPolicies.Where(w => missingPolicies.Any(a => a == w.Id))); filterContext.Result = new ContentResult { Content = data, ContentType = "application/json" }; } else if (filterContext.Controller.GetType().FullName == "Laser.Orchard.WebServices.Controllers.WebApiController") { string data = _policyServices.PoliciesPureJsonSerialization(neededPolicies.Where(w => missingPolicies.Any(a => a == w.Id))); filterContext.Result = new ContentResult { Content = data, ContentType = "application/json" }; } else { string outputFormat = _workContext.GetContext().HttpContext.Request.Headers["OutputFormat"]; if (String.Equals(outputFormat, "LMNV", StringComparison.OrdinalIgnoreCase)) { string data = _policyServices.PoliciesLMNVSerialization(neededPolicies.Where(w => missingPolicies.Any(a => a == w.Id))); Response response = _utilsServices.GetResponse(ResponseType.MissingPolicies, "", Newtonsoft.Json.JsonConvert.DeserializeObject(data)); filterContext.Result = new ContentResult { Content = Newtonsoft.Json.JsonConvert.SerializeObject(response), ContentType = "application/json" }; } else if (String.Equals(outputFormat, "PureJson", StringComparison.OrdinalIgnoreCase)) { string data = _policyServices.PoliciesPureJsonSerialization(neededPolicies.Where(w => missingPolicies.Any(a => a == w.Id))); Response response = _utilsServices.GetResponse(ResponseType.MissingPolicies, "", Newtonsoft.Json.JsonConvert.DeserializeObject(data)); filterContext.Result = new ContentResult { Content = Newtonsoft.Json.JsonConvert.SerializeObject(response), ContentType = "application/json" }; } else { var returnType = ((ReflectedActionDescriptor)filterContext.ActionDescriptor).MethodInfo.ReturnType; if (returnType == typeof(JsonResult)) { string data = _policyServices.PoliciesPureJsonSerialization(neededPolicies.Where(w => missingPolicies.Any(a => a == w.Id))); Response response = _utilsServices.GetResponse(ResponseType.MissingPolicies, "", Newtonsoft.Json.JsonConvert.DeserializeObject(data)); filterContext.Result = new ContentResult { Content = Newtonsoft.Json.JsonConvert.SerializeObject(response), ContentType = "application/json" }; } else { var encodedAssociatedPolicies = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Join(",", missingPolicies))); UrlHelper urlHelper = new UrlHelper(_httpContextAccessor.Current().Request.RequestContext); var url = urlHelper.Action("Index", "Policies", new { area = "Laser.Orchard.Policy", lang = language, policies = encodedAssociatedPolicies, returnUrl = _httpContextAccessor.Current().Request.RawUrl }); filterContext.Result = new RedirectResult(url); } } } } } } return; }