30 lines
1.1 KiB
Dart
30 lines
1.1 KiB
Dart
import 'package:shuffle/features/auth/domain/auth_failure.dart';
|
|
|
|
/// Von wo „E-Mail erneut senden“ ausgelöst wird (Spec #1 § 4.4, F12).
|
|
enum ResendOrigin {
|
|
/// CheckEmailScreen: Die Adresse kann frei eingegeben sein.
|
|
checkEmail,
|
|
|
|
/// LoginScreen nach `email_not_confirmed`: Das Passwort war richtig.
|
|
login,
|
|
}
|
|
|
|
/// Wendet die Regel aus F12 für „E-Mail erneut senden“ an.
|
|
///
|
|
/// `null` heißt: wie Erfolg behandeln. Aus dem LoginScreen wird
|
|
/// `emailSendLimited` zum sichtbaren Drosselungshinweis ([RateLimited]).
|
|
AuthFailure? resendFailureFor(AuthFailure failure, ResendOrigin origin) {
|
|
if (failure is EmailSendLimited) {
|
|
return switch (origin) {
|
|
ResendOrigin.checkEmail => null,
|
|
ResendOrigin.login => const AuthFailure.rateLimited(),
|
|
};
|
|
}
|
|
return failure;
|
|
}
|
|
|
|
/// Registrierung und Passwort-Reset (freie Adresseingabe): `emailSendLimited`
|
|
/// zählt wie Erfolg (F12, KTO-01 Kriterium 4). Liefert `null` für „wie
|
|
/// Erfolg“, sonst den Fehler.
|
|
AuthFailure? openEmailInputFailureFor(AuthFailure failure) =>
|
|
failure is EmailSendLimited ? null : failure;
|