initial commit
[CPE_learningsite] / CPE / CPE.App / CPE.App.Web / Connect / Login.cs
1 using System.Collections.Specialized;
2 using System.Net;
3 using System.Text;
4 using System.Text.RegularExpressions;
5 using System.Web;
6 using System.Xml;
7
8 namespace CPE.App.Web.Connect {
9
10         public class Login {
11
12                 /// <summary>
13                 /// Logs into the Connect service with the information provided and returns the Session object containing the session key.
14                 /// </summary>
15                 /// <param name="username">The username/login of the account.</param>
16                 /// <param name="password">The password for the account.</param>
17                 /// <param name="connectURL">The URL to the connect service.</param>
18                 /// <param name="accountId">The primary key of the Connect account/host.</param>
19                 public static Session UserLogin(string username, string password, string connectURL, int? accountId) {
20
21                         // Attempt login
22                         var request = new Request(connectURL, "login");
23                         request.Parameters.Add("login", username);
24                         request.Parameters.Add("password", password);
25             if(accountId.HasValue)
26                             request.Parameters.Add("account-id", accountId.Value.ToString());
27
28                         // Check if valid
29                         if(request.Execute() && request.Status == Status.OK && !string.IsNullOrEmpty(request.ExtractSessionKey())) {
30
31                                 return new Session() { 
32                                         Hostname = connectURL, 
33                                         SessionKey = request.ExtractSessionKey()
34                                 };
35                         }
36
37                         return null;
38                 }
39
40                 /// <summary>
41                 /// Resets the password for the specified account.
42                 /// </summary>
43                 /// <param name="admin">The administrative session.</param>
44                 /// <param name="userid">The principal-id of the user's account.</param>
45                 /// <param name="password">The new password.</param>
46                 public static bool ResetPassword(Session admin, int userid, string password) {
47
48                         var request = new Request(admin, "user-update-pwd");
49                         request.Parameters.Add("user-id", userid.ToString());
50                         request.Parameters.Add("password", password);
51                         request.Parameters.Add("password-verify", password);
52
53                         return (request.Execute() && request.Status == Status.OK);
54                 }
55
56                 /// <summary>
57                 /// Creates a new guest user with the specified information.
58                 /// </summary>
59                 /// <param name="admin">The administrative session.</param>
60                 /// <param name="username">The login/username of the user.</param>
61                 /// <param name="password">The password for the user.</param>
62                 /// <param name="email">The e-mail for the user.</param>
63                 /// <param name="name">The user's full name.</param>
64                 /// <returns>Returns the new principal-id of the user.</returns>
65                 public static int CreateGuest(Session admin, string username, string password, string email, string firstName, string lastName) {
66
67                         var request = new Request(admin, "principal-update");
68                         request.Parameters.Add("type", "guest");
69                         request.Parameters.Add("has-children", "false");
70                         request.Parameters.Add("login", username);
71                         request.Parameters.Add("password", password);
72                         request.Parameters.Add("email", email);
73                         request.Parameters.Add("first-name", firstName);
74                         request.Parameters.Add("last-name", lastName);
75
76                         if(request.Execute() && request.Status == Status.OK) {
77
78                                 XmlNode principal = request.XmlResults.SelectSingleNode("/results/principal");
79
80                                 if(principal != null)
81                                         return int.Parse(principal.Attributes["principal-id"].Value);
82                         }
83
84                         return 0;
85                 }
86         }
87 }