public override Packet OnPacketReceive(Packet receivedPacket) { ClientPacketAskUserActivateAccout clientPacketAskUserActivateAccout = receivedPacket as ClientPacketAskUserActivateAccout; ConsoleHelper.Write("Receive - ClientPacketAskUserActivateAccout"); PLFUser user = clientPacketAskUserActivateAccout.User; String userPassword = clientPacketAskUserActivateAccout.UserPassword.ToSQL(); String userSecretKey = KeyHelper.CreateRandomKey(); //insert new profile into DB MySqlCommand checkUserIdentityCommand = new MySqlCommand(); checkUserIdentityCommand.Connection = Program.mySQLManager.MySQLConnection.MysqlConnection; checkUserIdentityCommand.CommandText = $"SELECT * FROM `T_User` WHERE userNick='{user.UserNickName}' AND userPassword='******'"; PLFUser downloadedUser = null; MySqlDataReader mysqlDataReader = null; ServerPacketConfirmation serverPacketConfirmation; try { mysqlDataReader = checkUserIdentityCommand.ExecuteReader(); //open reader while (mysqlDataReader.Read()) { downloadedUser = new PLFUser(mysqlDataReader.GetInt32(0), mysqlDataReader.GetString(2), mysqlDataReader.GetString(3), mysqlDataReader.GetString(4), mysqlDataReader.GetString(5)); } if (mysqlDataReader != null && !mysqlDataReader.IsClosed) { mysqlDataReader.Close(); } if (downloadedUser != null) { //insert new profile into DB MySqlCommand registerNewConfirmKey = new MySqlCommand(); registerNewConfirmKey.Connection = Program.mySQLManager.MySQLConnection.MysqlConnection; registerNewConfirmKey.CommandText = $"DELETE FROM `T_RegisterKey` WHERE `regUserMail`='{downloadedUser.UserEMail}';" + $"INSERT INTO `T_RegisterKey`(`regUserMail`, `regKey`, `regKeyDeliver`) VALUES ('{downloadedUser.UserEMail}','{userSecretKey}','{DateTime.Now.Ticks}');"; registerNewConfirmKey.ExecuteNonQuery(); new Thread(() => { Program.mailManager.SendMail(downloadedUser.UserEMail, "PET LA FORME - Confirmation", $"Bonjour {downloadedUser.UserName}! Voici votre code d'activation de votre compte: " + $"{userSecretKey}. Merci de la rentrer dans votre application pour pouvoir activer votre compte ! Bonne journée !"); } ).Start(); serverPacketConfirmation = new ServerPacketConfirmation(true, NetworkError.NONE); } else { serverPacketConfirmation = new ServerPacketConfirmation(false, NetworkError.SQL_USER_UNKNOWN); } } catch (MySqlException e) { Console.WriteLine(e.Number + " - " + e.Message); NetworkError networkError; switch (e.Number) { case 1062: networkError = NetworkError.SQL_USER_EXIST; break; case 1064: networkError = NetworkError.GLOBAL_UNKNOWN; break; default: networkError = NetworkError.GLOBAL_UNKNOWN; break; } serverPacketConfirmation = new ServerPacketConfirmation(false, networkError); } catch (Exception e) { serverPacketConfirmation = new ServerPacketConfirmation(false, NetworkError.GLOBAL_UNKNOWN); Console.WriteLine(e.Message); } ConsoleHelper.Write("Send - ServerPacketConfirmation"); return(serverPacketConfirmation); }
public override Packet OnPacketReceive(Packet receivedPacket) { //get packet ClientPacketUserRegister clientPacketUserRegister = receivedPacket as ClientPacketUserRegister; ConsoleHelper.Write("Receive - ClientPacketUserRegister"); //read packet infos PLFUser newUser = clientPacketUserRegister.User; String userPassword = clientPacketUserRegister.UserPassword.ToSQL(); String userSecretKey = KeyHelper.CreateRandomKey(); //insert new profile into DB command MySqlCommand registerNewUserCommand = new MySqlCommand(); registerNewUserCommand.Connection = Program.mySQLManager.MySQLConnection.MysqlConnection; registerNewUserCommand.CommandText = //register profile $"INSERT INTO `T_User`(`userPassword`, `userNick`, `userName`, `userSurname`, `userEmail`) VALUES " + $"('{userPassword}','{newUser.UserNickName.ToSQL()}','{newUser.UserName.ToSQL()}','{newUser.UserSurname.ToSQL()}','{newUser.UserEMail.ToSQL()}');" + //register key $"INSERT INTO `T_RegisterKey`(`regUserMail`, `regKey`, `regKeyDeliver`) VALUES ('{newUser.UserEMail}','{userSecretKey}','{DateTime.Now.Ticks}');" + //get user id $"SELECT LAST_INSERT_ID()"; MySqlDataReader mysqlDataReader = null; //command reader ServerPacketUserRegister serverPacketUserRegister; //register packet answer try { int userID = 0; //Execute reader mysqlDataReader = registerNewUserCommand.ExecuteReader(); //open reader and read ID while (mysqlDataReader.Read()) { userID = mysqlDataReader.GetInt32(0); } //new answer, register success serverPacketUserRegister = new ServerPacketUserRegister(true, userID, NetworkError.NONE); //send confirmation mail MailHelper.SendRegisterConfirmationMail(newUser, userSecretKey); } catch (MySqlException e) { //write sql error Console.WriteLine(e.Number + " - " + e.Message); NetworkError networkError; //switch between sql errors switch (e.Number) { case 1062: networkError = NetworkError.SQL_USER_EXIST; break; case 1064: networkError = NetworkError.GLOBAL_UNKNOWN; break; default: networkError = NetworkError.GLOBAL_UNKNOWN; break; } //new answer, register fail serverPacketUserRegister = new ServerPacketUserRegister(false, -1, networkError); } catch (Exception e) { //new answer, register fail serverPacketUserRegister = new ServerPacketUserRegister(false, -1, NetworkError.GLOBAL_UNKNOWN); Console.WriteLine(e.Message); } //close reader if (mysqlDataReader != null && !mysqlDataReader.IsClosed) { mysqlDataReader.Close(); } ConsoleHelper.Write("Send - ServerPacketUserRegister"); return(serverPacketUserRegister); }