%@ 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