public User LoginUser(string systemName) { User currentUser = new User(); currentUser = userConnector.GetUser(systemName); return(currentUser); }
/* 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); }
/* 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); } }
/* 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); }
/* 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); }
/* 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); } }
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); }
/* 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); } }