Files
Umbraco-CMS/components/umbraco.webservices/MemberService.asmx.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

390 lines
11 KiB
C#

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Collections.Generic;
using umbraco.cms.businesslogic.web;
using umbraco.cms;
using System.Xml.Serialization;
using System.Xml;
using umbraco.cms.businesslogic.member;
namespace umbraco.webservices.members
{
[WebService(Namespace = "http://umbraco.org/webservices/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class memberService : BaseWebService
{
override public Services Service
{
get
{
return Services.MemberService;
}
}
/// <summary>
/// Reads the user with the specified memberId
/// </summary>
/// <returns></returns>
[WebMethod]
public memberCarrier readByLogin(string memberLoginName, string memberPassword, string username, string password)
{
Authenticate (username, password);
umbraco.cms.businesslogic.member.Member foundMember = umbraco.cms.businesslogic.member.Member.GetMemberFromLoginNameAndPassword(memberLoginName, memberPassword);
if (foundMember == null)
return null;
return CreateMemberCarrier(foundMember);
}
/// <summary>
/// Reads the user with the specified memberId
/// </summary>
/// <returns></returns>
[WebMethod]
public memberCarrier readById(int memberId, string username, string password)
{
Authenticate(username, password);
umbraco.cms.businesslogic.member.Member foundMember = new umbraco.cms.businesslogic.member.Member(memberId);
if (foundMember == null)
return null;
return CreateMemberCarrier(foundMember);
}
/// <summary>
/// Reads the full list of members
/// </summary>
/// <returns></returns>
[WebMethod]
public List<memberCarrier> readList(string username, string password)
{
Authenticate(username, password);
Member[] members = Member.GetAll;
List<memberCarrier> Members = new List<memberCarrier>();
foreach (umbraco.cms.businesslogic.member.Member member in members)
{
Members.Add(CreateMemberCarrier(member));
}
return Members;
}
[WebMethod]
public void update(memberCarrier carrier, string username, string password)
{
Authenticate(username, password);
// Some validation
if (carrier.Id == 0) throw new Exception("ID must be specifed when updating");
if (carrier == null) throw new Exception("No carrier specified");
// Get the user
umbraco.BusinessLogic.User user = GetUser(username, password);
// We load the member
Member member = new Member(carrier.Id);
// We assign the new values:
member.LoginName = carrier.LoginName;
member.Text = carrier.DisplayedName;
member.Email = carrier.Email;
member.Password = carrier.Password;
// We iterate the properties in the carrier
if (carrier.MemberProperties != null)
{
foreach (memberProperty updatedproperty in carrier.MemberProperties)
{
umbraco.cms.businesslogic.property.Property property = member.getProperty(updatedproperty.Key);
if (property != null)
{
property.Value = updatedproperty.PropertyValue;
}
}
}
}
[WebMethod]
public int create(memberCarrier carrier, int memberTypeId, string username, string password)
{
Authenticate(username, password);
// Some validation
if (carrier == null) throw new Exception("No carrier specified");
if (carrier.Id != 0) throw new Exception("ID cannot be specifed when creating. Must be 0");
if (string.IsNullOrEmpty(carrier.DisplayedName)) carrier.DisplayedName = "unnamed";
// we fetch the membertype
umbraco.cms.businesslogic.member.MemberType mtype = new umbraco.cms.businesslogic.member.MemberType(memberTypeId);
// Check if the membertype exists
if (mtype == null) throw new Exception("Membertype " + memberTypeId + " not found");
// Get the user that creates
umbraco.BusinessLogic.User user = GetUser(username, password);
// Create the new member
umbraco.cms.businesslogic.member.Member newMember = umbraco.cms.businesslogic.member.Member.MakeNew(carrier.DisplayedName, mtype, user);
// We iterate the properties in the carrier
if (carrier.MemberProperties != null)
{
foreach (memberProperty updatedproperty in carrier.MemberProperties)
{
umbraco.cms.businesslogic.property.Property property = newMember.getProperty(updatedproperty.Key);
if (property != null)
{
property.Value = updatedproperty.PropertyValue;
}
}
}
return newMember.Id;
}
/// <summary>
/// Deletes the document with the specified ID
/// </summary>
/// <param name="id"></param>
/// <param name="cred"></param>
/// <returns></returns>
[WebMethod]
public void delete(int id, string username, string password)
{
Authenticate(username, password);
// We load the member
umbraco.cms.businesslogic.member.Member deleteMember;
try
{
deleteMember = new umbraco.cms.businesslogic.member.Member(id);
}
catch (Exception ex)
{
throw new Exception("Member not found" + ex.Message);
}
// We delete him (cruel world)
try
{
deleteMember.delete();
}
catch (Exception ex)
{
throw new Exception("Member could not be deleted" + ex.Message);
}
}
/// <summary>
/// Creates container-object for member
/// </summary>
/// <param name="member"></param>
/// <returns></returns>
private memberCarrier CreateMemberCarrier(umbraco.cms.businesslogic.member.Member member)
{
memberCarrier carrier = new memberCarrier();
carrier.Id = member.Id;
carrier.LoginName = member.LoginName;
carrier.DisplayedName = member.Text;
carrier.Email = member.Email;
carrier.Password = member.Password;
carrier.MembertypeId = member.ContentType.Id;
carrier.MembertypeName = member.ContentType.Text;
// Adding groups to member-carrier
IDictionaryEnumerator Enumerator;
Enumerator = member.Groups.GetEnumerator();
while (Enumerator.MoveNext())
{
memberGroup group = new memberGroup(Convert.ToInt32(Enumerator.Key), ((umbraco.cms.businesslogic.member.MemberGroup)Enumerator.Value).Text);
carrier.Groups.Add(group);
}
// Loading properties to carrier
foreach (umbraco.cms.businesslogic.property.Property prop in member.getProperties)
{
memberProperty carrierprop = new memberProperty();
if (prop.Value == System.DBNull.Value)
{
carrierprop.PropertyValue = null;
}
else
{
carrierprop.PropertyValue = prop.Value;
}
carrierprop.Key = prop.PropertyType.Alias;
carrier.MemberProperties.Add(carrierprop);
}
return carrier;
}
}
[Serializable]
public class memberGroup
{
int groupID;
string groupName;
public memberGroup()
{
}
public memberGroup(int groupID, string groupName)
{
GroupID = groupID;
GroupName = groupName;
}
public int GroupID
{
get { return groupID; }
set { groupID = value; }
}
public string GroupName
{
get { return groupName; }
set { groupName = value; }
}
}
[Serializable]
[XmlType(Namespace = "http://umbraco.org/webservices/")]
public class memberCarrier
{
public memberCarrier()
{
memberProperties = new List<memberProperty>();
groups = new List<memberGroup>();
}
#region Fields
private int id;
private string password;
private string email;
private string displayedName;
private string loginName;
private int membertypeId;
private string membertypeName;
private List<memberGroup> groups;
private List<memberProperty> memberProperties;
#endregion
#region Properties
public int Id
{
get { return id; }
set { id = value; }
}
public string DisplayedName
{
get { return displayedName; }
set { displayedName = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string Email
{
get { return email; }
set { email = value; }
}
public string LoginName
{
get { return loginName; }
set { loginName = value; }
}
public int MembertypeId
{
get { return membertypeId; }
set { membertypeId = value; }
}
public string MembertypeName
{
get { return membertypeName; }
set { membertypeName = value; }
}
public List<memberGroup> Groups
{
get { return groups; }
set { groups = value; }
}
public List<memberProperty> MemberProperties
{
get { return memberProperties; }
set { memberProperties = value; }
}
#endregion
}
[Serializable]
[XmlType(Namespace = "http://umbraco.org/webservices/")]
public class memberProperty
{
private string key;
private object propertyValue;
public memberProperty()
{
}
public object PropertyValue
{
get { return propertyValue; }
set { propertyValue = value; }
}
public string Key
{
get { return key; }
set { key = value; }
}
}
}