public void CMD_UserRegistration(Client player, string password) { if (_userRepository.GetAccount(player.name).ToString() != player.name) { String saltedPassword = PasswordDerivation.Derive(password); bool anyData = API.hasEntityData(player, "FlyingHours"); int FlyingHours; if (anyData == true) { FlyingHours = API.getEntityData(player, "FlyingHours"); } else { FlyingHours = 75462; } UserAccount account = new UserAccount { Username = player.name, Hash = saltedPassword, Rank = "Pilot", Adminrank = "User", FlyingScore = FlyingHours }; _userRepository.RegisterAccount(account); API.sendChatMessageToPlayer(player, "You're now registered!"); API.sendChatMessageToAll(player.name + " has registered an account!"); API.consoleOutput(player.name + " Has just registered!"); } else { API.sendChatMessageToPlayer(player, "You have already registered an account!"); } }
/// <summary> /// Funktion mit der wir einen Spieler in der Datenbank anlegen. /// </summary> /// <param name="iplayer"></param> /// <param name="password"></param> public static void RegisterPlayer(IPlayer iplayer, string password) { //Derive verschlüsselt das übergebene Passwort. string saltedPassword = PasswordDerivation.Derive(password); //Hier wird eine MySql-Verbindung aufgebaut. using (MySqlConnection connection = new MySqlConnection(Settings.Server_Settings.GetConnectionString())) { try { //Hier wird die Verbindung geöffnet connection.Open(); //Wir erstellen einen Befehl, der später ausgeführt werden soll MySqlCommand command = connection.CreateCommand(); //Wir füllen den Befehl mit einem Querystring mit der Anweisung INSERT INTO command.CommandText = "INSERT INTO users (name, password, level, adminlevel, cash) VALUES (@name, @password, @level, @adminlevel, @cash)"; //Wir fügen unsere gewünschten Variablen hinzu, welche in die Tabelle eingefügt werden sollen command.Parameters.AddWithValue("@name", iplayer.Name); command.Parameters.AddWithValue("@password", saltedPassword); command.Parameters.AddWithValue("@level", iplayer.Level); command.Parameters.AddWithValue("@adminlevel", iplayer.AdminLevel); command.Parameters.AddWithValue("@cash", iplayer.Cash); //Query wird ausgeführt command.ExecuteNonQuery(); //Verbindung wird geschlossen connection.Close(); } catch (Exception e) { //Bei Fehler geben wir Fehlermessage und Stacktrace auf die Konsole aus NAPI.Util.ConsoleOutput($"[Exception] RegisterAccount: {e.Message}"); NAPI.Util.ConsoleOutput($"[Exception] RegisterAccount: {e.StackTrace}"); } } }