adds logic to the membership helper to create a new LoginStatusModel with the values filled in, obsoletes the empty ctor on LoginStatusModel since that does some biz logic lookups, instead replaces it with a static method to create an empty one.

This commit is contained in:
Shannon
2014-01-28 16:30:58 +11:00
parent 28d8fd0531
commit de1f86c7a1
4 changed files with 75 additions and 16 deletions

View File

@@ -1,29 +1,51 @@
using System.Web;
using umbraco.cms.businesslogic.member;
using System;
using System.Web;
using Umbraco.Core;
using Umbraco.Web.Security;
namespace Umbraco.Web.Models
{
/// <summary>
/// The model
/// </summary>
public class LoginStatusModel
{
public LoginStatusModel()
/// <summary>
/// Creates a new empty LoginStatusModel
/// </summary>
/// <returns></returns>
public static LoginStatusModel CreateModel()
{
if (HttpContext.Current != null
&& HttpContext.Current.User != null
&& HttpContext.Current.User.Identity.IsAuthenticated)
var model = new LoginStatusModel(false);
return model;
}
private LoginStatusModel(bool doLookup)
{
if (doLookup && HttpContext.Current != null && ApplicationContext.Current != null)
{
var member = ApplicationContext.Current.Services.MemberService.GetByUsername(
HttpContext.Current.User.Identity.Name);
if (member != null)
var helper = new MembershipHelper(ApplicationContext.Current, new HttpContextWrapper(HttpContext.Current));
var model = helper.GetLoginStatusModel();
if (model != null)
{
this.Name = member.Name;
this.Username = member.Username;
this.Email = member.Email;
this.IsLoggedIn = true;
}
Name = model.Name;
Username = model.Username;
Email = model.Email;
IsLoggedIn = true;
}
}
}
/// <summary>
/// This will construct a new LoginStatusModel and perform a lookup for hte curently logged in member
/// </summary>
[Obsolete("Do not use this ctor as it will perform business logic lookups. Use the MembershipHelper.GetLoginStatusModel or the static LoginStatusModel.CreateModel() to create an empty model.")]
public LoginStatusModel()
: this(true)
{
}
public string Name { get; set; }
public string Username { get; set; }
public string Email { get; set; }

View File

@@ -2,12 +2,48 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using Umbraco.Core;
using Umbraco.Web.Models;
namespace Umbraco.Web.Security
{
internal class MembershipHelper
{
private readonly ApplicationContext _applicationContext;
private readonly HttpContextBase _httpContext;
public MembershipHelper(ApplicationContext applicationContext, HttpContextBase httpContext)
{
if (applicationContext == null) throw new ArgumentNullException("applicationContext");
if (httpContext == null) throw new ArgumentNullException("httpContext");
_applicationContext = applicationContext;
_httpContext = httpContext;
}
public MembershipHelper(UmbracoContext umbracoContext)
{
if (umbracoContext == null) throw new ArgumentNullException("umbracoContext");
_httpContext = umbracoContext.HttpContext;
_applicationContext = umbracoContext.Application;
}
public LoginStatusModel GetLoginStatusModel()
{
if (_httpContext.User == null || _httpContext.User.Identity.IsAuthenticated == false)
return null;
var member = _applicationContext.Services.MemberService.GetByUsername(
_httpContext.User.Identity.Name);
var model = LoginStatusModel.CreateModel();
model.Name = member.Name;
model.Username = member.Username;
model.Email = member.Email;
model.IsLoggedIn = true;
return model;
}
public MembershipUser UpdateMember(MembershipUser member, MembershipProvider provider,
string email = null,

View File

@@ -1,5 +1,6 @@
using System;
using System.Configuration.Provider;
using System.Web;
using System.Web.UI;
using System.Web.UI.Design.WebControls;
using System.Web.UI.HtmlControls;
@@ -242,7 +243,7 @@ namespace umbraco.cms.presentation.members
private void UpdateMembershipProvider(MembershipUser membershipUser)
{
var membershipHelper = new MembershipHelper();
var membershipHelper = new MembershipHelper(ApplicationContext, new HttpContextWrapper(Context));
//set the writable properties that we are editing
membershipHelper.UpdateMember(membershipUser, Membership.Provider, MemberEmail.Text.Trim());
}

View File

@@ -589,7 +589,7 @@ namespace umbraco.cms.presentation.user
// update when the AD provider is active.
if ((BackOfficeProvider is ActiveDirectoryMembershipProvider) == false)
{
var membershipHelper = new MembershipHelper();
var membershipHelper = new MembershipHelper(ApplicationContext, new HttpContextWrapper(Context));
//set the writable properties that we are editing
membershipHelper.UpdateMember(membershipUser, BackOfficeProvider,
email.Text.Trim(),