017bcc9ce1
- Fix indentation - Split awkward initializer into separate methods - Rename credentials to passkeys - Simplify authenticator registry loading - Flatten nested errors under ActionPack::WebAuthn - Set passkey current params only requests that use it - Inline anemic methods - Replace custom validation with ActiveModel::Validation - Rename identity to holder in Passkey - Rename credentials to passkeys in JS - Extract framework library out of controllers - Pass params hashes down to ActionPack - Attempt to simplify public interface - Push data decoding down to the classes representing the data - Introduce has_passkeys - Add CBOR bigint support - Rename ActionPack::WebAuthn::Passkey to ActionPack::Passkey - Add create_passkey_button helper - Rename public-key to creation-options - Add sign_in_with_passkey_button helper - Dispatch events for the whole Passkey lifecycle - Add ED25519 support - Prevent crash on missing meta tag - Validate resident key options - Don't clobber existing ActionPack config options - Validate cryptographic params - Move CurrentWebAuthnRequest into ActionPack::Passkey - Use ActiveModel::Attributes for Options objects - Implement expiring challanges - Add lifecycle events - Extract param helpers into Request - Add passkey_creation_options and passkey_request_options helpers - Add create_passkey_challenge to make it easier to override the create method if needed - Prefix all view helpers with passkey_ - Auto-include ActionPack::Passkey::Holder - Make the passkey challange url configurable - Add a reminder about Passkeys to the magic link email
36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
<% @page_title = "Enter your email" %>
|
|
|
|
<% content_for :head do %>
|
|
<%= passkey_request_options_meta_tag(@request_options) %>
|
|
<% end %>
|
|
|
|
<div class="panel panel--centered flex flex-column gap-half">
|
|
<h1 class="txt-x-large font-weight-black margin-block-end">Get into Fizzy</h1>
|
|
|
|
<%= form_with url: session_path, class: "flex flex-column gap-half txt-medium" do |form| %>
|
|
<div class="flex align-center gap">
|
|
<label class="flex align-center gap input input--actor">
|
|
<%= form.email_field :email_address, required: true, class: "input txt-large full-width", autofocus: true, autocomplete: "username webauthn", placeholder: "Enter your email address…" %>
|
|
</label>
|
|
</div>
|
|
|
|
<% if Account.accepting_signups? %>
|
|
<p><strong>New here?</strong> <%= link_to "Sign up", new_signup_path %> to create an account. <strong>Already have an account?</strong> Enter your email and we'll get you signed in.</p>
|
|
<% else %>
|
|
<p>Enter your email and we'll get you signed in.</p>
|
|
<% end %>
|
|
|
|
<button type="submit" id="log_in" class="btn btn--link center txt-medium">
|
|
<span>Let's go</span>
|
|
<%= icon_tag "arrow-right" %>
|
|
</button>
|
|
<% end %>
|
|
|
|
<%= passkey_sign_in_button "Sign in with a passkey", session_passkey_path, mediation: "conditional", class: "btn btn--link center txt-medium", hidden: true %>
|
|
|
|
</div>
|
|
|
|
<% content_for :footer do %>
|
|
<%= render "sessions/footer" %>
|
|
<% end %>
|