Paul,
Are you familar with dotnetnuke? A open source portal written with VB.NET.
Here is the provider for DNN.
DotNetNukeDataProvider.vb
Public Class DotNetNukeDataProvider
Inherits CuteSoft.Chat.DataProvider
Protected Function GetUser(ByVal uniquename As String) As DotNetNuke.Entities.Users.UserInfo
Dim userid As Integer = Integer.Parse(uniquename)
Dim ps As DotNetNuke.Entities.Portals.PortalSettings = CType(System.Web.HttpContext.Current.Items("PortalSettings"), DotNetNuke.Entities.Portals.PortalSettings)
Return New DotNetNuke.Entities.Users.UserController().GetUser(ps.PortalId, userid)
End Function
Public Overrides Function GetUserDisplayName(ByVal useruniquename As String) As String
Return GetUser(useruniquename).UserName
End Function
Public Overrides Function IsAdministrator(ByVal useruniquename As String) As Boolean
Dim user As DotNetNuke.Entities.Users.UserInfo = GetUser(useruniquename)
If user.IsSuperUser Then
Return True
End If
Dim ps As DotNetNuke.Entities.Portals.PortalSettings = CType(System.Web.HttpContext.Current.Items("PortalSettings"), DotNetNuke.Entities.Portals.PortalSettings)
Dim roles() As String = New DotNetNuke.Security.Roles.RoleController().GetRolesByUser(user.UserID, ps.PortalId)
Return Array.IndexOf(roles, "Administrators") <> -1
'For Each roleid As String In roles
' Dim role As DotNetNuke.Security.Roles.RoleInfo = New DotNetNuke.Security.Roles.RoleController().GetRole(Integer.Parse(roleid), ps.PortalId)
' If role.RoleName = "Administrators" Then
' Return True
' End If
'Next
'Return False
End Function
Public Overrides Function ListUserUniqueName() As String()
Dim ps As DotNetNuke.Entities.Portals.PortalSettings = CType(System.Web.HttpContext.Current.Items("PortalSettings"), DotNetNuke.Entities.Portals.PortalSettings)
Dim names As New System.Collections.ArrayList
For Each user As DotNetNuke.Entities.Users.UserInfo In New DotNetNuke.Entities.Users.UserController().GetUsers(ps.PortalId, False, False)
names.Add(user.UserID.ToString())
Next
Return CType(names.ToArray(GetType(String)), String())
End Function
Public Overrides Function SearchUserUniqueNameByDisplayName(ByVal userDisplaName As String) As String()
Return SearchUserUniqueNamesByProperty("FirstName", userDisplaName)
End Function
Public Overrides Function GetUserPropertyCategories() As CuteSoft.Chat.UserCategory()
Dim categories() As CuteSoft.Chat.UserCategory = {New CuteSoft.Chat.UserCategory("UserName", "UserName"), New CuteSoft.Chat.UserCategory("Country", "Country")}
Return categories
End Function
Public Overrides Function SearchUserUniqueNamesByProperty(ByVal category As String, ByVal keyword As String) As String()
Dim ps As DotNetNuke.Entities.Portals.PortalSettings = CType(System.Web.HttpContext.Current.Items("PortalSettings"), DotNetNuke.Entities.Portals.PortalSettings)
keyword = keyword.ToLower()
Dim names As New System.Collections.ArrayList
For Each user As DotNetNuke.Entities.Users.UserInfo In New DotNetNuke.Entities.Users.UserController().GetUsers(ps.PortalId, False, False)
Dim prop As String
Select Case category
Case "FirstName"
prop = user.FirstName
Exit Select
Case "UserName"
prop = user.Username
Exit Select
Case "Country"
prop = user.Profile.Country
Exit Select
End Select
If prop <> Nothing Then
If prop.ToLower().IndexOf(keyword) <> -1 Then
names.Add(user.UserID.ToString())
End If
End If
Next
Return CType(names.ToArray(GetType(String)), String())
End Function
End Class
DotNetNukeUserAdapter.vb
Public Class DotNetNukeUserAdapter
Inherits CuteSoft.Chat.UserAdapter
Public Overrides Function GetUserUniqueName(ByVal context As System.Web.HttpContext) As String
If Not context.Request.IsAuthenticated Then
Return Nothing
End If
'DotNetNuke3 use username..
Dim ps As DotNetNuke.Entities.Portals.PortalSettings = CType(System.Web.HttpContext.Current.Items("PortalSettings"), DotNetNuke.Entities.Portals.PortalSettings)
Return New DotNetNuke.Entities.Users.UserController().GetUserByUsername(ps.PortalId, context.User.Identity.Name).UserID.ToString()
End Function
End Class
Hope it helps.
Let me know if you have any further questions.
asp.net Chat http://cutesoft.net/ASP.NET+Chat/default.aspx
Web Messenger: http://cutesoft.net/Web-Messenger/default.aspx
asp.net wysiwyg editor: http://cutesoft.net/ASP.NET+WYSIWYG+Editor/default.aspx
asp wysiwyg html editor: http://cutesoft.net/ASP
asp.net Image Gallery: http://cutesoft.net/ASP.NET+Image+Gallery/default.aspx
Live Support: http://cutesoft.net/live-support/default.aspx