public User LoginUser(string systemName)
        {
            User currentUser = new User();

            currentUser = userConnector.GetUser(systemName);
            return(currentUser);
        }
示例#2
0
        /* The GetUserById MessageHandler
         * It handles messages of GET_USER_BY_ID_REQUEST type.
         */
        private static void GetUserById(RMessage message, TcpClient connection)
        {
            Console.WriteLine("GetUserById");
            UserData user         = UserConnector.GetUser((UInt32)message.Data);
            RMessage replyMessage = new RMessage(MessageType.GET_USER_BY_ID_REPLY, user);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
示例#3
0
        /* The SignIn MessageHandler
         * It handles messages of SIGN_IN_REQUEST type.
         */
        private static void SignIn(RMessage message, TcpClient connection)
        {
            RMessage replyMessage;

            UserData user1 = (UserData)message.Data;
            UserData user2 = UserConnector.GetUser(user1.Username);

            // Check if the password match
            if (user2 != null && user2.Password != user1.Password)
            {
                user2 = null;
            }

            // If the credentials do not match, refuse the authentification
            if (user2 == null)
            {
                ServerCore.GetWorkerByConnection(connection).SendMessage(
                    new RMessage(MessageType.SIGN_IN_REPLY, null));
                return;
            }

            // If the user can authenticate, disconnect another user connected
            // with the same username
            if (user2 != null)
            {
                TcpClient previousConnection = ServerCore.GetConnectionById(user2.Id);
                if (previousConnection != null)
                {
                    ServerCore.RemoveIdConnectionMapping(user2.Id, previousConnection);
                    replyMessage =
                        new RMessage(
                            MessageType.SIGN_OUT_REPLY,
                            user2);
                    ServerCore.GetWorkerByConnection(previousConnection)
                    .SendMessage(replyMessage);
                }
            }

            List <Object> payload = new List <Object>();

            payload.Add(user2);                                        // user data
            payload.Add(DomainConnector.GetAllDomains());              // all domains
            payload.Add(DomainConnector.GetUserValidations(user2.Id)); // domains for which the user has certificates
            replyMessage =
                new RMessage(
                    MessageType.SIGN_IN_REPLY,
                    payload);
            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);

            // If the user connected successfully, store the connection mapping
            if (user2 != null)
            {
                ServerCore.AddIdConnectionMapping(user2.Id, connection);
            }
        }
示例#4
0
        /* The GetResourceOwner MessageHandler
         * It handles messages of GET_RESOURCE_OWNER type.
         */
        private static void GetResourceOwner(RMessage message, TcpClient connection)
        {
            Console.WriteLine("GetResourceOwner");
            List <Object> resultContent = new List <Object>();
            ResourceData  res           = (ResourceData)(((List <Object>)message.Data)[1]);

            resultContent.Add(((List <Object>)message.Data)[0]);
            resultContent.Add(((List <Object>)message.Data)[1]);
            resultContent.Add(UserConnector.GetUser(res.Owner));
            RMessage replyMessage = new RMessage(MessageType.GET_RESOURCE_OWNER_REPLY, resultContent);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
示例#5
0
        /* The UserTakenCheck MessageHandler
         * It handles messages of USERNAME_TAKEN_REQUEST type.
         */
        private static void UserTakenCheck(RMessage message, TcpClient connection)
        {
            Console.WriteLine("UserTakenCheck request");
            UserData user  = (UserData)message.Data;
            Boolean  taken = false;

            if (user != null)
            {
                taken = (UserConnector.GetUser(user.Username) != null);
            }
            RMessage replyMessage =
                new RMessage(
                    MessageType.USERNAME_TAKEN_REPLY,
                    taken);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
示例#6
0
        /* The GetFriendList MessageHandler
         * It handles messages of ADD_FRIEND_REQ type.
         */
        private static void AddFriend(RMessage message, TcpClient connection)
        {
            Console.WriteLine("AddFriend");
            uint     thisUserId = ServerCore.GetIdByConnection(connection);
            UserData friend     = UserConnector.GetUser((String)message.Data);
            UserData thisUser   = UserConnector.GetUser(thisUserId);

            if (friend == null)
            {
                return;
            }
            if (friend.Id == thisUserId)
            {
                return;
            }
            List <FriendshipData> friendships = FriendshipConnector.GetFriendshipList(thisUserId);

            foreach (FriendshipData friendshipIt in friendships)
            {
                if (friendshipIt.Former == friend.Id || friendshipIt.Latter == friend.Id)
                {
                    return;
                }
            }
            FriendshipData friendship = new FriendshipData(thisUserId, friend.Id, false);

            FriendshipConnector.AddFriendship(friendship);

            ClientWorker formerWorker = ServerCore.GetWorkerById(friendship.Former);
            ClientWorker latterWorker = ServerCore.GetWorkerById(friendship.Latter);

            RMessage replyMessageFormer = new RMessage(MessageType.ADD_FRIEND_REPLY, friend);
            RMessage replyMessageLatter = new RMessage(MessageType.ADD_FRIEND_REPLY, thisUser);
            RMessage replyMessage       = new RMessage(MessageType.ADD_FRIENDSHIP_REPLY, friendship);

            if (formerWorker != null)
            {
                formerWorker.SendMessage(replyMessageFormer);
                formerWorker.SendMessage(replyMessage);
            }
            if (latterWorker != null)
            {
                latterWorker.SendMessage(replyMessageLatter);
                latterWorker.SendMessage(replyMessage);
            }
        }
示例#7
0
        private static void GetAnswers(RMessage message, TcpClient connection)
        {
            Console.WriteLine("GetAnswers");
            UInt32            questionId = (UInt32)message.Data;
            List <AnswerData> answers    = LogConnector.GetQuestionAnswers(questionId);

            List <UserData> users = new List <UserData>();

            for (int i = 0; i < answers.Count; i++)
            {
                users.Add(UserConnector.GetUser(answers[i].Owner));
            }

            List <Object> data = new List <Object>();

            data.Add(answers);
            data.Add(users);
            RMessage replyMessage = new RMessage(MessageType.GET_QUESTION_ANSWERS_REPLY, data);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
示例#8
0
        /* The CreateNewUser MessageHandler
         * It handles messages of CREATE_NEW_USER_REQUEST type.
         */
        private static void CreateNewUser(RMessage message, TcpClient connection)
        {
            Console.WriteLine("CreateNewUser request");

            List <object>     items   = (List <object>)message.Data;
            UserData          user    = (UserData)items[0];
            List <DomainData> domains = (List <DomainData>)items[1];
            List <int>        scores  = (List <int>)items[2];

            double initialRank = 0;

            for (int i = 0; i < domains.Count; ++i)
            {
                initialRank += GetRank(scores[i]);
            }

            UserConnector.AddUser(user.Username, user.Password, user.Email, initialRank);
            user = UserConnector.GetUser(user.Username);

            foreach (DomainData item in domains)
            {
                ValidationConnector.AddValidation(user.Id, item.ID);
            }
        }