Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AccountController
- {
- #region Properties
- public string AccountId;
- public IAccountData Account;
- public Client Client;
- public static Vector3 Spawnpoint = new Vector3(447.1f, -984.21f, 30.69f);
- #endregion
- #region Constructur
- public AccountController(Account account, Client client)
- {
- Account = account;
- Client = client;
- client.setData("ACCOUNT", this);
- Account.LastLogin = DateTime.Now.ToString("dd/MM/yyyy/HH/mm/ss");
- Account.Online = 1;
- }
- #endregion
- #region Klassen-Methode
- /// <summary>
- /// Überprüft das Passwort des Spielers.
- /// </summary>
- public static Boolean CheckPassword(Client player, string strPassword)
- {
- var connection = new MySqlConnection(MySQL.ConnectionString);
- var command = connection.CreateCommand();
- command.CommandText = "SELECT * FROM users WHERE Username=@username LIMIT 1;";
- command.Parameters.AddWithValue("@username", player.name);
- connection.Open();
- var reader = command.ExecuteReader();
- while (reader.Read())
- {
- string password = reader.GetString("Password");
- bool isPasswordCorrect = BCr.BCrypt.Verify(strPassword, password);
- if (isPasswordCorrect == true)
- {
- //Passwort ist korrekt
- API.shared.consoleOutput("[MYSQL][CHECK] CheckPassword: Passwort ist korrekt. ( " + player.name + " )");
- reader.Close();
- connection.Close();
- return true;
- }
- }
- API.shared.sendChatMessageToPlayer(player, "Das Passwort ist nicht korrekt!");
- API.shared.consoleOutput("[MYSQL][ERROR] CheckPassword: Passwort nicht korrekt. ( " + player.name + " )");
- reader.Close();
- connection.Close();
- return false;
- }
- /// <summary>
- /// Prüft, ob ein Account existiert.
- /// </summary>
- public static Boolean PlayerExists(Client player)
- {
- var connection = new MySqlConnection(MySQL.ConnectionString);
- var command = connection.CreateCommand();
- command.CommandText = "SELECT * FROM users";
- connection.Open();
- var reader = command.ExecuteReader();
- while (reader.Read())
- {
- string name = reader.GetString("Username");
- if (name == player.name)
- {
- //Name ist gleich der Spielername - Spieler existiert
- API.shared.consoleOutput("[MYSQL][CHECK] PlayerExists: Spieler existiert. ( " + player.name + " )");
- reader.Close();
- connection.Close();
- return true;
- }
- }
- API.shared.consoleOutput("[MYSQL][ERROR] PlayerExists: Spieler existiert nicht. ( " + player.name + " )");
- return false;
- }
- /// <summary>
- /// Registriert einen Account.
- /// </summary>
- public static void RegisterAccount(Client player, string strPassword)
- {
- string strDate = DateTime.Now.ToString("dd/MM/yyyy/HH/mm/ss");
- var hash = BCr.BCrypt.HashPassword(strPassword, BCr.BCrypt.GenerateSalt(12));
- using (var connection = new MySqlConnection(MySQL.ConnectionString))
- {
- try
- {
- var cmd = connection.CreateCommand();
- connection.Open();
- cmd.CommandText = "INSERT INTO users (Username, SocialClub_username, Password, Level, AdminLevel, Online, CreateDate, LastLogin, Fraktion, Rang, IP) VALUES (@username, @socialClubName, @hash, '1', '0', '0', @cdate, '0', '0', '0', 'Unbekannt')";
- cmd.Parameters.AddWithValue("@username", player.name);
- cmd.Parameters.AddWithValue("@socialClubName", player.socialClubName);
- cmd.Parameters.AddWithValue("@hash", hash);
- cmd.Parameters.AddWithValue("@cdate", strDate);
- cmd.ExecuteNonQuery();
- connection.Close();
- LoadPlayer(player);
- }
- catch (MySqlException e)
- {
- API.shared.consoleOutput("[MYSQL][ERROR] " + e);
- }
- }
- API.shared.sendChatMessageToPlayer(player, "Du bist jetzt registriert! Bitte logge Dich nun mit /login [Passwort] ein.");
- player.freeze(true);
- }
- /// <summary>
- /// Lädt die Account Daten eines Spielers
- /// </summary>
- public static void LoadPlayer(Client player)
- {
- using (var connection = new MySqlConnection(MySQL.ConnectionString))
- {
- try
- {
- var cmd = connection.CreateCommand();
- cmd.CommandText = "SELECT * FROM users WHERE Username=@username";
- cmd.Parameters.AddWithValue("@username", player.name);
- connection.Open();
- var reader = cmd.ExecuteReader();
- while (reader.Read())
- {
- Account account = new Account(
- reader.GetInt32("Uid"),
- reader.GetString("Username"),
- reader.GetString("SocialClub_username"),
- reader.GetString("Password"),
- reader.GetInt32("Level"),
- reader.GetInt32("AdminLevel"),
- reader.GetInt32("Online"),
- reader.GetString("CreateDate"),
- reader.GetString("LastLogin"),
- reader.GetInt32("Fraktion"),
- reader.GetInt32("Rang"),
- reader.GetString("IP")
- );
- new AccountController(account, player);
- }
- reader.Close();
- connection.Close();
- }
- catch (MySqlException e)
- {
- API.shared.consoleOutput("[MYSQL][ERROR] " + e);
- }
- finally {
- connection.Close();
- }
- }
- }
- /// <summary>
- /// Speichert die Daten eines Spielers.
- /// </summary>
- public static void SavePlayer(Client player)
- {
- /*var pos = $"{player.position.X}/ {player.position.Y}/ {player.position.Z}";
- MySQL.Query($"UPDATE Accounts SET Position = '{pos}' WHERE SocialClubName = '{player.socialClubName}'");*/
- //MySQL.Query($"UPDATE")
- using (var connection = new MySqlConnection(MySQL.ConnectionString))
- {
- try
- {
- var cmd = connection.CreateCommand();
- cmd.CommandText = "UPDATE users SET Level = @level, AdminLevel = @admin, Online = @logged, CreateDate = @cdate, LastLogin = @ldate, Fraktion = @frak, Rang = @rang WHERE username=@username";
- cmd.Parameters.AddWithValue("@username", player.name);
- cmd.Parameters.AddWithValue("@level", API.shared.getEntityData(player, "Level"));
- cmd.Parameters.AddWithValue("@admin", API.shared.getEntityData(player, "AdminLevel"));
- cmd.Parameters.AddWithValue("@logged", API.shared.getEntityData(player, "Online"));
- cmd.Parameters.AddWithValue("@cdate", API.shared.getEntityData(player, "CreateDate"));
- cmd.Parameters.AddWithValue("@ldate", API.shared.getEntityData(player, "LastLogin"));
- cmd.Parameters.AddWithValue("@frak", API.shared.getEntityData(player, "Fraktion"));
- cmd.Parameters.AddWithValue("@rang", API.shared.getEntityData(player, "Rang"));
- connection.Open();
- cmd.ExecuteNonQuery();
- connection.Close();
- API.shared.consoleOutput("[MYSQL][CHECK] SavePlayer: Spieler wurde gespeichert. ( " + player.name + " )");
- }
- catch (MySqlException e)
- {
- API.shared.consoleOutput("[MYSQL][ERROR] " + e);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement