Shuffle/app/lib/features/auth/domain/resend_origin.dart
cschlaefke 54337ffc59 feat(auth): add auth domain, repository, validators and router redirects
Refs #1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-03 00:09:47 +01:00

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;