using System; using System.Text; using System.Linq; using System.Collections.Generic; using System.IO; using System.Data.SqlClient; namespace Server { class UserManagment { static string ConnectionString = @"Data Source=.\SQLExpress;Initial Catalog=Account;Integrated Security=SSPI"; static public bool Exists(string username, string password) { using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { sqlConn.Open(); SqlCommand sc = new SqlCommand("SELECT * FROM tAccounts WHERE sUsername = @Username AND sUserPass = @Password", sqlConn); sc.Parameters.AddWithValue("@Username", username); sc.Parameters.AddWithValue("@Password", password); SqlDataReader dr = sc.ExecuteReader(); if(dr.HasRows) return true; else return false; } } static private string UserData(string username, string info) { using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { sqlConn.Open(); SqlCommand sc = new SqlCommand("SELECT * FROM tAccounts WHERE sUsername = @Username", sqlConn); sc.Parameters.AddWithValue("@Username", username); SqlDataReader dr = sc.ExecuteReader(); dr.Read(); return dr[info].ToString(); } } static private string CreateToken(string nEMID) { using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { string token = TokenGenerate(30); sqlConn.Open(); SqlCommand sc = new SqlCommand("INSERT INTO tTokens (nEMID, sToken) VALUES (@nEMID, @Token)", sqlConn); sc.Parameters.AddWithValue("@nEMID", nEMID); sc.Parameters.AddWithValue("@Token", token); sc.ExecuteScalar(); return token; } } static public string Autentication(string username) { using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { sqlConn.Open(); SqlCommand sc = new SqlCommand("SELECT nAuthID FROM tAccounts WHERE sUsername = @Username", sqlConn); sc.Parameters.AddWithValue("@Username", username); string AuthID = sc.ExecuteScalar().ToString(); if (AuthID == "-1") { return "-1"; } else if (Auth().Contains(Convert.ToInt32(AuthID))) { return CreateToken(UserData(username, "nEMID")); } else { return "2"; } } } static private int[] Auth() { List AuthList = new List(); using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) { sqlConn.Open(); SqlCommand sc = new SqlCommand("SELECT nAuthID FROM tAuth WHERE nLoginable = @Loginable", sqlConn); sc.Parameters.AddWithValue("@Loginable", "1"); SqlDataReader dr = sc.ExecuteReader(); while (dr.Read()) { AuthList.Add(dr.GetInt32(0)); } return AuthList.ToArray(); } } static private readonly Random random = new Random(); static private string chars = "ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz123456789_."; static public string TokenGenerate(int size) { char[] buffer = new char[size]; for (int i = 0; i < size; i++) { buffer[i] = chars[random.Next(chars.Length)]; } return new string(buffer); } } }