diff --git a/src/Orchard.Web/Core/Common/Mvc/Html/AntiForgeryTokenExtensions.cs b/src/Orchard.Web/Core/Common/Mvc/Html/AntiForgeryTokenExtensions.cs deleted file mode 100644 index 6dff6a9c0..000000000 --- a/src/Orchard.Web/Core/Common/Mvc/Html/AntiForgeryTokenExtensions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Web.Mvc; -using Orchard.ContentManagement; -using Orchard.Core.Settings.Models; -using Orchard.Mvc.Html; -using Orchard.Settings; - -namespace Orchard.Core.Common.Mvc.Html { - public static class AntiForgeryTokenExtensions { - public static MvcHtmlString AntiForgeryTokenOrchard(this HtmlHelper htmlHelper) - { - var siteSalt = htmlHelper.Resolve().GetSiteSettings().ContentItem.As().Record.SiteSalt; - return htmlHelper.AntiForgeryToken(siteSalt); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Mvc/Html/BeginFormExtensions.cs b/src/Orchard.Web/Core/Common/Mvc/Html/BeginFormExtensions.cs deleted file mode 100644 index 490af896a..000000000 --- a/src/Orchard.Web/Core/Common/Mvc/Html/BeginFormExtensions.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using System.Web.Mvc; -using System.Web.Mvc.Html; -using System.Web.Routing; - -namespace Orchard.Core.Common.Mvc.Html { - public static class BeginFormExtensions { - public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper) - { - return htmlHelper.BeginFormAntiForgeryPost(htmlHelper.ViewContext.HttpContext.Request.RawUrl, FormMethod.Post, new RouteValueDictionary()); - } - //TODO: (erikpo) Uncomment when needed (not currently needed) - //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction) { - // return htmlHelper.BeginFormAntiForgeryPost(formAction, FormMethod.Post, new RouteValueDictionary()); - //} - //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod) { - // return htmlHelper.BeginFormAntiForgeryPost(formAction, formMethod, new RouteValueDictionary()); - //} - //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod, object htmlAttributes) { - // return htmlHelper.BeginFormAntiForgeryPost(formAction, formMethod, new RouteValueDictionary(htmlAttributes)); - //} - public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod, IDictionary htmlAttributes) - { - TagBuilder tagBuilder = new TagBuilder("form"); - - tagBuilder.MergeAttributes(htmlAttributes); - tagBuilder.MergeAttribute("action", formAction); - tagBuilder.MergeAttribute("method", HtmlHelper.GetFormMethodString(formMethod), true); - - htmlHelper.ViewContext.HttpContext.Response.Output.Write(tagBuilder.ToString(TagRenderMode.StartTag)); - - return new MvcFormAntiForgeryPost(htmlHelper); - } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Core/Common/Permissions.cs b/src/Orchard.Web/Core/Common/Permissions.cs index db49009fc..dcade7f79 100644 --- a/src/Orchard.Web/Core/Common/Permissions.cs +++ b/src/Orchard.Web/Core/Common/Permissions.cs @@ -4,17 +4,13 @@ using Orchard.Security.Permissions; namespace Orchard.Core.Common { public class Permissions : IPermissionProvider { public static readonly Permission ChangeOwner = new Permission { Name = "ChangeOwner", Description = "Change the owner of content items" }; - public static readonly Permission AccessAdmin = new Permission { Name = "AccessAdmin", Description = "Access the application admin area" }; public string PackageName { get { return "Common"; } } public IEnumerable GetPermissions() { - return new[] { - ChangeOwner, - AccessAdmin - }; + return new[] { ChangeOwner }; } } } diff --git a/src/Orchard.Web/Core/Orchard.Core.csproj b/src/Orchard.Web/Core/Orchard.Core.csproj index a7b515d17..d0d9add8d 100644 --- a/src/Orchard.Web/Core/Orchard.Core.csproj +++ b/src/Orchard.Web/Core/Orchard.Core.csproj @@ -61,11 +61,6 @@ - - - - - diff --git a/src/Orchard.Web/Core/Settings/Models/SiteSettings.cs b/src/Orchard.Web/Core/Settings/Models/SiteSettings.cs index 67bdec4be..80d0509c8 100644 --- a/src/Orchard.Web/Core/Settings/Models/SiteSettings.cs +++ b/src/Orchard.Web/Core/Settings/Models/SiteSettings.cs @@ -14,6 +14,12 @@ namespace Orchard.Core.Settings.Models { get { return Record.SiteName; } set { Record.SiteName = value; } } + public string SiteSalt { + get { return Record.SiteSalt; } + } + public string SiteUrl { + get { return Record.SiteUrl; } + } public string SuperUser { get { return Record.SuperUser; } set { Record.SuperUser = value; } diff --git a/src/Orchard.Web/Core/Web.config b/src/Orchard.Web/Core/Web.config index 0f82009b2..8bfa88317 100644 --- a/src/Orchard.Web/Core/Web.config +++ b/src/Orchard.Web/Core/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Blogs/Web.config b/src/Orchard.Web/Packages/Orchard.Blogs/Web.config index 2616786c3..b1c399e16 100644 --- a/src/Orchard.Web/Packages/Orchard.Blogs/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Blogs/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.CmsPages/Web.config b/src/Orchard.Web/Packages/Orchard.CmsPages/Web.config index 0f82009b2..8bfa88317 100644 --- a/src/Orchard.Web/Packages/Orchard.CmsPages/Web.config +++ b/src/Orchard.Web/Packages/Orchard.CmsPages/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Comments/Orchard.Comments.csproj b/src/Orchard.Web/Packages/Orchard.Comments/Orchard.Comments.csproj index 74286b125..e82617745 100644 --- a/src/Orchard.Web/Packages/Orchard.Comments/Orchard.Comments.csproj +++ b/src/Orchard.Web/Packages/Orchard.Comments/Orchard.Comments.csproj @@ -35,10 +35,6 @@ False ..\..\..\..\lib\joel.net.akismet\Joel.Net.Akismet.dll - - False - ..\..\Core\bin\Orchard.Core.dll - diff --git a/src/Orchard.Web/Packages/Orchard.Comments/Web.config b/src/Orchard.Web/Packages/Orchard.Comments/Web.config index e959ef64e..b4a872dbe 100644 --- a/src/Orchard.Web/Packages/Orchard.Comments/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Comments/Web.config @@ -76,7 +76,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Media/Web.config b/src/Orchard.Web/Packages/Orchard.Media/Web.config index e959ef64e..b4a872dbe 100644 --- a/src/Orchard.Web/Packages/Orchard.Media/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Media/Web.config @@ -76,7 +76,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj b/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj index c365f9925..ae769ef91 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj +++ b/src/Orchard.Web/Packages/Orchard.Roles/Orchard.Roles.csproj @@ -31,10 +31,6 @@ 4 - - False - ..\..\Core\bin\Orchard.Core.dll - diff --git a/src/Orchard.Web/Packages/Orchard.Roles/Web.config b/src/Orchard.Web/Packages/Orchard.Roles/Web.config index 0f82009b2..8bfa88317 100644 --- a/src/Orchard.Web/Packages/Orchard.Roles/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Roles/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Sandbox/Web.config b/src/Orchard.Web/Packages/Orchard.Sandbox/Web.config index 0f82009b2..8bfa88317 100644 --- a/src/Orchard.Web/Packages/Orchard.Sandbox/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Sandbox/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj index ecde3cb8d..56e9dcf4a 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj +++ b/src/Orchard.Web/Packages/Orchard.Tags/Orchard.Tags.csproj @@ -31,10 +31,6 @@ 4 - - False - ..\..\Core\bin\Orchard.Core.dll - diff --git a/src/Orchard.Web/Packages/Orchard.Tags/Web.config b/src/Orchard.Web/Packages/Orchard.Tags/Web.config index e959ef64e..b4a872dbe 100644 --- a/src/Orchard.Web/Packages/Orchard.Tags/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Tags/Web.config @@ -76,7 +76,6 @@ - diff --git a/src/Orchard.Web/Packages/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Packages/Orchard.Users/Orchard.Users.csproj index 77f26cc2e..764268622 100644 --- a/src/Orchard.Web/Packages/Orchard.Users/Orchard.Users.csproj +++ b/src/Orchard.Web/Packages/Orchard.Users/Orchard.Users.csproj @@ -31,10 +31,6 @@ 4 - - False - ..\..\Core\bin\Orchard.Core.dll - diff --git a/src/Orchard.Web/Packages/Orchard.Users/Web.config b/src/Orchard.Web/Packages/Orchard.Users/Web.config index 0f82009b2..8bfa88317 100644 --- a/src/Orchard.Web/Packages/Orchard.Users/Web.config +++ b/src/Orchard.Web/Packages/Orchard.Users/Web.config @@ -73,7 +73,6 @@ - diff --git a/src/Orchard.Web/Web.config b/src/Orchard.Web/Web.config index b48f82b45..7fbdfddaa 100644 --- a/src/Orchard.Web/Web.config +++ b/src/Orchard.Web/Web.config @@ -127,7 +127,6 @@ - diff --git a/src/Orchard.Web/Core/Common/Mvc/Filters/AdminFilter.cs b/src/Orchard/Mvc/Filters/AdminFilter.cs similarity index 74% rename from src/Orchard.Web/Core/Common/Mvc/Filters/AdminFilter.cs rename to src/Orchard/Mvc/Filters/AdminFilter.cs index bf45373ff..c8bdc068b 100644 --- a/src/Orchard.Web/Core/Common/Mvc/Filters/AdminFilter.cs +++ b/src/Orchard/Mvc/Filters/AdminFilter.cs @@ -1,13 +1,10 @@ using System.Globalization; using System.IO; using System.Web.Mvc; -using Orchard.ContentManagement; -using Orchard.Core.Settings.Models; -using Orchard.Mvc.Filters; using Orchard.Security; using Orchard.Settings; -namespace Orchard.Core.Common.Mvc.Filters { +namespace Orchard.Mvc.Filters { public class AdminFilter : FilterProvider, IActionFilter { private readonly IAuthorizer _authorizer; @@ -21,8 +18,7 @@ namespace Orchard.Core.Common.Mvc.Filters { public void OnActionExecuting(ActionExecutingContext filterContext) { - //todo: (heskew) get at the SiteUrl the "right" way. or is this the right way :| - var siteUrl = _siteService.GetSiteSettings().ContentItem.As().Record.SiteUrl; + var siteUrl = _siteService.GetSiteSettings().SiteUrl; //todo: (heskew) get at the admin path in a less hacky way if (filterContext.HttpContext.Request.RawUrl.StartsWith(Path.Combine(siteUrl, "admin").Replace("\\", "/"), true, CultureInfo.InvariantCulture) && !_authorizer.Authorize(Permissions.AccessAdmin, "Can't access the admin")) { diff --git a/src/Orchard.Web/Core/Common/Mvc/Filters/AntiForgeryAuthorizationFilter.cs b/src/Orchard/Mvc/Filters/AntiForgeryAuthorizationFilter.cs similarity index 73% rename from src/Orchard.Web/Core/Common/Mvc/Filters/AntiForgeryAuthorizationFilter.cs rename to src/Orchard/Mvc/Filters/AntiForgeryAuthorizationFilter.cs index 387f5f6f7..5aa3b7f05 100644 --- a/src/Orchard.Web/Core/Common/Mvc/Filters/AntiForgeryAuthorizationFilter.cs +++ b/src/Orchard/Mvc/Filters/AntiForgeryAuthorizationFilter.cs @@ -1,10 +1,7 @@ using System.Web.Mvc; -using Orchard.ContentManagement; -using Orchard.Core.Settings.Models; -using Orchard.Mvc.Filters; using Orchard.Settings; -namespace Orchard.Core.Common.Mvc.Filters { +namespace Orchard.Mvc.Filters { public class AntiForgeryAuthorizationFilter : FilterProvider, IAuthorizationFilter { private readonly ISiteService _siteService; @@ -16,7 +13,7 @@ namespace Orchard.Core.Common.Mvc.Filters { if (!(filterContext.HttpContext.Request.HttpMethod == "POST" && filterContext.RequestContext.HttpContext.Request.IsAuthenticated)) return; - var siteSalt = _siteService.GetSiteSettings().ContentItem.As().Record.SiteSalt; + var siteSalt = _siteService.GetSiteSettings().SiteSalt; ValidateAntiForgeryTokenAttribute validator = new ValidateAntiForgeryTokenAttribute { Salt = siteSalt }; validator.OnAuthorization(filterContext); diff --git a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs index 0a7c297d0..e8ea821f4 100644 --- a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs +++ b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs @@ -6,6 +6,7 @@ using System.Text; using System.Web.Mvc; using System.Web.Mvc.Html; using System.Web.Routing; +using Orchard.Settings; using Orchard.Utility; namespace Orchard.Mvc.Html { @@ -176,5 +177,46 @@ namespace Orchard.Mvc.Html { } #endregion + + #region BeginFormAntiForgeryPost + + public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper) { + return htmlHelper.BeginFormAntiForgeryPost(htmlHelper.ViewContext.HttpContext.Request.RawUrl, FormMethod.Post, new RouteValueDictionary()); + } + + //TODO: (erikpo) Uncomment when needed (not currently needed) + //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction) { + // return htmlHelper.BeginFormAntiForgeryPost(formAction, FormMethod.Post, new RouteValueDictionary()); + //} + //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod) { + // return htmlHelper.BeginFormAntiForgeryPost(formAction, formMethod, new RouteValueDictionary()); + //} + //public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod, object htmlAttributes) { + // return htmlHelper.BeginFormAntiForgeryPost(formAction, formMethod, new RouteValueDictionary(htmlAttributes)); + //} + + public static MvcForm BeginFormAntiForgeryPost(this HtmlHelper htmlHelper, string formAction, FormMethod formMethod, IDictionary htmlAttributes) { + TagBuilder tagBuilder = new TagBuilder("form"); + + tagBuilder.MergeAttributes(htmlAttributes); + tagBuilder.MergeAttribute("action", formAction); + tagBuilder.MergeAttribute("method", HtmlHelper.GetFormMethodString(formMethod), true); + + htmlHelper.ViewContext.HttpContext.Response.Output.Write(tagBuilder.ToString(TagRenderMode.StartTag)); + + return new MvcFormAntiForgeryPost(htmlHelper); + } + + #endregion + + #region AntiForgeryTokenOrchard + + public static MvcHtmlString AntiForgeryTokenOrchard(this HtmlHelper htmlHelper) + { + var siteSalt = htmlHelper.Resolve().GetSiteSettings().SiteSalt; + return htmlHelper.AntiForgeryToken(siteSalt); + } + + #endregion } } diff --git a/src/Orchard.Web/Core/Common/Mvc/Html/MvcFormAntiForgeryPost.cs b/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs similarity index 89% rename from src/Orchard.Web/Core/Common/Mvc/Html/MvcFormAntiForgeryPost.cs rename to src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs index b1b90b66d..bcc26fa91 100644 --- a/src/Orchard.Web/Core/Common/Mvc/Html/MvcFormAntiForgeryPost.cs +++ b/src/Orchard/Mvc/Html/MvcFormAntiForgeryPost.cs @@ -1,7 +1,7 @@ using System.Web.Mvc; using System.Web.Mvc.Html; -namespace Orchard.Core.Common.Mvc.Html { +namespace Orchard.Mvc.Html { public class MvcFormAntiForgeryPost : MvcForm { private readonly HtmlHelper _htmlHelper; diff --git a/src/Orchard/Orchard.csproj b/src/Orchard/Orchard.csproj index 315825ab6..ae213ed4a 100644 --- a/src/Orchard/Orchard.csproj +++ b/src/Orchard/Orchard.csproj @@ -184,8 +184,12 @@ + + + + diff --git a/src/Orchard/Permissions.cs b/src/Orchard/Permissions.cs new file mode 100644 index 000000000..232746c93 --- /dev/null +++ b/src/Orchard/Permissions.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Orchard.Security.Permissions; + +namespace Orchard { + public class Permissions : IPermissionProvider { + public static readonly Permission AccessAdmin = new Permission { Name = "AccessAdmin", Description = "Access the application admin area" }; + + public string PackageName { + get { return "Orchard"; } + } + + public IEnumerable GetPermissions() { + return new[] { AccessAdmin }; + } + } +} \ No newline at end of file diff --git a/src/Orchard/Settings/ISite.cs b/src/Orchard/Settings/ISite.cs index 10d6bcefe..17c9a7465 100644 --- a/src/Orchard/Settings/ISite.cs +++ b/src/Orchard/Settings/ISite.cs @@ -7,6 +7,8 @@ namespace Orchard.Settings { public interface ISite : IContent { string PageTitleSeparator { get; } string SiteName { get; } + string SiteSalt { get; } + string SiteUrl { get; } string SuperUser { get; } } }