Re: Community Server Problem

  •  08-30-2006, 1:38 PM

    Re: Community Server Problem

    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>

View Complete Thread