<%@ WebService Language="VB" Class="users" %> Imports System.Web Imports System.Web.Configuration Imports System.Configuration Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Xml ''' ''' NetPass Membership and Role Management Webservices ''' ''' _ _ Public Class users Inherits System.Web.Services.WebService Private Users As New Wdk.CommunityServices.Membership.Users Dim Logs As New Wdk.Providers.Logs.AppLog _ Public Function listUsers(ByVal query As String) As XmlDocument Dim xmlDoc As New XmlDocument Dim xmlUsers As XmlElement = xmlDoc.CreateElement("Users") xmlDoc.AppendChild(xmlUsers) Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim mSection As New MembershipSection mSection = conf.GetSection("system.web/membership") Dim NetPass As New Wdk.CommunityServices.NetPass.NetPassMembershipProvider NetPass.Initialize(mSection.DefaultProvider, mSection.Providers(mSection.DefaultProvider).Parameters) Dim mcol As MembershipUserCollection = Nothing If query <> "" Then mcol = NetPass.FindUsersByName(query) Else mcol = NetPass.GetAllUsers End If xmlUsers.SetAttribute("instance", NetPass.ApplicationName) xmlUsers.SetAttribute("total", mcol.Count) For Each user As MembershipUser In mcol Dim el As XmlElement = xmlDoc.CreateElement("User") el.AppendChild(newElement("username", user.UserName, xmlDoc)) el.AppendChild(newElement("email", user.Email, xmlDoc)) el.AppendChild(newElement("creationDate", user.CreationDate, xmlDoc)) el.AppendChild(newElement("lastLogin", user.LastLoginDate, xmlDoc)) xmlUsers.AppendChild(el) Next Return xmlDoc End Function _ Public Function createUser(ByVal username As String, ByVal password As String, ByVal email As String, ByVal question As String, ByVal answer As String, ByVal comments As String) As String If username.Trim = "" Then Return "Username can't be empty" If password.Trim = "" Then Return "Password can't be empty" If email.Trim = "" Then Return "Email can't be empty" If question.Trim = "" Then Return "Security Question can't be empty" If answer.Trim = "" Then Return "Security Answer can't be empty" email = email.ToLower.Trim Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim mSection As New MembershipSection mSection = conf.GetSection("system.web/membership") Dim NetPass As New Wdk.CommunityServices.NetPass.NetPassMembershipProvider NetPass.Initialize(mSection.DefaultProvider, mSection.Providers(mSection.DefaultProvider).Parameters) Dim status As MembershipCreateStatus NetPass.CreateUser(username, password, email, question, answer, True, Guid.NewGuid(), status) If status = MembershipCreateStatus.Success Then Return "Account created" Else Return "User creation failed: " & status.ToString End If Return True Catch ex As Exception Return ex.Message End Try End Function _ Public Function deleteUser(ByVal username As String) As String If username.Trim = "" Then Return "Username can't be empty" Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim mSection As New MembershipSection mSection = conf.GetSection("system.web/membership") Dim NetPass As New Wdk.CommunityServices.NetPass.NetPassMembershipProvider NetPass.Initialize(mSection.DefaultProvider, mSection.Providers(mSection.DefaultProvider).Parameters) If NetPass.DeleteUser(username, True) = True Then Return "Account {" + username + "} and it's profile data had been deleted" Else Return "An error occured during account deletion, please look into Application Logs for more details." End If Catch ex As Exception Return ex.Message End Try End Function _ Public Function validate(ByVal username As String, ByVal password As String) As String If username.Trim = "" Then Return "Username can't be empty" If password.Trim = "" Then Return "Password can't be empty" Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim mSection As New MembershipSection mSection = conf.GetSection("system.web/membership") Dim NetPass As New Wdk.CommunityServices.NetPass.NetPassMembershipProvider NetPass.Initialize(mSection.DefaultProvider, mSection.Providers(mSection.DefaultProvider).Parameters) If NetPass.ValidateUser(username, password) = True Then FormsAuthentication.SetAuthCookie(username, True) Logs.Write("AUTH " & username & " OK - " & Me.Context.Request.UserAgent, False) Return "OK" Else Return "FAILED" End If Catch ex As Exception Return ex.Message End Try End Function ''' ''' ''' ''' ''' _ Public Function listRoles() As XmlDocument Dim xmlDoc As New XmlDocument Dim xmlRoot As XmlElement = xmlDoc.CreateElement("Roles") xmlDoc.AppendChild(xmlRoot) Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) Dim roles() As String = roleProvider.GetAllRoles xmlRoot.SetAttribute("instance", roleProvider.ApplicationName) xmlRoot.SetAttribute("total", roles.Length) For Each role As String In roles Dim el As XmlElement = xmlDoc.CreateElement("Role") el.AppendChild(newElement("title", role, xmlDoc)) xmlRoot.AppendChild(el) Next Return xmlDoc End Function _ Public Function createRole(ByVal title As String) As String Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) roleProvider.CreateRole(title) Return "Role {" + title + "} now can be used for user assignments" Catch ex As Exception Return ex.Message End Try End Function ''' ''' ''' ''' ''' ''' _ Public Function deleteRole(ByVal title As String) As String Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) roleProvider.DeleteRole(title, False) Return "Role {" + title + "} deleted and can't be used within application anymore" Catch ex As Exception Return ex.Message End Try End Function ''' ''' ''' ''' ''' ''' _ Public Function getRolesForUser(ByVal username As String) As XmlDocument Dim xmlDoc As New XmlDocument Dim xmlRoot As XmlElement = xmlDoc.CreateElement("Roles") xmlDoc.AppendChild(xmlRoot) Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) Dim Roles As String() = roleProvider.GetRolesForUser(username) xmlRoot.SetAttribute("instance", roleProvider.ApplicationName) xmlRoot.SetAttribute("total", Roles.Length) For Each role As String In Roles xmlRoot.AppendChild(newElement("Role", role, xmlDoc)) Next Return xmlDoc End Function _ Public Function addUserToRole(ByVal username As String, ByVal role As String) As String Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) roleProvider.AddUsersToRoles(New String() {username}, New String() {role}) Return username + " roles updated" Catch ex As Exception Return ex.Message End Try End Function _ Public Function removeUserFromRole(ByVal username As String, ByVal role As String) As String Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New Wdk.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) roleProvider.RemoveUsersFromRoles(New String() {username}, New String() {role}) Return username + " roles updated" Catch ex As Exception Return ex.Message End Try End Function ''' ''' Retreives users lsit related to certain Application role ''' ''' ''' ''' _ Public Function getUsersInRole(ByVal role As String) As XmlDocument Dim xmlDoc As New XmlDocument Dim xmlRoot As XmlElement = xmlDoc.CreateElement("Users") xmlDoc.AppendChild(xmlRoot) Try Dim conf As Configuration = WebConfigurationManager.OpenWebConfiguration(System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath) Dim rSection As RoleManagerSection = conf.GetSection("system.web/roleManager") Dim roleProvider As New WDK.CommunityServices.NetPass.NetPassRoleProvider roleProvider.ApplicationName = rSection.Providers(rSection.DefaultProvider).Parameters("applicationName") roleProvider.Initialize(rSection.DefaultProvider, rSection.Providers(rSection.DefaultProvider).Parameters) Dim arrUsers As String() = roleProvider.GetUsersInRole(role) For Each User As String In arrUsers Dim el As XmlElement = xmlDoc.CreateElement("User") el.AppendChild(newElement("data", User, xmlDoc)) el.AppendChild(newElement("label", User, xmlDoc)) xmlRoot.AppendChild(el) Next xmlRoot.SetAttribute("total", arrUsers.Length) Return xmlDoc Catch ex As Exception xmlRoot.SetAttribute("total", 0) Return xmlDoc End Try End Function End Class