module UserMethods extend ActiveSupport::Concern private ## # update a user's details def update_user(user, params) user.display_name = params[:user][:display_name] user.new_email = params[:user][:new_email] unless params[:user][:pass_crypt].empty? && params[:user][:pass_crypt_confirmation].empty? user.pass_crypt = params[:user][:pass_crypt] user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation] end if params[:user][:auth_provider].nil? || params[:user][:auth_provider].blank? user.auth_provider = nil user.auth_uid = nil end if user.save session[:fingerprint] = user.fingerprint if user.new_email.blank? || user.new_email == user.email flash[:notice] = t "accounts.update.success" else user.email = user.new_email if user.valid? flash[:notice] = t "accounts.update.success_confirm_needed" begin UserMailer.email_confirm(user, user.tokens.create).deliver_later rescue StandardError # Ignore errors sending email end else current_user.errors.add(:new_email, current_user.errors[:email]) current_user.errors.add(:email, []) end user.restore_email! end end end end