/// <summary> /// Mit dieser Funktion wird überprüft ob das übergeben Passwort (input) mit dem aus der Datenbank übereinstimmt. /// </summary> /// <param name="name"></param> /// <param name="input"></param> /// <returns></returns> public static bool CheckPassword(string name, string input) { //Variable um Passwort aus der Datenbank zwischenzuspeichern string password = ""; //Hier wird eine MySql-Verbindung aufgebaut. using (MySqlConnection connection = new MySqlConnection(Settings.Server_Settings.GetConnectionString())) { //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 SELECT command.CommandText = "SELECT password FROM users WHERE name=@name LIMIT 1"; //Wir fügen unsere gewünschten Variablen hinzu, welche in der Tabelle ausgelesen werden sollen command.Parameters.AddWithValue("@name", name); //Es wird ein Reader ausgeführt, der die Zeilen aus der Tabelle ausliest using (MySqlDataReader reader = command.ExecuteReader()) { //Reader hat Zeilen gefunden if (reader.HasRows) { //Reader soll lesen reader.Read(); //Password wird ausgelesen und im oben angelegten string gespeichert password = reader.GetString("password"); } } //Verbindung wird geschlossen connection.Close(); } //Verify überprüft ob das verschlüsselte Passwort (password) mit dem unverschlüsselten Input (input) übereinstimmt if (PasswordDerivation.Verify(password, input)) { //Return true, wenn das Passwort stimmt return(true); } //Return false, wenn das Passwort nicht übereinstimmt return(false); }
public void CMD_UserLogin(Client player, string password) { UserAccount account = _userRepository.GetAccount(player.name); string saltedPassword = account.Hash; bool isPasswordCorrect = PasswordDerivation.Verify(saltedPassword, password); if (isPasswordCorrect) { API.setEntityData(player, "FlyingHours", account.FlyingScore); API.setEntityData(player, "UserRank", account.Rank); API.setEntityData(player, "AdminRank", account.Adminrank); API.setEntityData(player, "Logged in", true); API.sendChatMessageToPlayer(player, "You're now logged in!"); } else { API.sendChatMessageToPlayer(player, "Incorrect password entered!"); } }