register method

Future<UserAccount> register({
  1. required String username,
  2. required String email,
  3. required String password,
})

Implementation

Future<UserAccount> register({
  required String username,
  required String email,
  required String password,
}) async {
  final users = await _readUsers();
  if (users.any((u) => u.email == email)) {
    throw StateError('email already registered');
  }
  if (users.any((u) => u.username == username)) {
    throw StateError('username already registered');
  }
  final account = UserAccount(
    username: username,
    email: email,
    passwordHash: _hash(password),
    tokenHashes: const [],
    createdAt: DateTime.now(),
    updatedAt: DateTime.now(),
    bio: '',
    likedPackages: const [],
    activities: const [],
  );
  users.add(account);
  return _issueTokenForUser(users, users.length - 1);
}