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);
        }
Ejemplo n.º 2
0
        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);
        }