diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Module.txt b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Module.txt new file mode 100644 index 000000000..65f2fafdc --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Module.txt @@ -0,0 +1,11 @@ +name: MultiTenancy +antiforgery: enabled +author: The Orchard Team +website: http://orchardproject.net +version: 0.5.0 +orchardversion: 0.5.0 +description: The multi-tenancy module enables multiple Orchard sites to run in isolation inside of a single web application, improving site density on a single server or hosted account. +features: + Orchard.MultiTenancy: + Description: Configure multiple site tenants. + Category: Hosting diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj index e3fb3aa81..5cfd49cf0 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Orchard.MultiTenancy.csproj @@ -83,13 +83,13 @@ - - - - - - - + + + + + + + diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantAddViewModel.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantAddViewModel.cs index 72c677dc2..1f2d88524 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantAddViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantAddViewModel.cs @@ -1,9 +1,8 @@ using System.ComponentModel.DataAnnotations; using Orchard.MultiTenancy.Annotations; -using Orchard.Mvc.ViewModels; namespace Orchard.MultiTenancy.ViewModels { - public class TenantAddViewModel : BaseViewModel { + public class TenantAddViewModel { [Required] public string Name { get; set; } public string RequestUrlHost { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantEditViewModel.cs index b0a2edfa6..ed0847ba7 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantEditViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantEditViewModel.cs @@ -1,11 +1,9 @@ -using System; -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using Orchard.Environment.Configuration; using Orchard.MultiTenancy.Annotations; -using Orchard.Mvc.ViewModels; namespace Orchard.MultiTenancy.ViewModels { - public class TenantEditViewModel : BaseViewModel { + public class TenantEditViewModel { [Required] public string Name { get; set; } public string RequestUrlHost { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantsIndexViewModel.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantsIndexViewModel.cs index 4d9d2e705..e7c9d6c44 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantsIndexViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/ViewModels/TenantsIndexViewModel.cs @@ -1,9 +1,8 @@ using System.Collections.Generic; using Orchard.Environment.Configuration; -using Orchard.Mvc.ViewModels; namespace Orchard.MultiTenancy.ViewModels { - public class TenantsIndexViewModel : BaseViewModel { + public class TenantsIndexViewModel { public IEnumerable TenantSettings { get; set; } } } diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx deleted file mode 100644 index fba1cae82..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx +++ /dev/null @@ -1,47 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.Mvc.Html"%> -<%@ Import Namespace="Orchard.MultiTenancy.ViewModels"%> -

<%: Html.TitleForPage(T("Add New Tenant").ToString()) %>

-<%using (Html.BeginFormAntiForgeryPost()) { %> - <%: Html.ValidationSummary() %> -
-
- - -
-
- - - <%: T("Example: If host is 'orchardproject.net', the tenant site URL is 'http://orchardproject.net/'") %> -
-
-
- <%: T("Database Setup") %> -
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "", new { id = "tenantDatabaseOption" })%> - -
-
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%> - -
-
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%> - -
- - - <%: Html.EditorFor(svm => svm.DatabaseConnectionString)%> - <%: T("Example:") %> <%: T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password") %> - - - - <%: Html.EditorFor(svm => svm.DatabaseTablePrefix)%> - -
-
-
-
- " /> -
- <% } %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.cshtml new file mode 100644 index 000000000..3bc738332 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.cshtml @@ -0,0 +1,46 @@ +@model Orchard.MultiTenancy.ViewModels.TenantAddViewModel + +

@Html.TitleForPage(T("Add New Tenant").ToString())

