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:
@@ -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; }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user