listRegisterUsersForDevice method
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,
);
}