Moved controllers and models as per Shannon's suggestion

Added LoginStatus and updated Register
Updated to use CDF instead of <script> tags
This commit is contained in:
Sebastiaan Janssen
2013-08-28 13:36:04 +02:00
parent 8274883fa5
commit f26d759c84
14 changed files with 183 additions and 86 deletions
+19
View File
@@ -187,6 +187,25 @@ namespace Umbraco.Core
return String.Empty;
}
/// <summary>
/// Returns the value of the key value based on the key as it's string value, if the key is not found or is an empty string, then the provided default value is returned
/// </summary>
/// <param name="d"></param>
/// <param name="key"></param>
/// <param name="defaultValue"></param>
/// <returns></returns>
public static string GetValueAsString<TKey, TVal>(this IDictionary<TKey, TVal> d, TKey key, string defaultValue)
{
if (d.ContainsKey(key))
{
var value = d[key].ToString();
if (value != string.Empty)
return value;
}
return defaultValue;
}
/// <summary>contains key ignore case.</summary>
/// <param name="dictionary">The dictionary.</param>
/// <param name="key">The key.</param>
+1
View File
@@ -2137,6 +2137,7 @@
<Content Include="Umbraco\PartialViews\Templates\Login.cshtml" />
<Content Include="Umbraco\PartialViews\Templates\EmptyTemplate.cshtml" />
<Content Include="Umbraco\PartialViews\Templates\RegisterMember.cshtml" />
<Content Include="Umbraco\PartialViews\Templates\LoginStatus.cshtml" />
<None Include="Umbraco_client\CodeMirror\js\mode\coffeescript\LICENSE" />
<None Include="Umbraco_client\CodeMirror\js\mode\pascal\LICENSE" />
<None Include="Umbraco_client\CodeMirror\js\mode\perl\LICENSE" />
@@ -1 +1 @@
@using Umbraco.Web.Macros.PartialViewMacroPage
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@@ -2,24 +2,20 @@
@using System.Web.Mvc.Html
@using ClientDependency.Core.Mvc
@using Umbraco.Web.UmbracoModels
@using Umbraco.Web.UmbracoControllers
@using Umbraco.Web.Models
@using Umbraco.Web.Controllers
@{
var loginModel = new LoginModel();
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");
var loginModel = new LoginModel();
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");
}
<script src="@Url.Content("~/umbraco_client/ui/jquery.js")" type="text/javascript"></script>
<script src="@Url.Content("~/umbraco_client/Application/JQuery/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/umbraco_client/Application/JQuery/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.RenderJsHere()
@using (Html.BeginUmbracoForm<LoginController>("HandleLogin"))
{
@@ -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)
{
<p>You are currently logged in as @loginStatusModel.Name</p>
using (Html.BeginUmbracoForm<LoginStatusController>("HandleLogout"))
{
<fieldset>
<legend>Logout</legend>
<button>Logout</button>
</fieldset>
}
}
@@ -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<UmbracoProperty>(),
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");
}
<script src="@Url.Content("~/umbraco_client/ui/jquery.js")" type="text/javascript"></script>
<script src="@Url.Content("~/umbraco_client/Application/JQuery/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/umbraco_client/Application/JQuery/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.RenderJsHere()
@using (Html.BeginUmbracoForm<RegisterController>("HandleRegisterMember"))
{
@@ -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
{
@@ -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();
}
}
}
@@ -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
{
@@ -1,7 +1,6 @@
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace Umbraco.Web.UmbracoModels
namespace Umbraco.Web.Models
{
public class LoginModel
{
@@ -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; }
}
}
+51
View File
@@ -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<UmbracoProperty> MemberProperties { get; set; }
public void FillModel(RegisterModel registerModel, IDictionary<string, object> macroParameters)
{
registerModel.MemberTypeAlias = macroParameters.GetValueAsString("memberTypeAlias", "UmbracoMember");
registerModel.MemberProperties = new List<UmbracoProperty>();
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; }
}
}
+6 -4
View File
@@ -291,11 +291,13 @@
<Compile Include="Cache\UserPermissionsCacheRefresher.cs" />
<Compile Include="Cache\UserTypeCacheRefresher.cs" />
<Compile Include="Configuration\WebRouting.cs" />
<Compile Include="Controllers\LoginStatusController.cs" />
<Compile Include="Editors\MediaController.cs" />
<Compile Include="Models\ContentEditing\ContentSortOrder.cs" />
<Compile Include="UmbracoControllers\RegisterController.cs" />
<Compile Include="UmbracoModels\RegisterModel.cs" />
<Compile Include="UmbracoModels\LoginModel.cs" />
<Compile Include="Controllers\RegisterController.cs" />
<Compile Include="Models\LoginStatusModel.cs" />
<Compile Include="Models\RegisterModel.cs" />
<Compile Include="Models\LoginModel.cs" />
<Compile Include="Security\Providers\MembersMembershipProvider.cs" />
<Compile Include="Security\Providers\UsersMembershipProvider.cs" />
<Compile Include="Standalone\ServiceContextManager.cs" />
@@ -395,7 +397,7 @@
<Compile Include="umbraco.presentation\umbraco\settings\stylesheet\property\EditStyleSheetProperty.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="UmbracoControllers\LoginController.cs" />
<Compile Include="Controllers\LoginController.cs" />
<Compile Include="UrlHelperExtensions.cs" />
<Compile Include="WebApi\MemberAuthorizeAttribute.cs" />
<Compile Include="WebApi\UmbracoApiController.cs" />
@@ -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<UmbracoProperty> MemberProperties { get; set; }
}
public class UmbracoProperty
{
public string Alias { get; set; }
public string Value { get; set; }
public string Name { get; set; }
}
}