+@using (Html.BeginFormAntiForgeryPost()) { + @Html.ValidationSummary() +
+
+ + +
+
+ + + @T("Example: If host is 'orchardproject.net', the tenant site URL is 'http://orchardproject.net/'") +
+
+
+ @T("Database Setup") +
+ @Html.RadioButtonFor(svm => svm.DataProvider, "", new { id = "tenantDatabaseOption" }) + +
+
+ @Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" }) + +
+
+ @Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" }) + +
+ + + @Html.EditorFor(svm => svm.DatabaseConnectionString) + @T("Example:") @T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password") + + + + @Html.EditorFor(svm => svm.DatabaseTablePrefix) + +
+
+
+
+ +
+ } diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.ascx deleted file mode 100644 index a076e20f0..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.ascx +++ /dev/null @@ -1,6 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.Environment.Configuration" %> -<% using(Html.BeginFormAntiForgeryPost(Url.Action("enable", new {area = "Orchard.MultiTenancy"}), FormMethod.Post, new {@class = "inline link"})) { %> -<%: Html.HiddenFor(ss => ss.Name) %> -<% - } %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.cshtml new file mode 100644 index 000000000..2a6d4efbc --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForDisabled.cshtml @@ -0,0 +1,7 @@ +@model Orchard.Environment.Configuration.ShellSettings +@using Orchard.MultiTenancy.Extensions + +@using(Html.BeginFormAntiForgeryPost(Url.Action("enable", new {area = "Orchard.MultiTenancy"}), FormMethod.Post, new {@class = "inline link"})) { + @Html.HiddenFor(ss => ss.Name) + +} diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.ascx deleted file mode 100644 index 26b5096f4..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.ascx +++ /dev/null @@ -1,3 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.Environment.Configuration" %> -<%: Html.ActionLink(T("Make Valid*").ToString(), "_setup", new {tenantName = Model.Name, area = "Orchard.MultiTenancy"}) %> diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.cshtml new file mode 100644 index 000000000..f7b1b22ed --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForInvalid.cshtml @@ -0,0 +1,4 @@ +@model Orchard.Environment.Configuration.ShellSettings +@using Orchard.MultiTenancy.Extensions + +@Html.ActionLink(T("Make Valid*").ToString(), "_setup", new {tenantName = Model.Name, area = "Orchard.MultiTenancy"}) diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.ascx deleted file mode 100644 index 683963c25..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.ascx +++ /dev/null @@ -1,6 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.Environment.Configuration" %> -<% using(Html.BeginFormAntiForgeryPost(Url.Action("disable", new {area = "Orchard.MultiTenancy"}), FormMethod.Post, new {@class = "inline link"})) { %> -<%: Html.HiddenFor(ss => ss.Name) %> -<% - } %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.cshtml new file mode 100644 index 000000000..ef3ceaed0 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForRunning.cshtml @@ -0,0 +1,7 @@ +@model Orchard.Environment.Configuration.ShellSettings +@using Orchard.MultiTenancy.Extensions + +@using(Html.BeginFormAntiForgeryPost(Url.Action("disable", new {area = "Orchard.MultiTenancy"}), FormMethod.Post, new {@class = "inline link"})) { + @Html.HiddenFor(ss => ss.Name) + +} diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.ascx deleted file mode 100644 index 445be2786..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.ascx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.MultiTenancy.Extensions"%> -<%@ Import Namespace="Orchard.Mvc.Html"%> -<%@ Import Namespace="Orchard.Environment.Configuration" %> -<%: Html.Link(T("Set Up").ToString(), Url.Tenant(Model))%> diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.cshtml new file mode 100644 index 000000000..1031123c8 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/DisplayTemplates/ActionsForUninitialized.cshtml @@ -0,0 +1,4 @@ +@model Orchard.Environment.Configuration.ShellSettings +@using Orchard.MultiTenancy.Extensions + +@Html.Link(T("Set Up").ToString(), Url.Tenant(Model)) diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx deleted file mode 100644 index 077311a3f..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx +++ /dev/null @@ -1,49 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.Environment.Configuration" %> -<%@ Import Namespace="Orchard.Mvc.Html"%> -<%@ Import Namespace="Orchard.MultiTenancy.ViewModels"%> -

<%: Html.TitleForPage(T("Edit Tenant").ToString()) %>

-<%using (Html.BeginFormAntiForgeryPost()) { %> - <%: Html.ValidationSummary() %> -
-
-

<%: Model.Name %>

-
-
- - <%: Html.TextBoxFor(m => m.RequestUrlHost, new {@class = "textMedium"}) %> - <%: T("Example: If host is \"orchardproject.net\", the tenant site URL is \"http://orchardproject.net/\"") %> -
-
-
- <%: T("Database Setup") %><% - if (Model.State.CurrentState != TenantState.State.Uninitialized) { %> -
<%: T("Warning: If you don't know what you're doing you *will* (likely) send this tenant into a downward spiral of irrecoverable disrepair. Have a nice day.")%>
<% - } else { %> -
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "", new { id = "tenantDatabaseOption" })%> - -
<% - } %> -
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%> - -
-
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%> - - - - <%: Html.TextBoxFor(svm => svm.DatabaseConnectionString, new {@class = "large text"})%> - <%: T("Example:") %>
<%: T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password") %>
-
- - - <%: Html.EditorFor(svm => svm.DatabaseTablePrefix)%> - -
-
-
- " /> -
- <% } %> \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.cshtml new file mode 100644 index 000000000..72e186a12 --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.cshtml @@ -0,0 +1,48 @@ +@model Orchard.MultiTenancy.ViewModels.TenantEditViewModel +@using Orchard.Environment.Configuration + +

