Files
Umbraco-CMS/umbraco/providers/members/MembersProfileProvider.cs
Shandem f6d0d043b5 DO NOT DOWNLOAD. DOWNLOAT LATEST STABLE FROM RELEASE TAB
Created 4.1.0 branch

[TFS Changeset #55082]
2009-06-19 07:39:16 +00:00

160 lines
6.8 KiB
C#

#region namespace
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.Security;
using System.Configuration;
using umbraco.BusinessLogic;
using System.Security.Cryptography;
using System.Web.Util;
using System.Collections.Specialized;
using System.Configuration.Provider;
using umbraco.cms.businesslogic;
using umbraco.cms.businesslogic.member;
using System.Collections;
using System.Web.Profile;
#endregion
namespace umbraco.providers.members {
public class UmbracoProfileProvider : ProfileProvider {
private string m_ApplicationName = "";
public override string ApplicationName {
get {
return m_ApplicationName;
}
set {
m_ApplicationName = value;
}
}
public override string Description {
get {
return "Profile Provider for umbraco member profile data";
}
}
public override string Name {
get {
return base.Name;
}
}
public override void Initialize(string name, NameValueCollection config) {
if (config == null)
throw new ArgumentNullException("Null configuration parameters");
if (String.IsNullOrEmpty(name))
name = "UmbracoProfileProvider";
base.Initialize(name, config);
m_ApplicationName = config["applicationName"];
if (String.IsNullOrEmpty(m_ApplicationName))
m_ApplicationName = System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath;
config.Remove("applicationName");
// if the config element contains unused parameters we should throw an exception
if (config.Count > 0) {
string attrib = config.GetKey(0);
if (!String.IsNullOrEmpty(attrib))
throw new ProviderException(String.Format("Unrecognized attribute: {0}", attrib));
}
}
public override int DeleteInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) {
throw new NotSupportedException();
}
public override int DeleteProfiles(string[] usernames) {
throw new NotSupportedException();
}
public override int DeleteProfiles(ProfileInfoCollection profiles) {
throw new NotSupportedException();
}
public override ProfileInfoCollection FindInactiveProfilesByUserName(ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords) {
throw new NotSupportedException();
}
public override ProfileInfoCollection FindProfilesByUserName(ProfileAuthenticationOption authenticationOption, string usernameToMatch, int pageIndex, int pageSize, out int totalRecords) {
throw new NotSupportedException();
}
public override ProfileInfoCollection GetAllInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords) {
throw new NotSupportedException();
}
public override ProfileInfoCollection GetAllProfiles(ProfileAuthenticationOption authenticationOption, int pageIndex, int pageSize, out int totalRecords) {
throw new NotSupportedException();
}
public override int GetNumberOfInactiveProfiles(ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) {
throw new NotSupportedException();
}
/// <summary>
/// Returns the collection of settings property values for the current umbraco member.
/// </summary>
/// <param name="context">A <see cref="T:System.Configuration.SettingsContext"/> describing the current application use.</param>
/// <param name="collection">A <see cref="T:System.Configuration.SettingsPropertyCollection"/> containing the settings property group whose values are to be retrieved.</param>
/// <returns>
/// A <see cref="T:System.Configuration.SettingsPropertyValueCollection"/> containing the values for the specified settings property group.
/// </returns>
public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection collection) {
SettingsPropertyValueCollection settings = new SettingsPropertyValueCollection();
if (collection.Count == 0)
return settings;
foreach(SettingsProperty property in collection){
SettingsPropertyValue pv = new SettingsPropertyValue(property);
settings.Add(pv);
}
// get the current user
string username = (string)context["UserName"];
Member m = Member.GetMemberFromLoginName(username);
if (m == null)
throw new ProviderException(String.Format("No member with username '{0}' exists", username));
foreach (SettingsPropertyValue spv in settings) {
if (m.getProperty(spv.Name) != null) {
spv.Deserialized = true;
spv.PropertyValue = m.getProperty(spv.Name).Value;
}
}
return settings;
}
/// <summary>
/// Sets the values of the specified group of property settings for the current umbraco member.
/// </summary>
/// <param name="context">A <see cref="T:System.Configuration.SettingsContext"/> describing the current application usage.</param>
/// <param name="collection">A <see cref="T:System.Configuration.SettingsPropertyValueCollection"/> representing the group of property settings to set.</param>
public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) {
string username = (string)context["UserName"];
bool authenticated = (bool)context["IsAuthenticated"];
if (String.IsNullOrEmpty(username) || collection.Count == 0)
return;
Member m = Member.GetMemberFromLoginName(username);
if (m == null)
throw new ProviderException(String.Format("No member with username '{0}' exists", username));
foreach (SettingsPropertyValue spv in collection) {
if (!authenticated && !(bool)spv.Property.Attributes["AllowAnonymous"])
continue;
if (m.getProperty(spv.Name) != null)
m.getProperty(spv.Name).Value = spv.PropertyValue;
}
}
}
}