]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/concerns/user_methods.rb
Merge branch 'master' into feature/add-communities-page
[rails.git] / 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 (file)
index 0000000..81e9f00
--- /dev/null
@@ -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