* Add confirmation step for email changes This adds a confirmation step for email changes of existing users. Like the initial account confirmation, a confirmation link is sent to the new address. Additionally, a notification is sent to the existing address when the change is initiated. This message includes instruction to reset the password immediately or to contact the instance admin if the change was not initiated by the account owner. Fixes #3871 * Add review fixes
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class UserMailer < Devise::Mailer
 | |
|   layout 'mailer'
 | |
| 
 | |
|   helper :instance
 | |
| 
 | |
|   def confirmation_instructions(user, token, **)
 | |
|     @resource = user
 | |
|     @token    = token
 | |
|     @instance = Rails.configuration.x.local_domain
 | |
| 
 | |
|     return if @resource.disabled?
 | |
| 
 | |
|     I18n.with_locale(@resource.locale || I18n.default_locale) do
 | |
|       mail to: @resource.unconfirmed_email.blank? ? @resource.email : @resource.unconfirmed_email,
 | |
|            subject: I18n.t(@resource.pending_reconfirmation? ? 'devise.mailer.reconfirmation_instructions.subject' : 'devise.mailer.confirmation_instructions.subject', instance: @instance),
 | |
|            template_name: @resource.pending_reconfirmation? ? 'reconfirmation_instructions' : 'confirmation_instructions'
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def reset_password_instructions(user, token, **)
 | |
|     @resource = user
 | |
|     @token    = token
 | |
|     @instance = Rails.configuration.x.local_domain
 | |
| 
 | |
|     return if @resource.disabled?
 | |
| 
 | |
|     I18n.with_locale(@resource.locale || I18n.default_locale) do
 | |
|       mail to: @resource.email, subject: I18n.t('devise.mailer.reset_password_instructions.subject')
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def password_change(user, **)
 | |
|     @resource = user
 | |
|     @instance = Rails.configuration.x.local_domain
 | |
| 
 | |
|     return if @resource.disabled?
 | |
| 
 | |
|     I18n.with_locale(@resource.locale || I18n.default_locale) do
 | |
|       mail to: @resource.email, subject: I18n.t('devise.mailer.password_change.subject')
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def email_changed(user, **)
 | |
|     @resource = user
 | |
|     @instance = Rails.configuration.x.local_domain
 | |
| 
 | |
|     return if @resource.disabled?
 | |
| 
 | |
|     I18n.with_locale(@resource.locale || I18n.default_locale) do
 | |
|       mail to: @resource.email, subject: I18n.t('devise.mailer.email_changed.subject')
 | |
|     end
 | |
|   end
 | |
| end
 |