listRegisterUsersForDevice method

Future<RegisterDeviceUsers> listRegisterUsersForDevice({
  1. required String ownerUid,
  2. required String deviceId,
  3. required String deviceSecret,
})

Kassen-Benutzer dieses Betriebs auflisten — die Auswahl des Anmeldebildschirms. Die Antwort trägt nur Kennung, Name und Art: keine Rechte, keine Hashes; gesperrte Benutzer fehlen bereits.

Implementation

Future<RegisterDeviceUsers> listRegisterUsersForDevice({
  required String ownerUid,
  required String deviceId,
  required String deviceSecret,
}) async {
  const name = 'listRegisterUsersForDevice';
  _ausweisPflicht(name, ownerUid, deviceId, deviceSecret);
  final daten = await _rufen(name, {
    'ownerUid': ownerUid,
    'deviceId': deviceId,
    'deviceSecret': deviceSecret,
  });

  final liste = daten['users'];
  if (liste is! List) {
    throw const KasseneckValidationError(
        'listRegisterUsersForDevice', 'Antwort enthaelt keine Benutzerliste (data.users fehlt)', 'response');
  }
  final users = liste.map((eintrag) {
    final roh = eintrag is Map ? Map<String, dynamic>.from(eintrag) : <String, dynamic>{};
    return RegisterUserSummary(
      // Ein Eintrag ohne Kennung ist nicht anmeldbar — ihn anzuzeigen hieße,
      // dem Kassier eine Schaltfläche zu geben, die nichts tun kann.
      id: _pflichtfeld(name, roh, 'id'),
      name: _text(roh['name']),
      kind: roh['kind'] == 'device' ? RegisterUserKind.device : RegisterUserKind.person,
      altbestand: roh['altbestand'] == true,
    );
  }).toList();

  final settings = daten['settings'];
  final betriebsdaten = daten['betriebsdaten'];
  return RegisterDeviceUsers(
    users: users,
    policy: _regel(daten['policy']),
    loginMode: daten['loginMode'] == 'pin' ? RegisterLoginMode.pin : RegisterLoginMode.auswahl,
    standortsperre: daten['standortsperre'] == true,
    settings: KasseSettings.aus(settings is Map ? Map<String, dynamic>.from(settings) : null),
    betriebsdaten: betriebsdaten is Map ? Map<String, dynamic>.from(betriebsdaten) : null,
  );
}