@Html.TitleForPage(T("Edit Tenant").ToString())

+@using (Html.BeginFormAntiForgeryPost()) { + @Html.ValidationSummary() +
+
+

@Model.Name

+
+
+ + @Html.TextBoxFor(m => m.RequestUrlHost, new {@class = "textMedium"}) + @T("Example: If host is \"orchardproject.net\", the tenant site URL is \"http://orchardproject.net/\"") +
+
+
+ @T("Database Setup") + @if (Model.State.CurrentState != TenantState.State.Uninitialized) { +
@T("Warning: If you don't know what you're doing you *will* (likely) send this tenant into a downward spiral of irrecoverable disrepair. Have a nice day.")
+ } else { +
+ @Html.RadioButtonFor(svm => svm.DataProvider, "", new { id = "tenantDatabaseOption" }) + +
+ } +
+ @Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" }) + +
+
+ @Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" }) + + + + @Html.TextBoxFor(svm => svm.DatabaseConnectionString, new {@class = "large text"}) + @T("Example:")
@T("Data Source=sqlServerName;Initial Catalog=dbName;Persist Security Info=True;User ID=userName;Password=password")
+
+ + + @Html.EditorFor(svm => svm.DatabaseTablePrefix) + +
+
+
+ +
+} diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx deleted file mode 100644 index 49f0db3b3..000000000 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.ascx +++ /dev/null @@ -1,33 +0,0 @@ -<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl" %> -<%@ Import Namespace="Orchard.MultiTenancy.Extensions" %> -<%@ Import Namespace="Orchard.Mvc.Html"%> -<%@ Import Namespace="Orchard.MultiTenancy.ViewModels"%> -<%Html.RegisterStyle("admin.css"); %> -

<%: Html.TitleForPage(T("List of Site's Tenants").ToString())%>

-
<%: Html.ActionLink(T("Add a Tenant").ToString(), "Add", new {area = "Orchard.MultiTenancy"}, new { @class = "button primaryAction" })%>
-
    <% - foreach (var tenant in Model.TenantSettings) { %> -
  • -
    -
    -

    <%: tenant.Name %><% - if (!string.IsNullOrEmpty(tenant.RequestUrlHost)) { - %> - <%: Html.Link(Url.Tenant(tenant), Url.Tenant(tenant))%><% - } %>

    -
    - -
    -
  • <% - } %> -
\ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.cshtml b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.cshtml new file mode 100644 index 000000000..3b630d40b --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Index.cshtml @@ -0,0 +1,30 @@ +@model Orchard.MultiTenancy.ViewModels.TenantsIndexViewModel +@using Orchard.MultiTenancy.Extensions + +@{ + Html.RegisterStyle("admin.css"); +} + +

@Html.TitleForPage(T("List of Site's Tenants").ToString())

+
@Html.ActionLink(T("Add a Tenant").ToString(), "Add", new {area = "Orchard.MultiTenancy"}, new { @class = "button primaryAction" })
+
    + @foreach (var tenant in Model.TenantSettings) { +
  • +
    +
    +

    @tenant.Name + @if (!string.IsNullOrEmpty(tenant.RequestUrlHost)) { + - @Html.Link(Url.Tenant(tenant), Url.Tenant(tenant)) + }

    +
    + +
    +
  • + } +
