//Handles a users account login request public static void HandleAccountLoginRequest(int ClientID, ref NetworkPacket Packet) { //Log what we are doing here CommunicationLog.LogIn(ClientID + "Account Login Request."); //Get the username and password the user provided for trying to login with string AccountName = Packet.ReadString(); string AccountPass = Packet.ReadString(); //Make sure we are still connected to this client ClientConnection Client = ConnectionManager.GetClient(ClientID); if (Client == null) { //Ignore the request if we cant find this clients network connection MessageLog.Print("ERROR: Connection to this client could not be found, no way to reply to their Account Login Request so it has been aborted."); return; } //Make sure there is account that exists with the name that was provided by the user if (!AccountsDatabase.DoesAccountExist(AccountName)) { //Reject the request if that account doesnt exist AccountManagementPacketSenders.SendAccountLoginReply(ClientID, false, "That account doesnt exist."); return; } //Make sure someone else isnt already logged into that account if (ConnectionManager.AccountLoggedIn(AccountName)) { //Reject the request if the account is already being used AccountManagementPacketSenders.SendAccountLoginReply(ClientID, false, "That account is already logged in."); return; } //Check if they provided the correct password if (!AccountsDatabase.IsPasswordCorrect(AccountName, AccountPass)) { //Reject the request if the password was wrong AccountManagementPacketSenders.SendAccountLoginReply(ClientID, false, "The password was incorrect."); return; } //Fetch all of the accounts information from the database and store it with this client AccountData Account = AccountsDatabase.GetAccountData(AccountName); Client.Account = Account; //Grant this users account login request MessageLog.Print(ClientID + " logged into the account " + AccountName); AccountManagementPacketSenders.SendAccountLoginReply(ClientID, true, "Login Request Granted."); }
//Handles a users new user account registration request public static void HandleAccountRegisterRequest(int ClientID, ref NetworkPacket Packet) { //Log what we are doing here CommunicationLog.LogIn(ClientID + " Account Registration Request."); //Fetch the username and password the client has provided string AccountName = Packet.ReadString(); string AccountPass = Packet.ReadString(); //Make sure we are still connected to this client ClientConnection Client = ConnectionManager.GetClient(ClientID); if (Client == null) { //Ignore the request if we cant find this clients network connection MessageLog.Print("ERROR: Connection to this client could not be found, no way to reply to their Account Registration Request."); return; } //Make sure this username isnt already taken by someone else if (AccountsDatabase.DoesAccountExist(AccountName)) { //Reject the request is the username is already taken AccountManagementPacketSenders.SendAccountRegistrationReply(ClientID, false, "That username is already taken."); return; } //Make sure they have provided us with a valid username and password if (!ValidInputCheckers.IsValidUsername(AccountName)) { //Reject the request if the username contained any banned characters AccountManagementPacketSenders.SendAccountRegistrationReply(ClientID, false, "The username you provided contained banned characters."); return; } if (!ValidInputCheckers.IsValidUsername(AccountPass)) { //Reject the request if the password contained any banned characters AccountManagementPacketSenders.SendAccountRegistrationReply(ClientID, false, ("The password you provided contained banned characters.")); return; } //Register the new account into the database and tell the client their request has been granted AccountsDatabase.RegisterNewAccount(AccountName, AccountPass); AccountManagementPacketSenders.SendAccountRegistrationReply(ClientID, true, "Account Registered Successfully."); }
//Tries using the command arguments for performing an account info search private void TryAccountInfoSearch(string[] Input) { //Get the accounts name string AccountName = Input[1]; //Make sure the account exists if (!AccountsDatabase.DoesAccountExist(AccountName)) { MessageLog.Print("ERROR: There is no account called " + AccountName + ", no information to display."); return; } //Get the accounts information from the database AccountData Data = AccountsDatabase.GetAccountData(AccountName); //Define a string display all the accounts info, then display it all in the message window string AccountInfo = "ACCOUNT INFO: " + AccountName + " has " + Data.CharacterCount + (Data.CharacterCount == 1 ? " character" : " characters"); switch (Data.CharacterCount) { case (0): AccountInfo += "."; break; case (1): AccountInfo += ", named " + Data.FirstCharacterName; break; case (2): AccountInfo += ", named " + Data.FirstCharacterName + " and " + Data.SecondCharacterName; break; case (3): AccountInfo += ", named " + Data.FirstCharacterName + ", " + Data.SecondCharacterName + " and " + Data.ThirdCharacterName; break; } AccountInfo += "."; MessageLog.Print(AccountInfo); }