plutonium 0.12.13 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Appraisals +11 -0
- data/README.md +4 -0
- data/Rakefile +9 -5
- data/app/assets/plutonium.css +1 -1
- data/app/views/application/_flash.html.erb +1 -1
- data/app/views/application/_flash_toasts.html.erb +1 -1
- data/app/views/application/_resource_sidebar.html.erb +1 -1
- data/app/views/components/form/form_component.html.erb +1 -2
- data/app/views/components/interactive_action_form/interactive_action_form_component.html.erb +1 -1
- data/app/views/components/resource_header/resource_header_component.html.erb +3 -3
- data/app/views/components/resource_header/resource_header_component.rb +1 -1
- data/app/views/components/sidebar/sidebar_component.html.erb +1 -6
- data/app/views/components/sidebar/sidebar_component.rb +11 -3
- data/app/views/layouts/resource.html.erb +1 -1
- data/app/views/layouts/rodauth.html.erb +7 -8
- data/app/views/resource/_interactive_resource_action_form.html.erb +4 -4
- data/app/views/rodauth/_email_auth_request_form.html.erb +2 -2
- data/app/views/rodauth/_login_form.html.erb +24 -18
- data/app/views/rodauth/_login_form_footer.html.erb +1 -1
- data/app/views/rodauth/change_login.html.erb +20 -11
- data/app/views/rodauth/change_password.html.erb +11 -11
- data/app/views/rodauth/close_account.html.erb +4 -4
- data/app/views/rodauth/create_account.html.erb +44 -18
- data/app/views/rodauth/email_auth.html.erb +2 -2
- data/app/views/rodauth/login.html.erb +3 -5
- data/app/views/rodauth/logout.html.erb +7 -4
- data/app/views/rodauth/otp_auth.html.erb +5 -6
- data/app/views/rodauth/otp_disable.html.erb +4 -5
- data/app/views/rodauth/otp_setup.html.erb +8 -8
- data/app/views/rodauth/recovery_auth.html.erb +5 -5
- data/app/views/rodauth/recovery_codes.html.erb +5 -5
- data/app/views/rodauth/remember.html.erb +2 -2
- data/app/views/rodauth/reset_password.html.erb +8 -8
- data/app/views/rodauth/reset_password_request.html.erb +14 -10
- data/app/views/rodauth/sms_auth.html.erb +4 -4
- data/app/views/rodauth/sms_confirm.html.erb +4 -4
- data/app/views/rodauth/sms_disable.html.erb +5 -5
- data/app/views/rodauth/sms_request.html.erb +2 -2
- data/app/views/rodauth/sms_setup.html.erb +7 -7
- data/app/views/rodauth/two_factor_disable.html.erb +4 -4
- data/app/views/rodauth/unlock_account.html.erb +8 -10
- data/app/views/rodauth/unlock_account_request.html.erb +5 -7
- data/app/views/rodauth/verify_account.html.erb +8 -8
- data/app/views/rodauth/verify_account_resend.html.erb +13 -10
- data/app/views/rodauth/verify_login_change.html.erb +2 -2
- data/app/views/rodauth/webauthn_auth.html.erb +2 -2
- data/app/views/rodauth/webauthn_remove.html.erb +5 -5
- data/app/views/rodauth/webauthn_setup.html.erb +5 -5
- data/config.ru +9 -0
- data/gemfiles/rails_7.gemfile +13 -0
- data/gemfiles/rails_7.gemfile.lock +335 -0
- data/lib/generators/pu/rodauth/install_generator.rb +0 -5
- data/lib/generators/pu/rodauth/migration/active_record/audit_logging.erb +2 -2
- data/lib/generators/pu/rodauth/migration_generator.rb +30 -51
- data/lib/generators/pu/rodauth/templates/app/mailers/rodauth_mailer.rb.tt +1 -0
- data/lib/generators/pu/rodauth/templates/app/models/account.rb.tt +0 -8
- data/lib/generators/pu/rodauth/templates/app/rodauth/rodauth_plugin.rb.tt +8 -2
- data/lib/generators/pu/rodauth/templates/db/migrate/create_rodauth.rb.tt +0 -8
- data/lib/plutonium/auth/rodauth.rb +3 -1
- data/lib/plutonium/core/controllers/base.rb +29 -19
- data/lib/plutonium/core/fields/inputs/date_time_input.rb +1 -1
- data/lib/plutonium/helpers/display_helper.rb +6 -4
- data/lib/plutonium/helpers/form_helper.rb +18 -7
- data/lib/plutonium/pkg/app.rb +4 -0
- data/lib/plutonium/rodauth/controller_methods.rb +1 -0
- data/lib/plutonium/version.rb +1 -1
- data/lib/plutonium.rb +40 -29
- data/sig/plutonium.rbs +10 -2
- metadata +118 -21
- data/lib/generators/pu/rodauth/migration/sequel/account_expiration.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/active_sessions.erb +0 -8
- data/lib/generators/pu/rodauth/migration/sequel/audit_logging.erb +0 -17
- data/lib/generators/pu/rodauth/migration/sequel/base.erb +0 -25
- data/lib/generators/pu/rodauth/migration/sequel/disallow_password_reuse.erb +0 -6
- data/lib/generators/pu/rodauth/migration/sequel/email_auth.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/jwt_refresh.erb +0 -8
- data/lib/generators/pu/rodauth/migration/sequel/lockout.erb +0 -11
- data/lib/generators/pu/rodauth/migration/sequel/otp.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/password_expiration.erb +0 -5
- data/lib/generators/pu/rodauth/migration/sequel/recovery_codes.erb +0 -6
- data/lib/generators/pu/rodauth/migration/sequel/remember.erb +0 -6
- data/lib/generators/pu/rodauth/migration/sequel/reset_password.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/separate_passwords.erb +0 -6
- data/lib/generators/pu/rodauth/migration/sequel/single_session.erb +0 -5
- data/lib/generators/pu/rodauth/migration/sequel/sms_codes.erb +0 -8
- data/lib/generators/pu/rodauth/migration/sequel/verify_account.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/verify_login_change.erb +0 -7
- data/lib/generators/pu/rodauth/migration/sequel/webauthn.erb +0 -13
@@ -1,9 +1,9 @@
|
|
1
|
-
<%= form_with url: rodauth.sms_confirm_path, method: :post, data: { turbo: false }, class: "
|
2
|
-
<div
|
3
|
-
<%= form.label "sms-code", rodauth.sms_code_label, class: "block text-sm font-semibold" %>
|
1
|
+
<%= form_with url: rodauth.sms_confirm_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
|
+
<div>
|
3
|
+
<%= form.label "sms-code", rodauth.sms_code_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
4
4
|
<%= form.text_field rodauth.sms_code_param, value: "", id: "sms-code", autocomplete: "one-time-code", inputmode: "numeric", required: true, class: "mt-2 text-sm w-1/2 px-3 py-2 border rounded-md dark:bg-gray-900 dark:text-gray-100 dark:focus:bg-gray-800 #{rodauth.field_error(rodauth.sms_code_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "sms-code_error_message" } if rodauth.field_error(rodauth.sms_code_param)) %>
|
5
5
|
<%= content_tag(:span, rodauth.field_error(rodauth.sms_code_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "sms-code_error_message") if rodauth.field_error(rodauth.sms_code_param) %>
|
6
6
|
</div>
|
7
7
|
|
8
|
-
<%= form.submit rodauth.sms_confirm_button, class: "w-full
|
8
|
+
<%= form.submit rodauth.sms_confirm_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
9
9
|
<% end %>
|
@@ -1,11 +1,11 @@
|
|
1
|
-
<%= form_with url: rodauth.sms_disable_path, method: :post, data: { turbo: false }, class: "
|
1
|
+
<%= form_with url: rodauth.sms_disable_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
2
|
<% if rodauth.two_factor_modifications_require_password? %>
|
3
|
-
<div
|
4
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
5
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
3
|
+
<div>
|
4
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
5
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
6
6
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
7
7
|
</div>
|
8
8
|
<% end %>
|
9
9
|
|
10
|
-
<%= form.submit rodauth.sms_disable_button, class: "w-full
|
10
|
+
<%= form.submit rodauth.sms_disable_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
11
11
|
<% end %>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%= form_with url: rodauth.sms_request_path, method: :post, data: { turbo: false }, class: "
|
2
|
-
<%= form.submit rodauth.sms_request_button, class: "w-full
|
1
|
+
<%= form_with url: rodauth.sms_request_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
|
+
<%= form.submit rodauth.sms_request_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
3
3
|
<% end %>
|
@@ -1,17 +1,17 @@
|
|
1
|
-
<%= form_with url: rodauth.sms_setup_path, method: :post, data: { turbo: false }, class: "
|
1
|
+
<%= form_with url: rodauth.sms_setup_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
2
|
<% if rodauth.two_factor_modifications_require_password? %>
|
3
|
-
<div
|
4
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
5
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
3
|
+
<div>
|
4
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
5
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
6
6
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
7
7
|
</div>
|
8
8
|
<% end %>
|
9
9
|
|
10
|
-
<div
|
11
|
-
<%= form.label "sms-phone", rodauth.sms_phone_label, class: "block text-sm font-semibold" %>
|
10
|
+
<div>
|
11
|
+
<%= form.label "sms-phone", rodauth.sms_phone_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
12
12
|
<%= form.telephone_field rodauth.sms_phone_param, value: "", id: "sms-phone", autocomplete: "tel", required: true, class: "mt-2 text-sm w-1/2 px-3 py-2 border rounded-md dark:bg-gray-900 dark:text-gray-100 dark:focus:bg-gray-800 #{rodauth.field_error(rodauth.sms_phone_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "sms-phone_error_message" } if rodauth.field_error(rodauth.sms_phone_param)) %>
|
13
13
|
<%= content_tag(:span, rodauth.field_error(rodauth.sms_phone_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "sms-phone_error_message") if rodauth.field_error(rodauth.sms_phone_param) %>
|
14
14
|
</div>
|
15
15
|
|
16
|
-
<%= form.submit rodauth.sms_setup_button, class: "w-full
|
16
|
+
<%= form.submit rodauth.sms_setup_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
17
17
|
<% end %>
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<%= form_with url: rodauth.two_factor_disable_path, method: :post, data: { turbo: false }, class: "
|
1
|
+
<%= form_with url: rodauth.two_factor_disable_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
2
|
<% if rodauth.two_factor_modifications_require_password? %>
|
3
|
-
<div
|
4
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
5
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
3
|
+
<div>
|
4
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
5
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
6
6
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
7
7
|
</div>
|
8
8
|
<% end %>
|
@@ -1,15 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<div class="mb-4 text-sm text-gray-500 dark:text-gray-400">
|
2
|
+
<%== rodauth.unlock_account_explanatory_text %>
|
3
|
+
</div>
|
4
|
+
<%= form_with url: rodauth.unlock_account_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
6
5
|
<% if rodauth.unlock_account_requires_password? %>
|
7
|
-
<div
|
8
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
9
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
6
|
+
<div>
|
7
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
8
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
10
9
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
11
10
|
</div>
|
12
11
|
<% end %>
|
13
|
-
|
14
|
-
<%= form.submit rodauth.unlock_account_button, class: "w-full px-8 py-3 cursor-pointer font-semibold text-sm rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-600 dark:bg-emerald-400 dark:hover:bg-emerald-500 dark:text-gray-900 dark:focus:ring-emerald-400 dark:focus:ring-offset-current" %>
|
12
|
+
<%= form.submit rodauth.unlock_account_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
15
13
|
<% end %>
|
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<div class="mb-4 text-sm text-gray-500 dark:text-gray-400">
|
2
|
+
<%== rodauth.unlock_account_request_explanatory_text %>
|
3
|
+
</div>
|
4
|
+
<%= form_with url: rodauth.unlock_account_request_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
6
5
|
<%= form.hidden_field rodauth.login_param, value: params[rodauth.login_param] %>
|
7
|
-
|
8
|
-
<%= form.submit rodauth.unlock_account_request_button, class: "w-full px-8 py-3 cursor-pointer font-semibold text-sm rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-600 dark:bg-emerald-400 dark:hover:bg-emerald-500 dark:text-gray-900 dark:focus:ring-emerald-400 dark:focus:ring-offset-current" %>
|
6
|
+
<%= form.submit rodauth.unlock_account_request_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
9
7
|
<% end %>
|
@@ -1,19 +1,19 @@
|
|
1
|
-
<%= form_with url: rodauth.verify_account_path, method: :post, data: { turbo: false }, class: "
|
1
|
+
<%= form_with url: rodauth.verify_account_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
2
|
<% if rodauth.verify_account_set_password? %>
|
3
|
-
<div
|
4
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
5
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
3
|
+
<div>
|
4
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
5
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
6
6
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<% if rodauth.require_password_confirmation? %>
|
10
|
-
<div
|
11
|
-
<%= form.label "password-confirm", rodauth.password_confirm_label, class: "block text-sm font-semibold" %>
|
12
|
-
<%= form.password_field rodauth.password_confirm_param, value: "", id: "password-confirm", autocomplete: "new-password", required: true, class: "
|
10
|
+
<div>
|
11
|
+
<%= form.label "password-confirm", rodauth.password_confirm_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
12
|
+
<%= form.password_field rodauth.password_confirm_param, value: "", id: "password-confirm", autocomplete: "new-password", required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_confirm_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password-confirm_error_message" } if rodauth.field_error(rodauth.password_confirm_param)) %>
|
13
13
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_confirm_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password-confirm_error_message") if rodauth.field_error(rodauth.password_confirm_param) %>
|
14
14
|
</div>
|
15
15
|
<% end %>
|
16
16
|
<% end %>
|
17
17
|
|
18
|
-
<%= form.submit rodauth.verify_account_button, class: "w-full
|
18
|
+
<%= form.submit rodauth.verify_account_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
19
19
|
<% end %>
|
@@ -1,17 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<div class="mb-4 text-sm text-gray-500 dark:text-gray-400">
|
2
|
+
<%== rodauth.verify_account_resend_explanatory_text %>
|
3
|
+
</div>
|
4
|
+
<%= form_with url: rodauth.verify_account_resend_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
6
5
|
<% if params[rodauth.login_param] %>
|
7
6
|
<%= form.hidden_field rodauth.login_param, value: params[rodauth.login_param] %>
|
8
7
|
<% else %>
|
9
|
-
<div
|
10
|
-
<%= form.label "login", rodauth.login_label, class: "block text-sm font-semibold" %>
|
11
|
-
<%= form.email_field rodauth.login_param, value: params[rodauth.login_param],
|
8
|
+
<div>
|
9
|
+
<%= form.label "login", rodauth.login_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
10
|
+
<%= form.email_field rodauth.login_param, value: params[rodauth.login_param],
|
11
|
+
id: "login",
|
12
|
+
autocomplete: "email",
|
13
|
+
required: true,
|
14
|
+
placeholder: "jane@acme.inc",
|
15
|
+
class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.login_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "login_error_message" } if rodauth.field_error(rodauth.login_param)) %>
|
12
16
|
<%= content_tag(:span, rodauth.field_error(rodauth.login_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "login_error_message") if rodauth.field_error(rodauth.login_param) %>
|
13
17
|
</div>
|
14
18
|
<% end %>
|
15
|
-
|
16
|
-
<%= form.submit rodauth.verify_account_resend_button, class: "w-full px-8 py-3 cursor-pointer font-semibold text-sm rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-600 dark:bg-emerald-400 dark:hover:bg-emerald-500 dark:text-gray-900 dark:focus:ring-emerald-400 dark:focus:ring-offset-current" %>
|
19
|
+
<%= form.submit rodauth.verify_account_resend_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
17
20
|
<% end %>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%= form_with url: rodauth.verify_login_change_path, method: :post, data: { turbo: false }, class: "
|
2
|
-
<%= form.submit rodauth.verify_login_change_button, class: "w-full
|
1
|
+
<%= form_with url: rodauth.verify_login_change_path, method: :post, data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
|
+
<%= form.submit rodauth.verify_login_change_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
3
3
|
<% end %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<% cred = rodauth.webauthn_credential_options_for_get %>
|
2
2
|
|
3
|
-
<%= form_with url: rodauth.webauthn_auth_form_path, method: :post, id: "webauthn-auth-form", data: { credential_options: cred.as_json.to_json, turbo: false }, class: "
|
3
|
+
<%= form_with url: rodauth.webauthn_auth_form_path, method: :post, id: "webauthn-auth-form", data: { credential_options: cred.as_json.to_json, turbo: false }, class: "space-y-4" do |form| %>
|
4
4
|
<%= form.hidden_field rodauth.login_param, value: params[rodauth.login_param] %>
|
5
5
|
<%= form.hidden_field rodauth.webauthn_auth_challenge_param, value: cred.challenge %>
|
6
6
|
<%= form.hidden_field rodauth.webauthn_auth_challenge_hmac_param, value: rodauth.compute_hmac(cred.challenge) %>
|
7
7
|
<%= form.text_field rodauth.webauthn_auth_param, value: "", id: "webauthn-auth", class: "hidden", aria: { hidden: "true" } %>
|
8
8
|
<div id="webauthn-auth-button">
|
9
|
-
<%= form.submit rodauth.webauthn_auth_button, class: "w-full
|
9
|
+
<%= form.submit rodauth.webauthn_auth_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
10
10
|
</div>
|
11
11
|
<% end %>
|
12
12
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<%= form_with url: rodauth.webauthn_remove_path, method: :post, id: "webauthn-remove-form", data: { turbo: false }, class: "
|
1
|
+
<%= form_with url: rodauth.webauthn_remove_path, method: :post, id: "webauthn-remove-form", data: { turbo: false }, class: "space-y-4" do |form| %>
|
2
2
|
<% if rodauth.two_factor_modifications_require_password? %>
|
3
|
-
<div
|
4
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
5
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
3
|
+
<div>
|
4
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
5
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
6
6
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
7
7
|
</div>
|
8
8
|
<% end %>
|
@@ -17,5 +17,5 @@
|
|
17
17
|
<%= content_tag(:span, rodauth.field_error(rodauth.webauthn_remove_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "webauthn_remove_error_message") if rodauth.field_error(rodauth.webauthn_remove_param) %>
|
18
18
|
</fieldset>
|
19
19
|
|
20
|
-
<%= form.submit rodauth.webauthn_remove_button, class: "w-full
|
20
|
+
<%= form.submit rodauth.webauthn_remove_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
21
21
|
<% end %>
|
@@ -1,20 +1,20 @@
|
|
1
1
|
<% cred = rodauth.new_webauthn_credential %>
|
2
2
|
|
3
|
-
<%= form_with url: request.path, method: :post, id: "webauthn-setup-form", data: { credential_options: cred.as_json.to_json, turbo: false }, class: "
|
3
|
+
<%= form_with url: request.path, method: :post, id: "webauthn-setup-form", data: { credential_options: cred.as_json.to_json, turbo: false }, class: "space-y-4" do |form| %>
|
4
4
|
<%= form.hidden_field rodauth.webauthn_setup_challenge_param, value: cred.challenge %>
|
5
5
|
<%= form.hidden_field rodauth.webauthn_setup_challenge_hmac_param, value: rodauth.compute_hmac(cred.challenge) %>
|
6
6
|
<%= form.text_field rodauth.webauthn_setup_param, value: "", id: "webauthn-setup", class: "hidden", aria: { hidden: "true" } %>
|
7
7
|
|
8
8
|
<% if rodauth.two_factor_modifications_require_password? %>
|
9
|
-
<div
|
10
|
-
<%= form.label "password", rodauth.password_label, class: "block text-sm font-semibold" %>
|
11
|
-
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "
|
9
|
+
<div>
|
10
|
+
<%= form.label "password", rodauth.password_label, class: "block mb-2 text-sm font-semibold text-gray-900 dark:text-white" %>
|
11
|
+
<%= form.password_field rodauth.password_param, value: "", id: "password", autocomplete: rodauth.password_field_autocomplete_value, required: true, class: "bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500 #{rodauth.field_error(rodauth.password_param) ? "border-red-600 focus:ring-red-600 focus:border-red-600 dark:border-red-400 dark:focus:ring-red-400" : "border-gray-300 dark:border-gray-700 dark:focus:border-emerald-400 dark:focus:ring-emerald-400" }", aria: ({ invalid: true, describedby: "password_error_message" } if rodauth.field_error(rodauth.password_param)) %>
|
12
12
|
<%= content_tag(:span, rodauth.field_error(rodauth.password_param), class: "block mt-1 text-red-600 text-xs dark:text-red-400", id: "password_error_message") if rodauth.field_error(rodauth.password_param) %>
|
13
13
|
</div>
|
14
14
|
<% end %>
|
15
15
|
|
16
16
|
<div id="webauthn-setup-button">
|
17
|
-
<%= form.submit rodauth.webauthn_setup_button, class: "w-full
|
17
|
+
<%= form.submit rodauth.webauthn_setup_button, class: "w-full text-white bg-primary-600 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-semibold rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800" %>
|
18
18
|
</div>
|
19
19
|
<% end %>
|
20
20
|
|
data/config.ru
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rails", "~> 7.1.3", ">= 7.1.3.4"
|
6
|
+
gem "sqlite3", "~> 1.4"
|
7
|
+
gem "puma", ">= 5.0"
|
8
|
+
gem "importmap-rails"
|
9
|
+
gem "turbo-rails"
|
10
|
+
gem "stimulus-rails"
|
11
|
+
gem "tzinfo-data", platforms: [:windows, :jruby]
|
12
|
+
|
13
|
+
gemspec path: "../"
|