authyo_plugin 1.1.2 copy "authyo_plugin: ^1.1.2" to clipboard
authyo_plugin: ^1.1.2 copied to clipboard

Add secure, multi-channel MFA (SMS, WhatsApp, Email, Call) to your Flutter app with Authyo. Fast, simple, and flexible.

1.1.2 - 2026-09-19 #

Added #

  • OTP screen now has everything the web widget shows: the draining expiry bar (OTP expires in m:ss, blue → amber → red), the N of M attempts remaining pill, the resend cooldown bar with a Resend OTP button that unlocks when it ends, and the inline Invalid OTP. Please try again. line under the boxes.
  • Lockout after too many wrong codes: the dialog shows the server's retry time and closes; onVerificationComplete gets the failure with AuthyoResult.attempts.lockedOut == true.
  • AuthyoResult.attempts (AuthyoAttempts: remaining, max, retryAfterSeconds) on send and verify results for hosts drawing their own UI. Needs the matching Authyo server release for the counters to be present; without them the pill is simply not shown.
  • New style slots for custom renderers: progressBar, attemptsPill, errorText, verifiedIdentityIcon; statusText takes color / weight; sentToRow takes verified.
  • Dashboard "Social Button Size" (Layout tab): small icon buttons in a row, or one stacked full-width button per provider with icon + name (AuthyoTheme.socialButtonsFullWidth, drawn with each style's socialButton slot).
  • Dashboard "Social Button Style": the social login buttons get their own corner shape — rectangular, rounded or pill (a circle for the small icon buttons), same three shapes as the action buttons. AuthyoTheme.socialButtonShape / AuthyoStyle.socialButtonRadius; every design style honours it. Apps configured before the setting existed keep following the action button shape.

Fixed #

  • Logo now matches the web widget: with no dashboard logo the dialog loads the server's default logo (<server>/image/landing/logo.png, the same image the widget shows) at the widget's 140px width, and the footer shows "Powered by" with that logo instead of plain text. The bundled copy (now the full logo with the Iron Shield wordmark; the old one was a cropped mark) is only the offline fallback. hideBranding still removes the footer line.
  • Verified state shows the ticked envelope / phone icon next to the identity, like the widget.

Changed #

  • VerificationController.resend takes a nullable channel (null = repeat the current channel).

1.1.1 - 2026-09-16 #

Added #

  • Sign in with Apple appears in the dialog when configured on the dashboard (AuthyoSocialProvider.apple); the backend's Apple callback now returns to the app via authyo://oauth/callback like the other providers.

Fixed #

  • Neumorphism: the input's pressed-in edges are drawn over the configured input colour (the field's own fill used to cover them), with the web widget's fixed 9px edges.
  • Gradients that faded to Colors.transparent rendered a grey band on Impeller (Android/iOS); they now fade to the same colour at alpha 0 (Neumorphism inset, Claymorphism highlight, Skeuomorphism gloss/well).

[1.1.1] - 2026-09-18 #

Fixed #

  • Default server URL is now https://app.authyo.io. The previous default (https://authyo.io) redirects API calls to a 404 page, so apps that did not pass baseUrl to init() could not send OTPs.

Changed #

  • Social login buttons draw the same brand logos as the web widget (Google, Microsoft, GitHub, LinkedIn, Apple), bundled under res/logos/ so they render offline. A dashboard-provided icon URL still takes precedence; the coloured initial is now only a last-resort fallback.

1.1.0 - 2026-09-12 #

Added #

  • Seven selectable design styles for the built-in dialog: Flat (default), Flat 2.0, Minimalism, Skeuomorphism, Claymorphism, Glassmorphism, Neumorphism (AuthyoDesignStyle).
  • AuthyoTheme — colours, texts, logo, button shape, layout and resend timer, mirroring the dashboard customization; mergeable so dashboard values and local overrides layer cleanly.
  • Remote configuration: the SDK fetches the dashboard's design style, customization, enabled channels and social logins (AuthyoService.loadConfig()), caches them on device and refreshes in the background. The OTP flow never blocks on it.
  • Social login (Google, Microsoft, GitHub, LinkedIn) inside the dialog and via AuthyoService.socialLogin(), using the system browser and the authyo://oauth/callback scheme. onSocialLogin lets host apps plug in native SDKs.
  • init() options: designStyle, theme, onSocialLogin, prefetchConfig; sendOtp() options: designStyle, theme.
  • requestOtp() (send without UI), showVerificationDialog(), setDesignStyle(), setTheme(), setShowVerificationDialog().
  • The dialog follows the web widget's OTP flow step for step: top-left back button, "OTP sent to: … Change", one box per digit with auto-advance / paste / auto-verify on the last digit (no Verify button), OTP will expire in m:ss from the server's expireTime, red expiry notice with Resend / Sms · Whatsapp · VoiceCall buttons for the channels enabled on the dashboard, resend passes the dashboard timer as the new expiry, social logins as an icon row under OR, an in-card "Verified successfully" badge before closing, Terms & Privacy footer, and isOtpHide.
  • AuthyoStyle gained decorateInput, otpBox, backButton, sentToRow, statusText, verifiedBadge (styles decorate the digit boxes the same way as the single field); AuthyoVerifiedBadge widget.
  • PhoneVerificationDialog gained verifiedDisplayDuration and a test-only service seam (AuthyoService.forTesting).
  • "Remember me" (dashboard option): the dialog shows the checkbox only when enabled; ticking it sends rememberMe on verify (longer session token) and keeps the identity on device — AuthyoService.rememberedIdentity() / forgetIdentity(); verifyOtp(rememberMe:). When the option is off nothing is shown, sent or stored.
  • User model gains email, identity, displayName, channel.

Changed #

  • Dialog logic extracted into VerificationController; rendering is delegated to an AuthyoStyle per design.
  • sendOtp for AuthwayEnum.email now sends "Email" as authway (previously the enum's toString()).
  • Example app gained a design-style picker and a built-in-dialog toggle.

Dependencies #

  • shared_preferences, flutter_web_auth_2, url_launcher (Terms / Privacy links).

1.0.3 - 2025-08-18 #

Improved #

  • Clear and helpful error message now shown when AuthyoService.init() is called without clientId or clientSecret.
  • The message includes a link to the Authyo dashboard, making it easier for developers to obtain their credentials quickly.

1.0.2 - 2025-08-18 #

  • Code formatting and LICENSE modified.

1.0.1 - 2025-08-14 #

  • Inline comments to clarify core logic in the sendOtp and verifyOtp methods.
  • Basic input validation messages for phone number and email.
  • Scoped ScaffoldMessenger.of(context) to variables before await calls to follow best practices.
  • Renamed internal variable references for clarity and consistency.

1.0.0 - 2025-08-13 #

  • Initial release of the authyo_plugin.
  • Supports password-less authentication using:
    • Email
    • SMS
    • WhatsApp
    • Voice Call
  • Provides sendOtp and verifyOtp methods for OTP-based verification.
  • Built-in customizable verification dialog.
2
likes
140
points
94
downloads

Documentation

Documentation
API reference

Publisher

verified publisherauthyo.io

Weekly Downloads

Add secure, multi-channel MFA (SMS, WhatsApp, Email, Call) to your Flutter app with Authyo. Fast, simple, and flexible.

Homepage
Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

dio, flutter, flutter_web_auth_2, plugin_platform_interface, shared_preferences, url_launcher

More

Packages that depend on authyo_plugin

Packages that implement authyo_plugin