From 1c4c03af17972bf8ecf94c9910991d92f71a1fdb Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Tue, 30 Nov 2021 13:03:29 +0000 Subject: [PATCH] Add specific field error messages if email or password omitted --- app/controllers/users/sessions_controller.rb | 16 ++++++++++++++++ config/routes.rb | 2 +- spec/features/user_spec.rb | 8 ++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 app/controllers/users/sessions_controller.rb diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb new file mode 100644 index 000000000..ad2797bb4 --- /dev/null +++ b/app/controllers/users/sessions_controller.rb @@ -0,0 +1,16 @@ +class Users::SessionsController < Devise::SessionsController + def create + self.resource = resource_class.new + if params.dig("user", "email").empty? + resource.errors.add :email, "Please enter email address" + end + if params.dig("user", "password").empty? + resource.errors.add :password, "Please enter password" + end + if resource.errors.present? + render :new, status: :unprocessable_entity + else + super + end + end +end diff --git a/config/routes.rb b/config/routes.rb index 6c4fd7946..8042e3ee5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,6 @@ Rails.application.routes.draw do devise_for :admin_users, ActiveAdmin::Devise.config - devise_for :users, controllers: { passwords: "users/passwords" }, skip: [:registrations] + devise_for :users, controllers: { passwords: "users/passwords", sessions: "users/sessions" }, skip: [:registrations] devise_scope :user do get "confirmations/reset", to: "users/passwords#reset_confirmation" get "users/edit" => "devise/registrations#edit", :as => "edit_user_registration" diff --git a/spec/features/user_spec.rb b/spec/features/user_spec.rb index 561a25e02..be6400b42 100644 --- a/spec/features/user_spec.rb +++ b/spec/features/user_spec.rb @@ -90,6 +90,14 @@ RSpec.describe "User Features" do expect(page).to have_selector("#error-summary-title") expect(page).to have_no_css(".govuk-notification-banner.govuk-notification-banner--success") end + + it "show specific field error messages if a field was omitted" do + visit("/case_logs") + click_button("Sign in") + expect(page).to have_selector("#error-summary-title") + expect(page).to have_selector("#user-email-field-error") + expect(page).to have_selector("#user-password-field-error") + end end context "Your Account " do