PageRenderTime 42ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/umbraco_6f33e2b81175/umbraco/umbraco.webservices/MemberService.asmx.cs

https://github.com/jracabado/justEdit-
C# | 389 lines | 274 code | 77 blank | 38 comment | 26 complexity | da4cd973f03ae8dd1cdc36b5c3a5c348 MD5 | raw file
  1. using System;
  2. using System.Data;
  3. using System.Web;
  4. using System.Collections;
  5. using System.Web.Services;
  6. using System.Web.Services.Protocols;
  7. using System.ComponentModel;
  8. using System.Collections.Generic;
  9. using umbraco.cms.businesslogic.web;
  10. using umbraco.cms;
  11. using System.Xml.Serialization;
  12. using System.Xml;
  13. using umbraco.cms.businesslogic.member;
  14. namespace umbraco.webservices.members
  15. {
  16. [WebService(Namespace = "http://umbraco.org/webservices/")]
  17. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  18. [ToolboxItem(false)]
  19. public class memberService : BaseWebService
  20. {
  21. override public Services Service
  22. {
  23. get
  24. {
  25. return Services.StylesheetService;
  26. }
  27. }
  28. /// <summary>
  29. /// Reads the user with the specified memberId
  30. /// </summary>
  31. /// <returns></returns>
  32. [WebMethod]
  33. public memberCarrier readByLogin(string memberLoginName, string memberPassword, string username, string password)
  34. {
  35. Authenticate (username, password);
  36. umbraco.cms.businesslogic.member.Member foundMember = umbraco.cms.businesslogic.member.Member.GetMemberFromLoginNameAndPassword(memberLoginName, memberPassword);
  37. if (foundMember == null)
  38. return null;
  39. return CreateMemberCarrier(foundMember);
  40. }
  41. /// <summary>
  42. /// Reads the user with the specified memberId
  43. /// </summary>
  44. /// <returns></returns>
  45. [WebMethod]
  46. public memberCarrier readById(int memberId, string username, string password)
  47. {
  48. Authenticate(username, password);
  49. umbraco.cms.businesslogic.member.Member foundMember = new umbraco.cms.businesslogic.member.Member(memberId);
  50. if (foundMember == null)
  51. return null;
  52. return CreateMemberCarrier(foundMember);
  53. }
  54. /// <summary>
  55. /// Reads the full list of members
  56. /// </summary>
  57. /// <returns></returns>
  58. [WebMethod]
  59. public List<memberCarrier> readList(string username, string password)
  60. {
  61. Authenticate(username, password);
  62. Member[] members = Member.GetAll;
  63. List<memberCarrier> Members = new List<memberCarrier>();
  64. foreach (umbraco.cms.businesslogic.member.Member member in members)
  65. {
  66. Members.Add(CreateMemberCarrier(member));
  67. }
  68. return Members;
  69. }
  70. [WebMethod]
  71. public void update(memberCarrier carrier, string username, string password)
  72. {
  73. Authenticate(username, password);
  74. // Some validation
  75. if (carrier.Id == 0) throw new Exception("ID must be specifed when updating");
  76. if (carrier == null) throw new Exception("No carrier specified");
  77. // Get the user
  78. umbraco.BusinessLogic.User user = GetUser(username, password);
  79. // We load the member
  80. Member member = new Member(carrier.Id);
  81. // We assign the new values:
  82. member.LoginName = carrier.LoginName;
  83. member.Text = carrier.DisplayedName;
  84. member.Email = carrier.Email;
  85. member.Password = carrier.Password;
  86. // We iterate the properties in the carrier
  87. if (carrier.MemberProperties != null)
  88. {
  89. foreach (memberProperty updatedproperty in carrier.MemberProperties)
  90. {
  91. umbraco.cms.businesslogic.property.Property property = member.getProperty(updatedproperty.Key);
  92. if (property != null)
  93. {
  94. property.Value = updatedproperty.PropertyValue;
  95. }
  96. }
  97. }
  98. }
  99. [WebMethod]
  100. public int create(memberCarrier carrier, int memberTypeId, string username, string password)
  101. {
  102. Authenticate(username, password);
  103. // Some validation
  104. if (carrier == null) throw new Exception("No carrier specified");
  105. if (carrier.Id != 0) throw new Exception("ID cannot be specifed when creating. Must be 0");
  106. if (string.IsNullOrEmpty(carrier.DisplayedName)) carrier.DisplayedName = "unnamed";
  107. // we fetch the membertype
  108. umbraco.cms.businesslogic.member.MemberType mtype = new umbraco.cms.businesslogic.member.MemberType(memberTypeId);
  109. // Check if the membertype exists
  110. if (mtype == null) throw new Exception("Membertype " + memberTypeId + " not found");
  111. // Get the user that creates
  112. umbraco.BusinessLogic.User user = GetUser(username, password);
  113. // Create the new member
  114. umbraco.cms.businesslogic.member.Member newMember = umbraco.cms.businesslogic.member.Member.MakeNew(carrier.DisplayedName, mtype, user);
  115. // We iterate the properties in the carrier
  116. if (carrier.MemberProperties != null)
  117. {
  118. foreach (memberProperty updatedproperty in carrier.MemberProperties)
  119. {
  120. umbraco.cms.businesslogic.property.Property property = newMember.getProperty(updatedproperty.Key);
  121. if (property != null)
  122. {
  123. property.Value = updatedproperty.PropertyValue;
  124. }
  125. }
  126. }
  127. return newMember.Id;
  128. }
  129. /// <summary>
  130. /// Deletes the document with the specified ID
  131. /// </summary>
  132. /// <param name="id"></param>
  133. /// <param name="cred"></param>
  134. /// <returns></returns>
  135. [WebMethod]
  136. public void delete(int id, string username, string password)
  137. {
  138. Authenticate(username, password);
  139. // We load the member
  140. umbraco.cms.businesslogic.member.Member deleteMember;
  141. try
  142. {
  143. deleteMember = new umbraco.cms.businesslogic.member.Member(id);
  144. }
  145. catch (Exception ex)
  146. {
  147. throw new Exception("Member not found" + ex.Message);
  148. }
  149. // We delete him (cruel world)
  150. try
  151. {
  152. deleteMember.delete();
  153. }
  154. catch (Exception ex)
  155. {
  156. throw new Exception("Member could not be deleted" + ex.Message);
  157. }
  158. }
  159. /// <summary>
  160. /// Creates container-object for member
  161. /// </summary>
  162. /// <param name="member"></param>
  163. /// <returns></returns>
  164. private memberCarrier CreateMemberCarrier(umbraco.cms.businesslogic.member.Member member)
  165. {
  166. memberCarrier carrier = new memberCarrier();
  167. carrier.Id = member.Id;
  168. carrier.LoginName = member.LoginName;
  169. carrier.DisplayedName = member.Text;
  170. carrier.Email = member.Email;
  171. carrier.Password = member.Password;
  172. carrier.MembertypeId = member.ContentType.Id;
  173. carrier.MembertypeName = member.ContentType.Text;
  174. // Adding groups to member-carrier
  175. IDictionaryEnumerator Enumerator;
  176. Enumerator = member.Groups.GetEnumerator();
  177. while (Enumerator.MoveNext())
  178. {
  179. memberGroup group = new memberGroup(Convert.ToInt32(Enumerator.Key), ((umbraco.cms.businesslogic.member.MemberGroup)Enumerator.Value).Text);
  180. carrier.Groups.Add(group);
  181. }
  182. // Loading properties to carrier
  183. foreach (umbraco.cms.businesslogic.property.Property prop in member.getProperties)
  184. {
  185. memberProperty carrierprop = new memberProperty();
  186. if (prop.Value == System.DBNull.Value)
  187. {
  188. carrierprop.PropertyValue = null;
  189. }
  190. else
  191. {
  192. carrierprop.PropertyValue = prop.Value;
  193. }
  194. carrierprop.Key = prop.PropertyType.Alias;
  195. carrier.MemberProperties.Add(carrierprop);
  196. }
  197. return carrier;
  198. }
  199. }
  200. [Serializable]
  201. public class memberGroup
  202. {
  203. int groupID;
  204. string groupName;
  205. public memberGroup()
  206. {
  207. }
  208. public memberGroup(int groupID, string groupName)
  209. {
  210. GroupID = groupID;
  211. GroupName = groupName;
  212. }
  213. public int GroupID
  214. {
  215. get { return groupID; }
  216. set { groupID = value; }
  217. }
  218. public string GroupName
  219. {
  220. get { return groupName; }
  221. set { groupName = value; }
  222. }
  223. }
  224. [Serializable]
  225. [XmlType(Namespace = "http://umbraco.org/webservices/")]
  226. public class memberCarrier
  227. {
  228. public memberCarrier()
  229. {
  230. memberProperties = new List<memberProperty>();
  231. groups = new List<memberGroup>();
  232. }
  233. #region Fields
  234. private int id;
  235. private string password;
  236. private string email;
  237. private string displayedName;
  238. private string loginName;
  239. private int membertypeId;
  240. private string membertypeName;
  241. private List<memberGroup> groups;
  242. private List<memberProperty> memberProperties;
  243. #endregion
  244. #region Properties
  245. public int Id
  246. {
  247. get { return id; }
  248. set { id = value; }
  249. }
  250. public string DisplayedName
  251. {
  252. get { return displayedName; }
  253. set { displayedName = value; }
  254. }
  255. public string Password
  256. {
  257. get { return password; }
  258. set { password = value; }
  259. }
  260. public string Email
  261. {
  262. get { return email; }
  263. set { email = value; }
  264. }
  265. public string LoginName
  266. {
  267. get { return loginName; }
  268. set { loginName = value; }
  269. }
  270. public int MembertypeId
  271. {
  272. get { return membertypeId; }
  273. set { membertypeId = value; }
  274. }
  275. public string MembertypeName
  276. {
  277. get { return membertypeName; }
  278. set { membertypeName = value; }
  279. }
  280. public List<memberGroup> Groups
  281. {
  282. get { return groups; }
  283. set { groups = value; }
  284. }
  285. public List<memberProperty> MemberProperties
  286. {
  287. get { return memberProperties; }
  288. set { memberProperties = value; }
  289. }
  290. #endregion
  291. }
  292. [Serializable]
  293. [XmlType(Namespace = "http://umbraco.org/webservices/")]
  294. public class memberProperty
  295. {
  296. private string key;
  297. private object propertyValue;
  298. public memberProperty()
  299. {
  300. }
  301. public object PropertyValue
  302. {
  303. get { return propertyValue; }
  304. set { propertyValue = value; }
  305. }
  306. public string Key
  307. {
  308. get { return key; }
  309. set { key = value; }
  310. }
  311. }
  312. }