public override bool Register(UserBase user, byte[] password, string email) { try { if (user.Level >= Authorizations.Registered) { return(false); } user.Password = password; user.Properties["E-Mail"] = email; user.Level = Cache.Accounts.Count > 0 ? Authorizations.Registered : Authorizations.NetworkOperator; user.Mask.Account = user.Id; Cache.Accounts.Add(user.Mask.Account, user); user.Commit(); UsersByAccount.Add(user.Mask.Account, new List <UserBase>(new UserBase[] { user })); user.SendNumeric(Numerics.RPL_REGISTERED, ":You are now registered and logged in. Use /login password to log in next time you connect."); return(true); } catch { return(false); } }
public override bool LogIn(UserBase user, string account, byte[] password) { try { if (!Cache.Accounts.ContainsKey(account)) { return(false); } UserSurrogate cache = Cache.Accounts[account]; if (password.Length != cache.Password.Length) { return(false); } for (int i = 0; i < password.Length; i++) { if (password[i] != cache.Password[i]) { return(false); } } cache.LastSeen = DateTime.Now; user.Load(cache); user.Mask.Account = account; if (UsersByAccount.ContainsKey(account)) { UsersByAccount[account].Add(user); } else { UsersByAccount.Add(account, new List <UserBase>(new UserBase[] { user })); } user.SetModes(null, "+r" + (user.Level < Authorizations.NetworkOperator ? "" : "o"), string.Empty); return(true); } catch { return(false); } }