]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/user_controller.rb
Remove some (hopefully) redundant code
[rails.git] / app / controllers / user_controller.rb
index a9006e82b334e6edfe19ae24fad0dcfdbf8d9e78..a7bf53824821a4559672b9d1446eccb7dc74bee3 100644 (file)
@@ -1,5 +1,5 @@
 class UserController < ApplicationController
-  layout :choose_layout
+  layout 'site', :except => [:api_details]
 
   skip_before_filter :verify_authenticity_token, :only => [:api_read, :api_details, :api_gpx_files]
   before_filter :disable_terms_redirect, :only => [:terms, :save, :logout, :api_details]
@@ -7,6 +7,7 @@ class UserController < ApplicationController
   before_filter :authorize_web, :except => [:api_read, :api_details, :api_gpx_files]
   before_filter :set_locale, :except => [:api_read, :api_details, :api_gpx_files]
   before_filter :require_user, :only => [:account, :go_public, :make_friend, :remove_friend]
+  before_filter :require_self, :only => [:account]
   before_filter :check_database_readable, :except => [:login, :api_read, :api_details, :api_gpx_files]
   before_filter :check_database_writable, :only => [:new, :account, :confirm, :confirm_email, :lost_password, :reset_password, :go_public, :make_friend, :remove_friend]
   before_filter :check_api_readable, :only => [:api_read, :api_details, :api_gpx_files]
@@ -104,7 +105,7 @@ class UserController < ApplicationController
             successful_login(@user)
           else
             session[:token] = @user.tokens.create.token
-            Notifier.signup_confirm(@user, @user.tokens.create(:referer => referer)).deliver
+            Notifier.signup_confirm(@user, @user.tokens.create(:referer => referer)).deliver_now
             redirect_to :action => 'confirm', :display_name => @user.display_name
           end
         else
@@ -164,7 +165,7 @@ class UserController < ApplicationController
 
       if user
         token = user.tokens.create
-        Notifier.lost_password(user, token).deliver
+        Notifier.lost_password(user, token).deliver_now
         flash[:notice] = t 'user.lost_password.notice email on way'
         redirect_to :action => 'login'
       else
@@ -338,7 +339,6 @@ class UserController < ApplicationController
           token.destroy
 
           session[:user] = user.id
-          cookies.permanent["_osm_username"] = user.display_name
 
           redirect_to referer || welcome_path
         end
@@ -353,7 +353,7 @@ class UserController < ApplicationController
 
   def confirm_resend
     if user = User.find_by_display_name(params[:display_name])
-      Notifier.signup_confirm(user, user.tokens.create).deliver
+      Notifier.signup_confirm(user, user.tokens.create).deliver_now
       flash[:notice] = t 'user.confirm_resend.success', :email => user.email
     else
       flash[:notice] = t 'user.confirm_resend.failure', :name => params[:display_name]
@@ -377,7 +377,6 @@ class UserController < ApplicationController
         end
         token.destroy
         session[:user] = @user.id
-        cookies.permanent["_osm_username"] = @user.display_name
         redirect_to :action => 'account', :display_name => @user.display_name
       else
         flash[:error] = t 'user.confirm_email.failure'
@@ -425,7 +424,7 @@ class UserController < ApplicationController
         unless @user.is_friends_with?(@new_friend)
           if friend.save
             flash[:notice] = t 'user.make_friend.success', :name => @new_friend.display_name
-            Notifier.friend_notification(friend).deliver
+            Notifier.friend_notification(friend).deliver_now
           else
             friend.add_error(t('user.make_friend.failed', :name => @new_friend.display_name))
           end
@@ -638,8 +637,6 @@ private
   ##
   # process a successful login
   def successful_login(user)
-    cookies.permanent["_osm_username"] = user.display_name
-
     session[:user] = user.id
     session_expires_after 28.days if session[:remember_me]
 
@@ -727,8 +724,6 @@ private
     if user.save
       set_locale
 
-      cookies.permanent["_osm_username"] = user.display_name
-
       if user.new_email.blank? or user.new_email == user.email
         flash.now[:notice] = t 'user.account.flash update success'
       else
@@ -738,7 +733,7 @@ private
           flash.now[:notice] = t 'user.account.flash update success confirm needed'
 
           begin
-            Notifier.email_confirm(user, user.tokens.create).deliver
+            Notifier.email_confirm(user, user.tokens.create).deliver_now
           rescue
             # Ignore errors sending email
           end
@@ -747,7 +742,7 @@ private
           @user.errors.set(:email, [])
         end
 
-        user.reset_email!
+        user.restore_email!
       end
     end
   end
@@ -769,6 +764,14 @@ private
     end
   end
 
+  ##
+  # require that the user in the URL is the logged in user
+  def require_self
+    if params[:display_name] != @user.display_name
+      render :text => "", :status => :forbidden
+    end
+  end
+
   ##
   # ensure that there is a "this_user" instance variable
   def lookup_user_by_id
@@ -783,21 +786,6 @@ private
     redirect_to :controller => 'user', :action => 'view', :display_name => params[:display_name] unless @this_user
   end
 
-  ##
-  # Choose the layout to use. See
-  # https://rails.lighthouseapp.com/projects/8994/tickets/5371-layout-with-onlyexcept-options-makes-other-actions-render-without-layouts
-  def choose_layout
-    oauth_url = url_for(:controller => :oauth, :action => :authorize, :only_path => true)
-
-    if [ 'api_details' ].include? action_name
-      nil
-    elsif params[:referer] and URI.parse(params[:referer]).path == oauth_url
-      'slim'
-    else
-      'site'
-    end
-  end
-
   ##
   #
   def disable_terms_redirect