Yes for the 1.x files. Here is my global.asax file.
<%@ Application Language="C#" %>
<%@ Import Namespace="CuteSoft.Chat" %>
<%@ Implements Interface="CuteSoft.Chat.IHttpApplicationConnectionStringProvider" %>
<%@ Implements Interface="CuteSoft.Chat.IHttpApplicationUserAdapter" %>
<%@ Implements Interface="CuteSoft.Chat.IHttpApplicationDataProvider" %>
<%@ Implements Interface="CuteSoft.Chat.IHttpApplicationSupportLogin" %>
<script runat=server Language=C#>
static public string AppConnectionString
{
get
{
string connectionstring=System.Configuration.ConfigurationSettings.AppSettings["SiteSqlServer"];
if(connectionstring==null||connectionstring.Trim()=="")
throw(new Exception("Missing appSetting : SiteSqlServer"));
return connectionstring.Trim();
}
}
//CuteChat Integration !!!!
#region IHttpApplicationConnectionStringProvider Members
public string GetConnectionString(CuteSoft.Chat.UserIdentity user)
{
return AppConnectionString;
}
#endregion
#region IHttpApplicationUserAdapter Members
public string GetUserUniqueName()
{
//CommunityServer use 'asp.net - form - authentication'
if (Context.User.Identity.IsAuthenticated)
return Context.User.Identity.Name; //this is the CommunityServer.Components.User.Username
//of course use this...
//CommunityServer.Components.User user=CommunityServer.Users.GetUser(false)
//if(user.IsAnonymous)
return null;
}
public CuteSoft.Chat.UserIdentity GetUserIdentity()
{
string uniquename = GetUserUniqueName();
if (uniquename == null)
{
return CuteSoft.Chat.UserIdentity.CreateNull();
}
CuteSoft.Chat.UserIdentity identity = new CuteSoft.Chat.UserIdentity(uniquename, null, Request.UserHostAddress);
return identity;
}
#endregion
#region IHttpApplicationDataProvider Members
public string GetUserDisplayName(string useruniquename)
{
return CommunityServer.Users.FindUserByUsername(useruniquename).DisplayName;
}
public string[] ListUserUniqueName()
{
CommunityServer.UserQuery query = new CommunityServer.UserQuery();
CommunityServer.Components.UserSet userset = CommunityServer.Users.GetUsers(query, true);
ArrayList names = new ArrayList();
foreach (CommunityServer.Components.User user in userset.Users)
{
if (user.IsAnonymous) continue;
names.Add(user.Username);
}
return (string[])names.ToArray(typeof(string));
}
public bool IsAdministrator(string useruniquename)
{
return CommunityServer.Users.FindUserByUsername(useruniquename).IsAdministrator;
}
public string[] SearchUserUniqueNameByDisplayName(string userDisplaName)
{
CommunityServer.UserQuery query = new CommunityServer.UserQuery();
query.SearchText = userDisplaName;
query.IncludeHiddenUsers = true;
query.SearchUsername = true;//there's no SearchDisplayName ?
CommunityServer.Components.UserSet userset = CommunityServer.Users.GetUsers(query, true);
ArrayList names = new ArrayList();
foreach (CommunityServer.Components.User user in userset.Users)
{
if (user.IsAnonymous) continue;
names.Add(user.Username);
}
return (string[])names.ToArray(typeof(string));
}
public bool IsLobbyAdmin(string useruniquename, CuteSoft.Chat.CuteChatLobby lobby)
{
if (lobby.Integration == null) return false;
CommunityServer.Components.User user=CommunityServer.Users.FindUserByUsername(useruniquename);
if(user==null)
return false;
if (lobby.Integration.StartsWith("Forum:"))
{
int forumid = int.Parse(lobby.Integration.Substring(6));
CommunityServer.Discussions.Components.Forum forum = CommunityServer.Discussions.Components.Forums.GetForum(forumid);
if (forum == null)
{
return false;
}
return CommunityServer.Components.Permissions.ValidatePermissions(forum
, CommunityServer.Components.Permission.Administer
, user);
}
if (lobby.Integration.StartsWith("Blog:"))
{
int blogid = int.Parse(lobby.Integration.Substring(5));
CommunityServer.Blogs.Components.Weblog blog = CommunityServer.Blogs.Components.Weblogs.GetWeblog(blogid);
if (blog == null)
{
return false;
}
return CommunityServer.Components.Permissions.ValidatePermissions(blog
, CommunityServer.Components.Permission.Administer
, user);
}
return false;
}
#endregion
#region IHttpApplicationSupportLogin Members
public void SupportInit()
{
//no auto login.
}
public bool SupportLogin(string username, string password)
{
if (username == null) return false;
username = username.Trim();
if (username == "") return false;
if (password == null) return false;
//IMPORTANT: if the user is not the operator , do not return true;
//use the CuteChat API to check it
if (CuteSoft.Chat.ChatApi.FindOperator(username) == null)
return false;
//check whether the user is exists
CommunityServer.Components.User user = CommunityServer.Users.FindUserByUsername(username);
if (user == null)
return false;
//use CommunityServer API to validate the user
user = new CommunityServer.Components.User();
user.Username = username;
user.Password = password;
CommunityServer.Components.LoginUserStatus status = CommunityServer.Users.ValidUser(user);
if(status!=CommunityServer.Components.LoginUserStatus.Success)
{
return false;
}
//FORM-Authentication ,
System.Web.Security.FormsAuthentication.SetAuthCookie(user.Username, false, "/");
return true;
}
#endregion
</script>