From 9557cdde8a6015ad9db0fb5840278cf9d4c6d2eb Mon Sep 17 00:00:00 2001 From: Yaroslav Shmarov Date: Tue, 8 Nov 2022 13:04:26 +0100 Subject: [PATCH 1/8] use form_with, requre email. form_with allows more options than form_for; don't let the html form submit null email --- app/views/passwordless/sessions/new.html.erb | 4 ++-- test/dummy/app/views/registrations/new.html.erb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/passwordless/sessions/new.html.erb b/app/views/passwordless/sessions/new.html.erb index 55e468c..c1fc8a8 100644 --- a/app/views/passwordless/sessions/new.html.erb +++ b/app/views/passwordless/sessions/new.html.erb @@ -1,5 +1,5 @@ -<%= form_for @session, url: send(Passwordless.mounted_as).sign_in_path do |f| %> +<%= form_with, model: @session, url: send(Passwordless.mounted_as).sign_in_path do |f| %> <% email_field_name = :"passwordless[#{@email_field}]" %> - <%= text_field_tag email_field_name, params.fetch(email_field_name, nil) %> + <%= text_field_tag email_field_name, params.fetch(email_field_name, nil), required: true %> <%= f.submit I18n.t('passwordless.sessions.new.submit') %> <% end %> diff --git a/test/dummy/app/views/registrations/new.html.erb b/test/dummy/app/views/registrations/new.html.erb index dc62362..060c4ff 100644 --- a/test/dummy/app/views/registrations/new.html.erb +++ b/test/dummy/app/views/registrations/new.html.erb @@ -1,4 +1,4 @@ -<%= form_for @user, url: registrations_path do |f| %> +<%= form_with model: @user, url: registrations_path do |f| %> <%= f.label :email %> <%= f.email_field :email %> <%= f.submit %> From 1b8fc6f75f1f5a83bd6a8a2f547965bc22b802ce Mon Sep 17 00:00:00 2001 From: yshmarov Date: Wed, 9 Nov 2022 19:28:37 +0100 Subject: [PATCH 2/8] add data turbo false to ensure redirect in rails 7 --- app/views/passwordless/sessions/new.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/passwordless/sessions/new.html.erb b/app/views/passwordless/sessions/new.html.erb index c1fc8a8..06ce904 100644 --- a/app/views/passwordless/sessions/new.html.erb +++ b/app/views/passwordless/sessions/new.html.erb @@ -1,4 +1,4 @@ -<%= form_with, model: @session, url: send(Passwordless.mounted_as).sign_in_path do |f| %> +<%= form_with, model: @session, url: send(Passwordless.mounted_as).sign_in_path, data: { turbo: 'false' } do |f| %> <% email_field_name = :"passwordless[#{@email_field}]" %> <%= text_field_tag email_field_name, params.fetch(email_field_name, nil), required: true %> <%= f.submit I18n.t('passwordless.sessions.new.submit') %> From 414989a470541f738014d4d50485ad2ee4fde685 Mon Sep 17 00:00:00 2001 From: yshmarov Date: Wed, 9 Nov 2022 19:29:14 +0100 Subject: [PATCH 3/8] validate regex in example --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b18c4dd..e1f5509 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,10 @@ Then specify which field on your `User` record is the email field with: ```ruby class User < ApplicationRecord - validates :email, presence: true, uniqueness: { case_sensitive: false } + validates :email, + presence: true, + uniqueness: { case_sensitive: false }, + format: { with: URI::MailTo::EMAIL_REGEXP } passwordless_with :email # <-- here! end From 753e7130fdcf8f72edcad43608f491d6af4cba04 Mon Sep 17 00:00:00 2001 From: yshmarov Date: Wed, 9 Nov 2022 19:30:14 +0100 Subject: [PATCH 4/8] fix typo and consequently specs --- app/views/passwordless/sessions/new.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/passwordless/sessions/new.html.erb b/app/views/passwordless/sessions/new.html.erb index 06ce904..3fe5fe7 100644 --- a/app/views/passwordless/sessions/new.html.erb +++ b/app/views/passwordless/sessions/new.html.erb @@ -1,4 +1,4 @@ -<%= form_with, model: @session, url: send(Passwordless.mounted_as).sign_in_path, data: { turbo: 'false' } do |f| %> +<%= form_with model: @session, url: send(Passwordless.mounted_as).sign_in_path, data: { turbo: 'false' } do |f| %> <% email_field_name = :"passwordless[#{@email_field}]" %> <%= text_field_tag email_field_name, params.fetch(email_field_name, nil), required: true %> <%= f.submit I18n.t('passwordless.sessions.new.submit') %> From f52c332a6944cd9ad8b509facd1fce2033eeda58 Mon Sep 17 00:00:00 2001 From: yshmarov Date: Sun, 13 Nov 2022 11:14:52 +0100 Subject: [PATCH 5/8] add ua.yml i18n --- config/locales/ua.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 config/locales/ua.yml diff --git a/config/locales/ua.yml b/config/locales/ua.yml new file mode 100644 index 0000000..e0f8e8b --- /dev/null +++ b/config/locales/ua.yml @@ -0,0 +1,13 @@ +--- +ua: + passwordless: + sessions: + create: + session_expired: 'Ваш сеанс закінчився, будь ласка увійдіть знову.' + email_sent_if_record_found: "Якщо ми знайшли вас у системі, ми надіслали вам електронного листа." + token_claimed: "Це посилання вже використовувалося, спробуйте надіслати запит на посилання ще раз" + new: + submit: 'Надіслати магічне посилання' + mailer: + subject: "Ваше магічне посилання ✨" + magic_link: "Ось ваше магічне посилання: %{link}" From 70ba88cce76549a0ed46cf09eda389aac6f98653 Mon Sep 17 00:00:00 2001 From: yshmarov Date: Wed, 30 Nov 2022 01:08:47 +0100 Subject: [PATCH 6/8] Delete ua.yml --- config/locales/ua.yml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 config/locales/ua.yml diff --git a/config/locales/ua.yml b/config/locales/ua.yml deleted file mode 100644 index e0f8e8b..0000000 --- a/config/locales/ua.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -ua: - passwordless: - sessions: - create: - session_expired: 'Ваш сеанс закінчився, будь ласка увійдіть знову.' - email_sent_if_record_found: "Якщо ми знайшли вас у системі, ми надіслали вам електронного листа." - token_claimed: "Це посилання вже використовувалося, спробуйте надіслати запит на посилання ще раз" - new: - submit: 'Надіслати магічне посилання' - mailer: - subject: "Ваше магічне посилання ✨" - magic_link: "Ось ваше магічне посилання: %{link}" From dd33703542d5118492beb28ad8af0157241cfb07 Mon Sep 17 00:00:00 2001 From: yshmarov Date: Wed, 30 Nov 2022 01:08:51 +0100 Subject: [PATCH 7/8] Update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb76969..30d99db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +### Changed + +- Replaced `form_for` with `form_with` +- Added frontend validation for email presence in views + ### Fixed - Fix `Passwordless#ControllerHelpers` to be used outside controllers (#124) From bd98de105106e8fcddb34ce727ee5efb435086fd Mon Sep 17 00:00:00 2001 From: Mikkel Malmberg Date: Wed, 30 Nov 2022 10:01:27 +0100 Subject: [PATCH 8/8] Update CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30d99db..cd4d432 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,8 @@ ### Changed -- Replaced `form_for` with `form_with` -- Added frontend validation for email presence in views +- Replaced `form_for` with `form_with` in view template ([#128](https://github.com/mikker/passwordless/pull/128)) +- Added frontend validation for email presence in views ([#128](https://github.com/mikker/passwordless/pull/128)) ### Fixed