Imports System.IO
Imports System.Security
Imports System.Security.Principal
Imports System.Threading
Imports System.Web
Imports System.Web.Security
Imports DotNetNuke.Common.Utilities
Imports DotNetNuke.Entities.Portals
Imports DotNetNuke.Security.Roles
Imports DotNetNuke.Services.Exceptions
Imports DotNetNuke.Services.Log.EventLog
Imports DotNetNuke.Services.Scheduling
Imports DotNetNuke.Services.Upgrade
Imports Microsoft.VisualBasic
Public Class DNNChatProvider
Inherits CuteChat.ChatProvider
Protected Function CurrentPortal() As DotNetNuke.Entities.Portals.PortalSettings
Dim ps As DotNetNuke.Entities.Portals.PortalSettings
ps = PortalController.GetCurrentPortalSettings()
If ps Is Nothing Then
Throw (New Exception("PortalSettings Not Ready"))
End If
Return ps
End Function
Public Function GetLogonUser() As DotNetNuke.Entities.Users.UserInfo
If Not HttpContext.Current.Request.IsAuthenticated Then
Return Nothing
End If
Dim username As String = HttpContext.Current.User.Identity.Name
Return DotNetNuke.Entities.Users.UserController.GetUserByName(CurrentPortal().PortalId, username)
End Function
Public Overrides Function GetConnectionString() As String
Return System.Configuration.ConfigurationManager.ConnectionStrings("SiteSqlServer").ConnectionString
End Function
Public Overrides Function GetLogonIdentity() As CuteChat.AppChatIdentity
Dim user As DotNetNuke.Entities.Users.UserInfo = GetLogonUser()
If user Is Nothing Then
Return Nothing
End If
Return New CuteChat.AppChatIdentity(user.Username, False, ToUserId(user.Username), HttpContext.Current.Request.UserHostAddress)
End Function
Public Overrides Function GetUserInfo(ByVal loginName As String, ByRef nickName As String, ByRef isAdmin As Boolean) As Boolean
Try
Dim user As DotNetNuke.Entities.Users.UserInfo = DotNetNuke.Entities.Users.UserController.GetUserByName(CurrentPortal().PortalId, loginName)
If user Is Nothing Then
Return False
End If
nickName = user.Username
isAdmin = user.IsInRole("Administrators") Or (user.Username = "admin")
Return True
Catch ex As Exception
Return False
End Try
End Function
Public Overrides Function FindUserLoginName(ByVal nickName As String) As String
Try
Dim totalRecords As Integer
For Each user As DotNetNuke.Entities.Users.UserInfo In DotNetNuke.Entities.Users.UserController.GetUsersByUserName(CurrentPortal().PortalId, nickName, 0, 100, totalRecords)
If String.Equals(user.Username, nickName, StringComparison.OrdinalIgnoreCase) Then
Return user.Username
End If
Next
Return Nothing
Catch ex As Exception
Return Nothing
End Try
End Function
Public Overrides Function ValidateUser(ByVal loginName As String, ByVal password As String) As Boolean
If System.Web.Security.Membership.ValidateUser(loginName, password) Then
System.Web.Security.FormsAuthentication.SetAuthCookie(loginName, False)
Return True
End If
End Function
Public Class MyDataManager
Inherits CuteChat.AppDataManager
Public Sub New(ByVal portal As CuteChat.AppPortal)
MyBase.New(portal)
End Sub
Public Overrides Sub AddContact(ByVal identity As CuteChat.ChatIdentity, ByVal userid As String)
End Sub
Public Overrides Sub RemoveContact(ByVal identity As CuteChat.ChatIdentity, ByVal userid As String)
End Sub
Public Overrides Function GetContacts(ByVal identity As CuteChat.ChatIdentity) As CuteChat.IChatUserInfo()
Dim portalid As Integer = 0
Dim list As ArrayList = DotNetNuke.Entities.Users.UserController.GetUsers(portalid)
Dim res As New ArrayList
Dim provider As CuteChat.ChatProvider = CuteChat.ChatProvider.Instance
Dim myname As String = provider.FromUserId(identity.UniqueId)
For Each info As DotNetNuke.Entities.Users.UserInfo In list
If String.CompareOrdinal(myname, info.Username) <> 0 Then
res.Add(Me.GetUserInfo(provider.ToUserId(info.Username)))
End If
Next
Return res.ToArray(GetType(CuteChat.IChatUserInfo))
End Function
End Class
Public Overrides Function CreateDataManagerInstance(ByVal portal As CuteChat.AppPortal) As CuteChat.AppDataManager
Return New MyDataManager(portal)
End Function
End Class