public static void CreateAccount(string[] args) { var alias = Helper.Read<string>(args, 0); var email = Helper.Read<string>(args, 1); var password = Helper.Read<string>(args, 2); if (alias != null && email != null && password != null) { var salt = Helper.GenerateRandomKey(8).ToHexString(); var result = DB.Auth.Any<Account>(a => a.Email == email || a.Alias == alias); if (!result) { var srp = new SRP6a(salt); srp.CalculateX(email, password, false); var account = new Account { Id = DB.Auth.GetAutoIncrementValue<Account, uint>(), Email = email, Alias = alias, PasswordVerifier = srp.V.ToHexString(), Salt = salt, GatewayTicket = "" }; if (DB.Auth.Add(account)) { Log.Normal($"Account 'Email: {email}, Alias: {alias}' successfully created."); // Unlock 10 more character slots. DB.Auth.Add(new AccountEntitlement { AccountId = account.Id, Id = (uint)Entitlement.BaseCharacterSlots, Value = 10 }); } } else Log.Error($"Account 'Email: {email}' or 'Alias: {alias}' already in database."); } }
public static void CreateAccount(string[] args) { var email = Helper.Read<string>(args, 0); var loginName = Helper.Read<string>(args, 1); var password = Helper.Read<string>(args, 2); if (email != null && password != null && loginName != null) { var salt = Helper.GenerateRandomKey(8).ToHexString(); var result = DB.Auth.Any<Account>(a => a.Email == email || a.LoginName == loginName); if (!result) { var srp = new SRP6a(salt); srp.CalculateX(email, password, false); var account = new Account { Email = email, LoginName = loginName, PasswordVerifier = srp.V.ToHexString(), Salt = salt }; var accountId = DB.Auth.GetAutoIncrementValue<Account, uint>(); var gameAccountId = DB.Auth.GetAutoIncrementValue<GameAccount, uint>(); var gameAccount = new GameAccount { AccountId = accountId, Alias = $"{accountId}#{gameAccountId}", }; if (DB.Auth.Add(account) && DB.Auth.Add(gameAccount)) Console.WriteLine($"Account 'Email: {email}, LoginName: {loginName}' successfully created."); } else Console.WriteLine($"Account 'Email: {email}' or 'LoginName: {loginName}' already in database."); } }