ubicloud/views/components
Jeremy Evans 7acbf5cd5a Switch to multi phase login
Multi phase login is the practice where you first ask for the login
(email) and not the password, and after you know the related account,
you show the options available for login to that account.

Multi phase login allows social login and OIDC login to be part of the
normal login flow. Once we know the related account, we can show the
authentication options for the account, and not include options that
are not available. If the account does not have a password and is only
connected to one social login provider, then the password field does
not display, and the only button is the button login to the social
login provider.

For accounts that only allow password authentication, multi phase login
results in an extra step during login. However, I think it's better to
support non-password authentication as part of the normal login flow.

A minor improvement I made during this process is if the user enters
their login, but cannot remember their password, if they click the
"Forgot your password?" link, their email address is already filled in.

Ideally, the login field would be have the readonly attribute during
the second login phase.  However, I found that this negatively affects
password managers such as 1password.  So I didn't mark the field as
readonly.  I left the handling of the readonly attribute as boolean,
in case we want to use readonly attributes elsewhere.

This required relatively few spec changes outside of the auth tests,
since almost all tests that test for logged in accounts use the login
helper method.
2025-07-09 04:32:44 +09:00
..
form Replace dots with dashes in form element classes 2025-07-01 00:24:58 +03:00
rodauth Switch to multi phase login 2025-07-09 04:32:44 +09:00
billing_warning.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
button.erb Update erb-formatter version 2025-04-10 08:47:13 -07:00
copyable_content.erb Add new PostgreSQL Connection page 2025-06-19 13:07:10 +03:00
delete_button.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
discount_code.erb Create billing info as needed for discount code 2025-05-09 11:26:34 -04:00
download_button.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
empty_state.erb Support multiple buttons in empty state component 2025-06-20 06:00:14 +09:00
flash_message.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
free_quota.erb Add billing check and free quota for AI inference 2025-02-18 11:51:51 -05:00
icon.erb Add new PostgreSQL Settings page 2025-06-19 13:07:10 +03:00
icon_with_text.erb Add new PostgreSQL Connection page 2025-06-19 13:07:10 +03:00
inline_edit_buttons.erb Add edit inline button components 2025-05-29 02:44:27 +03:00
kubernetes_state_label.erb Add State for Kubernetes Cluster 2025-02-05 08:03:46 +02:00
kv_data_card.erb Change rubocop TargetRubyVersion to 3.4 2025-04-26 06:51:19 +09:00
page_header.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
pg_state_label.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
progress_bar.erb Fix division by zero in progress bar calculation 2025-03-24 09:19:45 +03:00
ps_state_label.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
revealable_content.erb Add new PostgreSQL Connection page 2025-06-19 13:07:10 +03:00
state_label.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
tabbar.erb Fix the active tab on the user tab bar for nested pages 2025-01-09 09:55:55 -08:00
table_card.erb Add a second line option to table_card component's cell 2025-05-15 15:31:18 +03:00
value_content.erb Use Roda part plugin to simplify render calls with locals 2025-01-31 09:47:06 -08:00
vm_state_label.erb Add views/components/state_label.erb, make views/components/*_state_label.erb call it 2025-01-14 09:04:22 -08:00