diff --git a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbbutton.directive.js b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbbutton.directive.js
index dcde1a309e..ace11f8a6c 100644
--- a/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbbutton.directive.js
+++ b/src/Umbraco.Web.UI.Client/src/common/directives/components/buttons/umbbutton.directive.js
@@ -102,7 +102,8 @@ Use this directive to render an umbraco button. The directive can be used to gen
showCaret: "@?",
autoFocus: "@?",
hasPopup: "@?",
- isExpanded: ""
+ isExpanded: "",
+ submitValue: "@?"
}
});
diff --git a/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-button.html b/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-button.html
index bd0386046f..90889ae333 100644
--- a/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-button.html
+++ b/src/Umbraco.Web.UI.Client/src/views/components/buttons/umb-button.html
@@ -43,6 +43,7 @@
diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs
index c044b6aade..d56792902f 100644
--- a/src/Umbraco.Web/Editors/BackOfficeController.cs
+++ b/src/Umbraco.Web/Editors/BackOfficeController.cs
@@ -5,7 +5,6 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using System.Web;
using System.Web.Mvc;
using System.Web.UI;
using Microsoft.AspNet.Identity;
@@ -545,50 +544,8 @@ namespace Umbraco.Web.Editors
}
// Used for XSRF protection when adding external logins
- private const string XsrfKey = "XsrfId";
+ public const string XsrfKey = "XsrfId";
- private class ChallengeResult : HttpUnauthorizedResult
- {
- public ChallengeResult(string provider, string redirectUri, string userId = null)
- {
- LoginProvider = provider;
- RedirectUri = redirectUri;
- UserId = userId;
- }
-
- private string LoginProvider { get; set; }
- private string RedirectUri { get; set; }
- private string UserId { get; set; }
-
- public override void ExecuteResult(ControllerContext context)
- {
- //Ensure the forms auth module doesn't do a redirect!
- context.HttpContext.Response.SuppressFormsAuthenticationRedirect = true;
-
- var owinCtx = context.HttpContext.GetOwinContext();
-
- //First, see if a custom challenge result callback is specified for the provider
- // and use it instead of the default if one is supplied.
- var loginProvider = owinCtx.Authentication
- .GetExternalAuthenticationTypes()
- .FirstOrDefault(p => p.AuthenticationType == LoginProvider);
- if (loginProvider != null)
- {
- var providerChallengeResult = loginProvider.GetSignInChallengeResult(owinCtx);
- if (providerChallengeResult != null)
- {
- owinCtx.Authentication.Challenge(providerChallengeResult, LoginProvider);
- return;
- }
- }
-
- var properties = new AuthenticationProperties() { RedirectUri = RedirectUri.EnsureEndsWith('/') };
- if (UserId != null)
- {
- properties.Dictionary[XsrfKey] = UserId;
- }
- owinCtx.Authentication.Challenge(properties, LoginProvider);
- }
- }
}
+
}
diff --git a/src/Umbraco.Web/Editors/ChallengeResult.cs b/src/Umbraco.Web/Editors/ChallengeResult.cs
new file mode 100644
index 0000000000..00c0aa187d
--- /dev/null
+++ b/src/Umbraco.Web/Editors/ChallengeResult.cs
@@ -0,0 +1,54 @@
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+using Microsoft.Owin.Security;
+using Umbraco.Core;
+using Umbraco.Web.Security;
+
+namespace Umbraco.Web.Editors
+{
+ public class ChallengeResult : HttpUnauthorizedResult
+ {
+ public ChallengeResult(string provider, string redirectUri, string userId = null)
+ {
+ LoginProvider = provider;
+ RedirectUri = redirectUri;
+ UserId = userId;
+ }
+
+ private string LoginProvider { get; set; }
+ private string RedirectUri { get; set; }
+ private string UserId { get; set; }
+
+ public override void ExecuteResult(ControllerContext context)
+ {
+ //Ensure the forms auth module doesn't do a redirect!
+ context.HttpContext.Response.SuppressFormsAuthenticationRedirect = true;
+
+ var owinCtx = context.HttpContext.GetOwinContext();
+
+ //First, see if a custom challenge result callback is specified for the provider
+ // and use it instead of the default if one is supplied.
+ var loginProvider = owinCtx.Authentication
+ .GetExternalAuthenticationTypes()
+ .FirstOrDefault(p => p.AuthenticationType == LoginProvider);
+ if (loginProvider != null)
+ {
+ var providerChallengeResult = loginProvider.GetSignInChallengeResult(owinCtx);
+ if (providerChallengeResult != null)
+ {
+ owinCtx.Authentication.Challenge(providerChallengeResult, LoginProvider);
+ return;
+ }
+ }
+
+ var properties = new AuthenticationProperties() { RedirectUri = RedirectUri.EnsureEndsWith('/') };
+ if (UserId != null)
+ {
+ properties.Dictionary[BackOfficeController.XsrfKey] = UserId;
+ }
+ owinCtx.Authentication.Challenge(properties, LoginProvider);
+ }
+ }
+
+}
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index e3c573bf08..772ebf26c0 100755
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -148,6 +148,7 @@
+