Rename and refactor User#confirm! to User#mark_email_as_confirmed! (#28735)
				
					
				
			This commit is contained in:
		
							parent
							
								
									e621c1c44c
								
							
						
					
					
						commit
						98b5f85f10
					
				| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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] | ||||
|  | ||||
| @ -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 | ||||
| 
 | ||||
|  | ||||
| @ -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 } | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user