Rename and refactor `User#confirm!` to `User#mark_email_as_confirmed!` (#28735)

pull/28743/head
Claire 2024-01-15 19:04:58 +01:00 committed by GitHub
parent e621c1c44c
commit 98b5f85f10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 33 additions and 35 deletions

View File

@ -7,7 +7,7 @@ module Admin
def create
authorize @user, :confirm?
@user.confirm!
@user.mark_email_as_confirmed!
log_action :confirm, @user
redirect_to admin_accounts_path
end

View File

@ -61,7 +61,7 @@ module User::Omniauthable
user.account.avatar_remote_url = nil
end
user.confirm! if email_is_verified
user.mark_email_as_confirmed! if email_is_verified
user.save!
user
end

View File

@ -190,37 +190,16 @@ class User < ApplicationRecord
end
def confirm
new_user = !confirmed?
self.approved = true if grant_approval_on_confirmation?
super
if new_user
# Avoid extremely unlikely race condition when approving and confirming
# the user at the same time
reload unless approved?
if approved?
prepare_new_user!
else
notify_staff_about_pending_account!
end
wrap_email_confirmation do
super
end
end
def confirm!
new_user = !confirmed?
self.approved = true if grant_approval_on_confirmation?
skip_confirmation!
save!
if new_user
# Avoid extremely unlikely race condition when approving and confirming
# the user at the same time
reload unless approved?
prepare_new_user! if approved?
# Mark current email as confirmed, bypassing Devise
def mark_email_as_confirmed!
wrap_email_confirmation do
skip_confirmation!
save!
end
end
@ -435,6 +414,25 @@ class User < ApplicationRecord
open_registrations? && !sign_up_from_ip_requires_approval? && !sign_up_email_requires_approval?
end
def wrap_email_confirmation
new_user = !confirmed?
self.approved = true if grant_approval_on_confirmation?
yield
if new_user
# Avoid extremely unlikely race condition when approving and confirming
# the user at the same time
reload unless approved?
if approved?
prepare_new_user!
else
notify_staff_about_pending_account!
end
end
end
def sign_up_from_ip_requires_approval?
!sign_up_ip.nil? && IpBlock.where(severity: :sign_up_requires_approval).where('ip >>= ?', sign_up_ip.to_s).exists?
end

View File

@ -105,7 +105,7 @@ module Mastodon::CLI
if user.save
if options[:confirmed]
user.confirmed_at = nil
user.confirm!
user.mark_email_as_confirmed!
end
user.approve! if options[:approve]

View File

@ -49,7 +49,7 @@ describe 'Using OAuth from an external app' do
let(:user) { Fabricate(:user, email: email, password: password) }
before do
user.confirm!
user.mark_email_as_confirmed!
user.approve!
end

View File

@ -461,12 +461,12 @@ RSpec.describe User do
end
end
describe '#confirm!' do
describe '#mark_email_as_confirmed!' do
subject(:user) { Fabricate(:user, confirmed_at: confirmed_at) }
before do
ActionMailer::Base.deliveries.clear
user.confirm!
user.mark_email_as_confirmed!
end
after { ActionMailer::Base.deliveries.clear }

View File

@ -64,7 +64,7 @@ RSpec.describe UserPolicy do
context 'when record.confirmed?' do
it 'denies' do
john.user.confirm!
john.user.mark_email_as_confirmed!
expect(subject).to_not permit(admin, john.user)
end
end