diff --git a/src/Orchard.sln b/src/Orchard.sln index f8b5b53ac..04e5e6f6b 100644 --- a/src/Orchard.sln +++ b/src/Orchard.sln @@ -62,6 +62,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Tags", "Orchard.Web EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TinyMce", "Orchard.Web\Modules\TinyMce\TinyMce.csproj", "{954CA994-D204-468B-9D69-51F6AD3E1C29}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.MultiTenancy", "Orchard.Web\Modules\Orchard.MultiTenancy\Orchard.MultiTenancy.csproj", "{72457126-E118-4171-A08F-9A709EE4B7FC}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Media", "Orchard.Web\Modules\Orchard.Media\Orchard.Media.csproj", "{D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Orchard.Email", "Orchard.Web\Modules\Orchard.Email\Orchard.Email.csproj", "{05660F47-D649-48BD-9DED-DF4E01E7CFF9}" @@ -315,6 +317,16 @@ Global {954CA994-D204-468B-9D69-51F6AD3E1C29}.FxCop|Any CPU.Build.0 = Release|Any CPU {954CA994-D204-468B-9D69-51F6AD3E1C29}.Release|Any CPU.ActiveCfg = Release|Any CPU {954CA994-D204-468B-9D69-51F6AD3E1C29}.Release|Any CPU.Build.0 = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Coverage|Any CPU.ActiveCfg = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Coverage|Any CPU.Build.0 = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.FxCop|Any CPU.ActiveCfg = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.FxCop|Any CPU.Build.0 = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72457126-E118-4171-A08F-9A709EE4B7FC}.Release|Any CPU.Build.0 = Release|Any CPU {D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU {D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU {D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB}.Coverage|Any CPU.ActiveCfg = Release|Any CPU @@ -350,6 +362,7 @@ Global {0E7646E8-FE8F-43C1-8799-D97860925EC4} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {5D0F00F0-26C9-4785-AD61-B85710C60EB0} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {954CA994-D204-468B-9D69-51F6AD3E1C29} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} + {72457126-E118-4171-A08F-9A709EE4B7FC} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {D9A7B330-CD22-4DA1-A95A-8DE1982AD8EB} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {05660F47-D649-48BD-9DED-DF4E01E7CFF9} = {E9C9F120-07BA-4DFB-B9C3-3AFB9D44C9D5} {ABC826D4-2FA1-4F2F-87DE-E6095F653810} = {74E681ED-FECC-4034-B9BD-01B0BB1BDECA} diff --git a/src/Orchard/Security/Providers/FormsAuthenticationService.cs b/src/Orchard/Security/Providers/FormsAuthenticationService.cs index 363d37e76..37f7f0107 100644 --- a/src/Orchard/Security/Providers/FormsAuthenticationService.cs +++ b/src/Orchard/Security/Providers/FormsAuthenticationService.cs @@ -3,18 +3,20 @@ using System.Web; using System.Web.Security; using Orchard.Logging; using Orchard.ContentManagement; +using Orchard.Mvc; using Orchard.Services; namespace Orchard.Security.Providers { public class FormsAuthenticationService : IAuthenticationService { private readonly IClock _clock; private readonly IContentManager _contentManager; - private readonly HttpContextBase _httpContext; + private readonly IHttpContextAccessor _httpContextAccessor; - public FormsAuthenticationService(IClock clock, IContentManager contentManager, HttpContextBase httpContext) { + public FormsAuthenticationService(IClock clock, IContentManager contentManager, IHttpContextAccessor httpContextAccessor) { _clock = clock; _contentManager = contentManager; - _httpContext = httpContext; + _httpContextAccessor = httpContextAccessor; + Logger = NullLogger.Instance; // TEMP: who can say... @@ -47,8 +49,9 @@ namespace Orchard.Security.Providers { if (FormsAuthentication.CookieDomain != null) { cookie.Domain = FormsAuthentication.CookieDomain; } - - _httpContext.Response.Cookies.Add(cookie); + + var httpContext = _httpContextAccessor.Current(); + httpContext.Response.Cookies.Add(cookie); } public void SignOut() { @@ -56,11 +59,12 @@ namespace Orchard.Security.Providers { } public IUser GetAuthenticatedUser() { - if (!_httpContext.Request.IsAuthenticated || !(_httpContext.User.Identity is FormsIdentity)) { + var httpContext = _httpContextAccessor.Current(); + if (!httpContext.Request.IsAuthenticated || !(httpContext.User.Identity is FormsIdentity)) { return null; } - var formsIdentity = (FormsIdentity)_httpContext.User.Identity; + var formsIdentity = (FormsIdentity)httpContext.User.Identity; var userData = formsIdentity.Ticket.UserData; int userId; if (!int.TryParse(userData, out userId)) {