From f26d759c8444cf7f49e82f82f2c1cd3ca2e236fc Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Wed, 28 Aug 2013 13:36:04 +0200 Subject: [PATCH] Moved controllers and models as per Shannon's suggestion Added LoginStatus and updated Register Updated to use CDF instead of - - +@Html.RenderJsHere() @using (Html.BeginUmbracoForm("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")) + { +
+ Logout + +
+ } +} \ 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; } - } -}