/// <summary> /// Write login data to table /// </summary> /// <param name="login"> /// Login data to write /// </param> public static void WriteLoginData(DBLoginData login) { try { using (IDbConnection conn = Connector.GetConnection()) { conn.Execute( "INSERT INTO login (CreationDate, Email, FirstName, LastName, Username, Password, Allowed_Characters, Flags, AccountFlags, Expansions, GM) VALUES (@creationdate, @email, @firstname, @lastname,@username, @password, @allowed_characters, @flags, @accountflags, @expansions, @gm)", new { creationdate = DateTime.Now, email = login.Email, firstname = login.FirstName, lastname = login.LastName, username = login.Username, password = login.Password, allowed_characters = login.Allowed_Characters, flags = login.Flags, accountflags = login.AccountFlags, expansions = login.Expansions, gm = login.GM }); } } catch (Exception e) { LogUtil.ErrorException(e); throw; } }
/// <summary> /// Write new password to table /// </summary> /// <param name="login"> /// DBLoginData object /// </param> /// <returns> /// </returns> public static int WriteNewPassword(DBLoginData login) { try { using (IDbConnection conn = Connector.GetConnection()) { return(conn.Execute( "UPDATE login SET password=@pwd WHERE Username=@user LIMIT 1", new { pwd = login.Password, user = login.Username })); } } catch (Exception e) { LogUtil.ErrorException(e); return(0); } }
/// <summary> /// </summary> /// <param name="obj"> /// </param> private static void AddUser(string[] obj) { Colouring.Push(ConsoleColor.Red); bool argsOk = CheckAddUserParameters(obj); Colouring.Pop(); if (!argsOk) { return; } DBLoginData login = new DBLoginData { Username = obj[1], AccountFlags = 0, Allowed_Characters = int.Parse(obj[3]), CreationDate = DateTime.Now, Email = obj[6], Expansions = int.Parse(obj[4]), FirstName = obj[7], LastName = obj[8], GM = int.Parse(obj[5]), Flags = 0, Password = new LoginEncryption().GeneratePasswordHash(obj[2]) }; try { LoginDataDao.WriteLoginData(login); } catch (Exception ex) { Colouring.Push(ConsoleColor.Red); Console.WriteLine( "An error occured while trying to add a new user account:" + Environment.NewLine + "{0}", ex.Message); Colouring.Pop(); return; } Colouring.Push(ConsoleColor.Green); Console.WriteLine("User added successfully."); Colouring.Pop(); }
private string RegisterAccount(List<string[]> split) { /* * NOT SQL-INJECTION SAFE YET! * * To do: Add sql-checks for entries */ // Check wether everything is filled in or not. if (!string.IsNullOrEmpty(split[1][1]) && !string.IsNullOrEmpty(split[2][1]) && !string.IsNullOrEmpty(split[3][1]) && !string.IsNullOrEmpty(split[4][1]) && !string.IsNullOrEmpty(split[5][1]) && !string.IsNullOrEmpty(split[6][1])) { if (!LoginDataDao.Instance.Exists(split[2][1])) { // Check Email format if (TestEmailRegex.TestEmail(split[1][1])) { if (split[5][1] == split[6][1]) { DBLoginData dbchar = new DBLoginData(); dbchar.AccountFlags = 0; dbchar.AllowedCharacters = 12; dbchar.CreationDate = DateTime.Now; dbchar.Email = split[1][1]; dbchar.Expansions = 2047; dbchar.FirstName = split[3][1]; dbchar.Flags = 0; dbchar.GM = 0; dbchar.LastName = split[4][1]; dbchar.Password = new LoginEncryption().GeneratePasswordHash(split[5][1]); dbchar.Username = split[2][1]; CellAO.Database.Dao.LoginDataDao.Instance.Add(dbchar); Console.WriteLine("Account created."); return "Account created."; } return "Passwords are not matching, please retry."; } return "Email is wrong, please retry."; } return "Username is already taken, please retry."; } else { return "n/a"; } }
/// <summary> /// </summary> /// <param name="obj"> /// </param> private static void AddUser(string[] obj) { if (obj.Length == 1) { List<string> temp = new List<string>(); temp.Add("adduser"); while (true) { Console.Write("Username: "******"Please enter a username (at least 6 chars)..."); continue; } if (CheckUsername(test)) { temp.Add(test); break; } } while (true) { Console.Write("Password: "******"Please enter a password (at least 6 chars) for your safety..."); continue; } temp.Add(test); break; } while (true) { Console.WriteLine("Number of character slots: "); string test = Console.ReadLine(); if (IsNumber(test)) { temp.Add(test); break; } } Console.WriteLine("Expansions: Enter 2047 for all expansions (i know you want that)"); while (true) { Console.Write("Expansions: "); string test = Console.ReadLine(); if (IsNumber(test)) { temp.Add(test); break; } } Console.WriteLine( "GM-Level: Anything above 0 is GM, but there are differences. Full Client GM = 1 (using keyboard shortcuts) but for some items you have to be GM Level 511"); while (true) { Console.Write("GM-Level: "); string test = Console.ReadLine(); if (IsNumber(test)) { temp.Add(test); break; } } while (true) { Console.WriteLine("E-Mail: "); string test = Console.ReadLine(); if (TestEmailRegex.TestEmail(test)) { temp.Add(test); break; } } Console.Write("First name: "); temp.Add(Console.ReadLine()); Console.Write("Last name: "); temp.Add(Console.ReadLine()); obj = temp.ToArray(); } Colouring.Push(ConsoleColor.Red); bool argsOk = CheckAddUserParameters(obj); Colouring.Pop(); if (!argsOk) { return; } DBLoginData login = new DBLoginData { Username = obj[1], AccountFlags = 0, AllowedCharacters = int.Parse(obj[3]), CreationDate = DateTime.Now, Email = obj[6], Expansions = int.Parse(obj[4]), FirstName = obj[7], LastName = obj[8], GM = int.Parse(obj[5]), Flags = 0, Password = new LoginEncryption().GeneratePasswordHash(obj[2]) }; try { LoginDataDao.WriteLoginData(login); } catch (Exception ex) { Colouring.Push(ConsoleColor.Red); Console.WriteLine( "An error occured while trying to add a new user account:" + Environment.NewLine + "{0}", ex.Message); Colouring.Pop(); return; } Colouring.Push(ConsoleColor.Green); Console.WriteLine("User added successfully."); Colouring.Pop(); }
/// <summary> /// Write new password to table /// </summary> /// <param name="login"> /// DBLoginData object /// </param> /// <returns> /// </returns> public static int WriteNewPassword(DBLoginData login) { try { using (IDbConnection conn = Connector.GetConnection()) { return conn.Execute( "UPDATE login SET password=@pwd WHERE Username=@user LIMIT 1", new { pwd = login.Password, user = login.Username }); } } catch (Exception e) { LogUtil.ErrorException(e); return 0; } }