Advertisement
Guest User

Untitled

a guest
Sep 9th, 2017
595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.71 KB | None | 0 0
  1. public class AccountController
  2.     {
  3.         #region Properties
  4.         public string AccountId;
  5.         public IAccountData Account;
  6.  
  7.         public Client Client;
  8.  
  9.         public static Vector3 Spawnpoint = new Vector3(447.1f, -984.21f, 30.69f);
  10.         #endregion
  11.  
  12.         #region Constructur
  13.         public AccountController(Account account, Client client)
  14.         {
  15.             Account = account;
  16.             Client = client;
  17.             client.setData("ACCOUNT", this);
  18.             Account.LastLogin = DateTime.Now.ToString("dd/MM/yyyy/HH/mm/ss");
  19.             Account.Online = 1;
  20.         }
  21.         #endregion
  22.  
  23.         #region Klassen-Methode
  24.         /// <summary>
  25.         /// Überprüft das Passwort des Spielers.
  26.         /// </summary>
  27.         public static Boolean CheckPassword(Client player, string strPassword)
  28.         {
  29.             var connection = new MySqlConnection(MySQL.ConnectionString);
  30.             var command = connection.CreateCommand();
  31.             command.CommandText = "SELECT * FROM users WHERE Username=@username LIMIT 1;";
  32.             command.Parameters.AddWithValue("@username", player.name);
  33.             connection.Open();
  34.             var reader = command.ExecuteReader();
  35.             while (reader.Read())
  36.             {
  37.                 string password = reader.GetString("Password");
  38.                 bool isPasswordCorrect = BCr.BCrypt.Verify(strPassword, password);
  39.                 if (isPasswordCorrect == true)
  40.                 {
  41.                     //Passwort ist korrekt
  42.                     API.shared.consoleOutput("[MYSQL][CHECK] CheckPassword: Passwort ist korrekt. ( " + player.name + " )");
  43.                     reader.Close();
  44.                     connection.Close();
  45.                     return true;
  46.                 }
  47.             }
  48.             API.shared.sendChatMessageToPlayer(player, "Das Passwort ist nicht korrekt!");
  49.             API.shared.consoleOutput("[MYSQL][ERROR] CheckPassword: Passwort nicht korrekt. ( " + player.name + " )");
  50.             reader.Close();
  51.             connection.Close();
  52.             return false;
  53.         }
  54.  
  55.         /// <summary>
  56.         /// Prüft, ob ein Account existiert.
  57.         /// </summary>
  58.         public static Boolean PlayerExists(Client player)
  59.         {
  60.             var connection = new MySqlConnection(MySQL.ConnectionString);
  61.             var command = connection.CreateCommand();
  62.             command.CommandText = "SELECT * FROM users";
  63.             connection.Open();
  64.             var reader = command.ExecuteReader();
  65.             while (reader.Read())
  66.             {
  67.                 string name = reader.GetString("Username");
  68.                 if (name == player.name)
  69.                 {
  70.                     //Name ist gleich der Spielername - Spieler existiert
  71.                     API.shared.consoleOutput("[MYSQL][CHECK] PlayerExists: Spieler existiert.  ( " + player.name + " )");
  72.                     reader.Close();
  73.                     connection.Close();
  74.                     return true;
  75.                 }
  76.             }
  77.             API.shared.consoleOutput("[MYSQL][ERROR] PlayerExists: Spieler existiert nicht. ( " + player.name + " )");
  78.             return false;
  79.         }
  80.  
  81.  
  82.         /// <summary>
  83.         /// Registriert einen Account.
  84.         /// </summary>
  85.         public static void RegisterAccount(Client player, string strPassword)
  86.         {
  87.             string strDate = DateTime.Now.ToString("dd/MM/yyyy/HH/mm/ss");
  88.             var hash = BCr.BCrypt.HashPassword(strPassword, BCr.BCrypt.GenerateSalt(12));
  89.             using (var connection = new MySqlConnection(MySQL.ConnectionString))
  90.             {
  91.                 try
  92.                 {
  93.                     var cmd = connection.CreateCommand();
  94.                     connection.Open();
  95.                     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')";
  96.                     cmd.Parameters.AddWithValue("@username", player.name);
  97.                     cmd.Parameters.AddWithValue("@socialClubName", player.socialClubName);
  98.                     cmd.Parameters.AddWithValue("@hash", hash);
  99.                     cmd.Parameters.AddWithValue("@cdate", strDate);
  100.                     cmd.ExecuteNonQuery();
  101.                     connection.Close();
  102.  
  103.                     LoadPlayer(player);
  104.                 }
  105.                 catch (MySqlException e)
  106.                 {
  107.                     API.shared.consoleOutput("[MYSQL][ERROR] " + e);
  108.                 }
  109.             }
  110.             API.shared.sendChatMessageToPlayer(player, "Du bist jetzt registriert! Bitte logge Dich nun mit /login [Passwort] ein.");
  111.             player.freeze(true);
  112.         }
  113.  
  114.  
  115.         /// <summary>
  116.         /// Lädt die Account Daten eines Spielers
  117.         /// </summary>
  118.         public static void LoadPlayer(Client player)
  119.         {
  120.             using (var connection = new MySqlConnection(MySQL.ConnectionString))
  121.             {
  122.                 try
  123.                 {
  124.                     var cmd = connection.CreateCommand();
  125.                     cmd.CommandText = "SELECT * FROM users WHERE Username=@username";
  126.                     cmd.Parameters.AddWithValue("@username", player.name);
  127.                     connection.Open();
  128.                     var reader = cmd.ExecuteReader();
  129.                    
  130.                     while (reader.Read())
  131.                     {
  132.                         Account account = new Account(
  133.                             reader.GetInt32("Uid"),
  134.                             reader.GetString("Username"),
  135.                             reader.GetString("SocialClub_username"),
  136.                             reader.GetString("Password"),
  137.                             reader.GetInt32("Level"),
  138.                             reader.GetInt32("AdminLevel"),
  139.                             reader.GetInt32("Online"),
  140.                             reader.GetString("CreateDate"),
  141.                             reader.GetString("LastLogin"),
  142.                             reader.GetInt32("Fraktion"),
  143.                             reader.GetInt32("Rang"),
  144.                             reader.GetString("IP")
  145.                         );
  146.  
  147.                         new AccountController(account, player);
  148.                     }
  149.  
  150.                     reader.Close();
  151.                     connection.Close();
  152.                 }
  153.                 catch (MySqlException e)
  154.                 {
  155.                     API.shared.consoleOutput("[MYSQL][ERROR] " + e);
  156.                 }
  157.                 finally {
  158.                     connection.Close();
  159.                 }
  160.             }
  161.         }
  162.  
  163.         /// <summary>
  164.         /// Speichert die Daten eines Spielers.
  165.         /// </summary>
  166.         public static void SavePlayer(Client player)
  167.         {
  168.             /*var pos = $"{player.position.X}/ {player.position.Y}/ {player.position.Z}";
  169.             MySQL.Query($"UPDATE Accounts SET Position = '{pos}' WHERE SocialClubName = '{player.socialClubName}'");*/
  170.             //MySQL.Query($"UPDATE")
  171.             using (var connection = new MySqlConnection(MySQL.ConnectionString))
  172.             {
  173.                 try
  174.                 {
  175.                     var cmd = connection.CreateCommand();
  176.                     cmd.CommandText = "UPDATE users SET Level = @level, AdminLevel = @admin, Online = @logged, CreateDate = @cdate, LastLogin = @ldate, Fraktion = @frak, Rang = @rang WHERE username=@username";
  177.                     cmd.Parameters.AddWithValue("@username", player.name);
  178.                     cmd.Parameters.AddWithValue("@level", API.shared.getEntityData(player, "Level"));
  179.                     cmd.Parameters.AddWithValue("@admin", API.shared.getEntityData(player, "AdminLevel"));
  180.                     cmd.Parameters.AddWithValue("@logged", API.shared.getEntityData(player, "Online"));
  181.                     cmd.Parameters.AddWithValue("@cdate", API.shared.getEntityData(player, "CreateDate"));
  182.                     cmd.Parameters.AddWithValue("@ldate", API.shared.getEntityData(player, "LastLogin"));
  183.                     cmd.Parameters.AddWithValue("@frak", API.shared.getEntityData(player, "Fraktion"));
  184.                     cmd.Parameters.AddWithValue("@rang", API.shared.getEntityData(player, "Rang"));
  185.                     connection.Open();
  186.                     cmd.ExecuteNonQuery();
  187.                     connection.Close();
  188.                     API.shared.consoleOutput("[MYSQL][CHECK] SavePlayer: Spieler wurde gespeichert.  ( " + player.name + " )");
  189.                 }
  190.                 catch (MySqlException e)
  191.                 {
  192.                     API.shared.consoleOutput("[MYSQL][ERROR] " + e);
  193.                 }
  194.             }
  195.         }
  196.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement