Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iframe login via popup #1905

Merged
merged 4 commits into from
Sep 27, 2024
Merged

Iframe login via popup #1905

merged 4 commits into from
Sep 27, 2024

Conversation

robknight
Copy link
Member

This allows the user to log in via a popup window opened from within the Zupass embedded iframe.

On visiting a Zapp for the first time, the user is asked to connect to Zupass by clicking a button, which causes a popup window to open.

If the user is already logged in to Zupass in another tab, then the popup window will pick up the authentication state from that other session, and forward the user's sync key back to the iframe, which will use it to log in.

If the user is not already logged in to Zupass in another tab, then they can provide their email and password in the popup window, and after authenticating the sync key will be sent to the iframe.

Three failure cases are covered:

  1. If the browser blocks popups, a message is shown to the user advising them to change their browser settings and try again
  2. If the user closes the popup window before authentication completes, they are informed of this and asked to try again
  3. If logging in using the sync key fails, the user is asked to try again

Comment on lines +14 to +17
const IFrameAuthenticationMessageSchema = v.object({
type: v.literal("auth"),
encryptionKey: v.string()
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i like the migration from zod -- we are the only z that matter 😆

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valibot also produces much smaller bundles!

This is a follow-up to #1905, which removes the deprecated Chrome "local
storage access" request, now that we have agreed on the popup flow as
the primary login method.
@robknight robknight added this pull request to the merge queue Sep 27, 2024
Merged via the queue into main with commit 8062504 Sep 27, 2024
1 check passed
rrrliu pushed a commit that referenced this pull request Sep 27, 2024
This allows the user to log in via a popup window opened from within the
Zupass embedded iframe.

On visiting a Zapp for the first time, the user is asked to connect to
Zupass by clicking a button, which causes a popup window to open.

If the user is already logged in to Zupass in another tab, then the
popup window will pick up the authentication state from that other
session, and forward the user's sync key back to the iframe, which will
use it to log in.

If the user is not already logged in to Zupass in another tab, then they
can provide their email and password in the popup window, and after
authenticating the sync key will be sent to the iframe.

Three failure cases are covered:

1) If the browser blocks popups, a message is shown to the user advising
them to change their browser settings and try again
2) If the user closes the popup window before authentication completes,
they are informed of this and asked to try again
3) If logging in using the sync key fails, the user is asked to try
again
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants