registerUserLogin method

Future<RegisterUserSession> registerUserLogin({
  1. required String ownerUid,
  2. required String deviceId,
  3. required String deviceSecret,
  4. required String userId,
  5. required String pin,
  6. required String cashregisterId,
  7. bool takeover = false,
  8. RegisterClientInfo? client,
  9. RegisterGeo? geo,
})

Kassen-Benutzer per PIN anmelden.

Das Backend prüft in dieser Reihenfolge: Gerät, Benutzer, Sperre, PIN, Kassenzuweisung, Kopplungsbindung, Lizenzplatz. Fehlversuche zählen und sperren gestaffelt. Das PIN-Format prüft dieses Paket nicht — eine zu strenge Prüfung im Client sperrte Benutzer aus, deren PIN das Panel anders gesetzt hat.

Implementation

Future<RegisterUserSession> registerUserLogin({
  required String ownerUid,
  required String deviceId,
  required String deviceSecret,
  required String userId,
  required String pin,
  required String cashregisterId,
  bool takeover = false,
  RegisterClientInfo? client,
  RegisterGeo? geo,
}) async {
  const name = 'registerUserLogin';
  _ausweisPflicht(name, ownerUid, deviceId, deviceSecret);
  _pflicht(name, 'userId', userId);
  _pflicht(name, 'pin', pin);
  _pflicht(name, 'cashregisterId', cashregisterId);
  final daten = await _rufen(name, {
    'ownerUid': ownerUid,
    'deviceId': deviceId,
    'deviceSecret': deviceSecret,
    'userId': userId,
    'pin': pin,
    'cashregisterId': cashregisterId,
    // Nur die ausdrückliche Übernahme geht mit: das Backend prüft auf `true`,
    // ein mitgesendetes `false` wäre nur Rauschen.
    if (takeover) 'takeover': true,
    if (client != null) 'client': client.toJson(),
    if (geo != null) 'geo': geo.toJson(),
  });
  return _sitzung(name, daten);
}