From ad7fa39b6257f1376b34bc35240cfeb3eb8f8cc0 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Tue, 18 Jul 2023 13:53:06 +0200 Subject: [PATCH] feat(user): block login when .. blocked --- app/models/user.rb | 4 ++++ spec/system/users/sign_up_spec.rb | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index a688ebd44..85920d288 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -267,6 +267,10 @@ class User < ApplicationRecord devise_mailer.send(notification, self, *args).deliver_later end + def active_for_authentication? + super && blocked_at.nil? + end + private def does_not_merge_on_self diff --git a/spec/system/users/sign_up_spec.rb b/spec/system/users/sign_up_spec.rb index d5629802b..afa8e0651 100644 --- a/spec/system/users/sign_up_spec.rb +++ b/spec/system/users/sign_up_spec.rb @@ -142,4 +142,17 @@ describe 'Signing up:' do expect(page).to have_current_path new_user_session_path end end + + context 'when the user already has a confirmed account but is blocked' do + before do + create(:user, email: user_email, password: user_password, blocked_at: Time.current) + end + + scenario 'they cannot signed in' do + visit new_user_session_path + sign_in_with user_email, user_password + + expect(page).to have_current_path new_user_session_path + end + end end