Auth widgets

Sign-in, registration, password reset and account widgets for Flutter.

  • Stable unknown
  • Release candidate since 0.1.0-rc.4
  • Development since 0.1.0-dev.25+148a28a

ovok_flutter provides Material widgets for the authentication methods in ovok_sdk. The widgets call the existing ovok.auth and FHIR APIs; apps still own navigation, success handling and the app theme.

Sign in

Use SignIn for password sign-in, MFA and optional Google sign-in. The app chooses the profile type and can move to registration or password reset from the callbacks.

SignIn(
  ovok: ovok,
  profileType: ProfileType.patient,
  googleInternalId: 'your-client-application-id',
  googleClientId: 'your-google-oauth-client-id',
  googleServerClientId: 'your-google-server-client-id',
  onSuccess: (session) async => openHome(session),
  onRegister: openRegistration,
  onResetPassword: openPasswordReset,
)

Google sign-in is optional. On Android and iOS, complete the native google_sign_in setup for each app target. On web, provide googleClientId and authorize the app origin in the Google OAuth client. The widget displays the Google-rendered sign-in button on web and exchanges its ID token through ovok.auth.socialLogin.

Register and reset a password

Register collects first and last name, email, password and confirmation. It calls ovok.auth.register; onSuccess receives the stored session, while onInvite handles a clinician invitation response.

ResetPassword requests a reset link for a patient or practitioner. Its success message does not reveal whether the address is registered.

Register(
  ovok: ovok,
  onSuccess: (session) async => openHome(session),
  onSignIn: openSignIn,
)

ResetPassword(ovok: ovok, onBack: openSignIn)

Profile and sessions

ProfileForm loads the signed-in Patient through auth.me() and patches the configured fields. Field paths use JSON Pointer syntax and must point to values already present in the Patient resource.

ProfileForm(
  ovok: ovok,
  fields: const [
    ProfileFormField(path: '/name/0/given/0', label: 'First name'),
    ProfileFormField(path: '/name/0/family', label: 'Last name'),
  ],
)

SessionList shows active sessions and can revoke all other sessions. Use LogoutButton to end the current session and clear it from the secure store.

Delete an account

DeleteAccountButton asks for confirmation and schedules deletion after 30 days. It does not request a health-data wipe.

Labels

Widgets use defaultAuthTranslations. Pass AuthTranslations with translated overrides for another language; keys not supplied fall back to the English defaults.

Run the sandbox example

From packages/ovok_flutter/example, run:

flutter run -d chrome --web-hostname localhost --web-port 7357 \
  --dart-define=OVOK_TENANT_CODE=your-sandbox-tenant \
  --dart-define=OVOK_CLIENT_ID=your-client-application-id \
  --dart-define=GOOGLE_INTERNAL_ID=your-client-application-id \
  --dart-define=GOOGLE_CLIENT_ID=your-google-oauth-client-id

OVOK_CLIENT_ID is used by Ovok password resets and social login. The Google OAuth client ID is a separate value. Add the local origin to the OAuth client's authorized JavaScript origins. The app stores sessions with flutter_secure_storage.

Last updated on

On this page