evaluateRedirect method
Implementation
@override
Future<String?> evaluateRedirect(
BuildContext context,
GoRouterState state,
) async {
final identityService = context.read<identity.IdentityService>();
String? redirectTo;
if (!identityService.state.isPasswordResetInProgress) {
// navigate back to the sign-in
// with error message as password
// reset flow is not in progress
identityService.addStateMessage(
app.Message.error(
context.l10n.passwordResetNotInProgressMessage,
),
);
await identityService.clearAwaitingVerification();
redirectTo = SignInWidget.name;
} else {
final username = state.uri.queryParameters['username'];
if (username == null || username.isEmpty) {
// navigate back to the sign-in
// page with error message as
// no username was provided
identityService.addStateMessage(
app.Message.error(
context.l10n.noUsernameProvidedForResetPasswordMessage,
),
);
await identityService.clearAwaitingVerification();
redirectTo = SignInWidget.name;
}
}
return redirectTo;
}