("HandleLogin"))
{
diff --git a/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/LoginStatus.cshtml b/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/LoginStatus.cshtml
new file mode 100644
index 0000000000..72d63e2857
--- /dev/null
+++ b/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/LoginStatus.cshtml
@@ -0,0 +1,29 @@
+@inherits Umbraco.Web.Macros.PartialViewMacroPage
+@using ClientDependency.Core.Mvc
+@using Umbraco.Web.Models
+@using Umbraco.Web.Controllers
+
+@{
+ var loginStatusModel = new LoginStatusModel();
+
+ Html.EnableClientValidation();
+ Html.EnableUnobtrusiveJavaScript();
+ Html.RequiresJs("/umbraco_client/ui/jquery.js");
+ Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.min.js");
+ Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.unobtrusive.min.js");
+}
+
+@Html.RenderJsHere()
+
+@if (loginStatusModel.IsLoggedIn)
+{
+ You are currently logged in as @loginStatusModel.Name
+
+ using (Html.BeginUmbracoForm("HandleLogout"))
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/RegisterMember.cshtml b/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/RegisterMember.cshtml
index 46422928a6..2c94c04acc 100644
--- a/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/RegisterMember.cshtml
+++ b/src/Umbraco.Web.UI/Umbraco/PartialViews/Templates/RegisterMember.cshtml
@@ -2,47 +2,21 @@
@using System.Web.Mvc.Html
@using ClientDependency.Core.Mvc
-@using umbraco.cms.businesslogic.member
-@using Umbraco.Web.UmbracoModels
-@using Umbraco.Web.UmbracoControllers
+@using Umbraco.Web.Models
+@using Umbraco.Web.Controllers
@{
+ var registerModel = new RegisterModel();
+ registerModel.FillModel(registerModel, Model.MacroParameters);
+
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
-
- // TODO: CDF doesn't work at the moment, Shannon is looking at it
- //Html.RequiresJs("/umbraco_client/ui/jquery.js");
- //Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.min.js");
- //Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.unobtrusive.min.js");
-
- // TODO: Make a helper for this
- var memberTypeAlias = "UmbracoMember";
- if (Model.MacroParameters.Any() && Model.MacroParameters.ContainsKey("memberTypeAlias"))
- {
- var alias = Model.MacroParameters["memberTypeAlias"];
- if (string.IsNullOrWhiteSpace(alias.ToString()) == false)
- {
- memberTypeAlias = alias.ToString();
- }
- }
-
- var registerModel = new RegisterModel
- {
- MemberProperties = new List(),
- MemberTypeAlias = memberTypeAlias
- };
-
- // TODO: Fill model somewhere else
- var memberType = MemberType.GetByAlias(registerModel.MemberTypeAlias);
- foreach (var prop in memberType.PropertyTypes.Where(memberType.MemberCanEdit))
- {
- registerModel.MemberProperties.Add(new UmbracoProperty {Alias = prop.Alias, Name = prop.Name, Value = string.Empty});
- }
+ Html.RequiresJs("/umbraco_client/ui/jquery.js");
+ Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.min.js");
+ Html.RequiresJs("/umbraco_client/Application/JQuery/jquery.validate.unobtrusive.min.js");
}
-
-
-
+@Html.RenderJsHere()
@using (Html.BeginUmbracoForm("HandleRegisterMember"))
{
diff --git a/src/Umbraco.Web/UmbracoControllers/LoginController.cs b/src/Umbraco.Web/Controllers/LoginController.cs
similarity index 90%
rename from src/Umbraco.Web/UmbracoControllers/LoginController.cs
rename to src/Umbraco.Web/Controllers/LoginController.cs
index 0b58073c70..df6675dfd8 100644
--- a/src/Umbraco.Web/UmbracoControllers/LoginController.cs
+++ b/src/Umbraco.Web/Controllers/LoginController.cs
@@ -1,10 +1,10 @@
using System.Linq;
using System.Web.Mvc;
using umbraco.cms.businesslogic.member;
+using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
-using Umbraco.Web.UmbracoModels;
-namespace Umbraco.Web.UmbracoControllers
+namespace Umbraco.Web.Controllers
{
public class LoginController : SurfaceController
{
diff --git a/src/Umbraco.Web/Controllers/LoginStatusController.cs b/src/Umbraco.Web/Controllers/LoginStatusController.cs
new file mode 100644
index 0000000000..428348f9bb
--- /dev/null
+++ b/src/Umbraco.Web/Controllers/LoginStatusController.cs
@@ -0,0 +1,30 @@
+using System.Linq;
+using System.Web.Mvc;
+using umbraco.cms.businesslogic.member;
+using Umbraco.Web.Models;
+using Umbraco.Web.Mvc;
+
+namespace Umbraco.Web.Controllers
+{
+ public class LoginStatusController : SurfaceController
+ {
+ [HttpPost]
+ public ActionResult HandleLogout([Bind(Prefix = "loginStatusModel")]LoginStatusModel model)
+ {
+ // TODO: Use new Member API
+ if (ModelState.IsValid)
+ {
+ if (Member.IsLoggedOn())
+ {
+ var memberId = Member.CurrentMemberId();
+ Member.RemoveMemberFromCache(memberId);
+ Member.ClearMemberFromClient(memberId);
+ }
+
+ return Redirect("/");
+ }
+
+ return CurrentUmbracoPage();
+ }
+ }
+}
diff --git a/src/Umbraco.Web/UmbracoControllers/RegisterController.cs b/src/Umbraco.Web/Controllers/RegisterController.cs
similarity index 94%
rename from src/Umbraco.Web/UmbracoControllers/RegisterController.cs
rename to src/Umbraco.Web/Controllers/RegisterController.cs
index e3b9e66d3b..402a88b1b9 100644
--- a/src/Umbraco.Web/UmbracoControllers/RegisterController.cs
+++ b/src/Umbraco.Web/Controllers/RegisterController.cs
@@ -3,10 +3,10 @@ using System.Web.Mvc;
using System.Xml;
using umbraco.BusinessLogic;
using umbraco.cms.businesslogic.member;
+using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
-using Umbraco.Web.UmbracoModels;
-namespace Umbraco.Web.UmbracoControllers
+namespace Umbraco.Web.Controllers
{
public class RegisterController : SurfaceController
{
diff --git a/src/Umbraco.Web/UmbracoModels/LoginModel.cs b/src/Umbraco.Web/Models/LoginModel.cs
similarity index 80%
rename from src/Umbraco.Web/UmbracoModels/LoginModel.cs
rename to src/Umbraco.Web/Models/LoginModel.cs
index 4cd627e490..f0cea26b0e 100644
--- a/src/Umbraco.Web/UmbracoModels/LoginModel.cs
+++ b/src/Umbraco.Web/Models/LoginModel.cs
@@ -1,7 +1,6 @@
using System.ComponentModel.DataAnnotations;
-using System.Linq;
-namespace Umbraco.Web.UmbracoModels
+namespace Umbraco.Web.Models
{
public class LoginModel
{
diff --git a/src/Umbraco.Web/Models/LoginStatusModel.cs b/src/Umbraco.Web/Models/LoginStatusModel.cs
new file mode 100644
index 0000000000..853d265c5e
--- /dev/null
+++ b/src/Umbraco.Web/Models/LoginStatusModel.cs
@@ -0,0 +1,24 @@
+using umbraco.cms.businesslogic.member;
+
+namespace Umbraco.Web.Models
+{
+ public class LoginStatusModel
+ {
+ public LoginStatusModel()
+ {
+ //TODO Use new Member API
+ if (Member.IsLoggedOn())
+ {
+ this.Name = Member.GetCurrentMember().Text;
+ this.Username = Member.GetCurrentMember().LoginName;
+ this.Email = Member.GetCurrentMember().Email;
+ this.IsLoggedIn = true;
+ }
+ }
+
+ public string Name { get; set; }
+ public string Username { get; set; }
+ public string Email { get; set; }
+ public bool IsLoggedIn { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/RegisterModel.cs b/src/Umbraco.Web/Models/RegisterModel.cs
new file mode 100644
index 0000000000..276170bb6f
--- /dev/null
+++ b/src/Umbraco.Web/Models/RegisterModel.cs
@@ -0,0 +1,51 @@
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using umbraco.cms.businesslogic.member;
+using Umbraco.Core;
+
+namespace Umbraco.Web.Models
+{
+ public class RegisterModel
+ {
+ [Required]
+ [RegularExpression(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
+ ErrorMessage = "Please enter a valid e-mail address")]
+ public string Email { get; set; }
+
+ [Required]
+ public string Password { get; set; }
+
+ public string MemberTypeAlias { get; set; }
+
+ public List MemberProperties { get; set; }
+
+ public void FillModel(RegisterModel registerModel, IDictionary macroParameters)
+ {
+ registerModel.MemberTypeAlias = macroParameters.GetValueAsString("memberTypeAlias", "UmbracoMember");
+
+ registerModel.MemberProperties = new List();
+
+ var memberType = MemberType.GetByAlias(registerModel.MemberTypeAlias);
+
+ var memberTypeProperties = memberType.PropertyTypes.ToList();
+
+ if (memberTypeProperties.Where(memberType.MemberCanEdit).Any())
+ {
+ memberTypeProperties = memberTypeProperties.Where(memberType.MemberCanEdit).ToList();
+ }
+
+ foreach (var prop in memberTypeProperties)
+ {
+ registerModel.MemberProperties.Add(new UmbracoProperty { Alias = prop.Alias, Name = prop.Name, Value = string.Empty });
+ }
+ }
+ }
+
+ public class UmbracoProperty
+ {
+ public string Alias { get; set; }
+ public string Value { get; set; }
+ public string Name { get; set; }
+ }
+}
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 0674411598..486ec8cad1 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -291,11 +291,13 @@
+
-
-
-
+
+
+
+
@@ -395,7 +397,7 @@
ASPXCodeBehind
-
+
diff --git a/src/Umbraco.Web/UmbracoModels/RegisterModel.cs b/src/Umbraco.Web/UmbracoModels/RegisterModel.cs
deleted file mode 100644
index 498b68db90..0000000000
--- a/src/Umbraco.Web/UmbracoModels/RegisterModel.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-
-namespace Umbraco.Web.UmbracoModels
-{
- public class RegisterModel
- {
- [Required]
- [RegularExpression(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
- ErrorMessage = "Please enter a valid e-mail address")]
- public string Email { get; set; }
-
- [Required]
- public string Password { get; set; }
-
- public string MemberTypeAlias { get; set; }
-
- public List MemberProperties { get; set; }
- }
-
- public class UmbracoProperty
- {
- public string Alias { get; set; }
- public string Value { get; set; }
- public string Name { get; set; }
- }
-}