X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/4a6e7b78152446a933dc9bb1364ab00bcf254872..7e5cbe87ed37f9cba8224fa4049047d7f981f66a:/app/controllers/concerns/user_methods.rb diff --git a/app/controllers/concerns/user_methods.rb b/app/controllers/concerns/user_methods.rb new file mode 100644 index 000000000..81e9f0064 --- /dev/null +++ b/app/controllers/concerns/user_methods.rb @@ -0,0 +1,47 @@ +module UserMethods + extend ActiveSupport::Concern + + private + + ## + # update a user's details + def update_user(user, params) + user.display_name = params[:display_name] + user.new_email = params[:new_email] + + unless params[:pass_crypt].empty? && params[:pass_crypt_confirmation].empty? + user.pass_crypt = params[:pass_crypt] + user.pass_crypt_confirmation = params[:pass_crypt_confirmation] + end + + if params[:auth_provider].nil? || params[: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