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:
@@ -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>
|
||||
|
||||
@@ -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
|
||||
{
|
||||
30
src/Umbraco.Web/Controllers/LoginStatusController.cs
Normal file
30
src/Umbraco.Web/Controllers/LoginStatusController.cs
Normal file
@@ -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
|
||||
{
|
||||
24
src/Umbraco.Web/Models/LoginStatusModel.cs
Normal file
24
src/Umbraco.Web/Models/LoginStatusModel.cs
Normal file
@@ -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
src/Umbraco.Web/Models/RegisterModel.cs
Normal file
51
src/Umbraco.Web/Models/RegisterModel.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user