]> git.openstreetmap.org Git - rails.git/commitdiff
Merge pull request #4197 from AntonKhorev/user-resources
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 30 Aug 2023 14:11:57 +0000 (15:11 +0100)
committerGitHub <noreply@github.com>
Wed, 30 Aug 2023 14:11:57 +0000 (15:11 +0100)
Move user lookup/error methods from app controller to concerns

app/controllers/application_controller.rb
app/controllers/changesets_controller.rb
app/controllers/concerns/user_methods.rb
app/controllers/confirmations_controller.rb
app/controllers/diary_entries_controller.rb
app/controllers/friendships_controller.rb
app/controllers/messages_controller.rb
app/controllers/notes_controller.rb
app/controllers/traces_controller.rb
app/controllers/user_blocks_controller.rb
app/controllers/user_roles_controller.rb

index 5dcfee07ca03cc9aaeb84549513305af4c658133..a30816a8ede740eaf3adf8f8be7165db0d23a193 100644 (file)
@@ -215,24 +215,6 @@ class ApplicationController < ActionController::Base
     render :action => "timeout"
   end
 
-  ##
-  # ensure that there is a "user" instance variable
-  def lookup_user
-    render_unknown_user params[:display_name] unless @user = User.active.find_by(:display_name => params[:display_name])
-  end
-
-  ##
-  # render a "no such user" page
-  def render_unknown_user(name)
-    @title = t "users.no_such_user.title"
-    @not_found_user = name
-
-    respond_to do |format|
-      format.html { render :template => "users/no_such_user", :status => :not_found }
-      format.all { head :not_found }
-    end
-  end
-
   ##
   # Unfortunately if a PUT or POST request that has a body fails to
   # read it then Apache will sometimes fail to return the response it
index 7796dfeb27fe04d9e2875f451a73a13e25711c78..22d3356b79fee7425865fcff5de6098b2cc0b153 100644 (file)
@@ -1,6 +1,8 @@
 # The ChangesetController is the RESTful interface to Changeset objects
 
 class ChangesetsController < ApplicationController
+  include UserMethods
+
   layout "site"
   require "xml/libxml"
 
index 81e9f0064c4e7b331b8fc8cc4fdddcb5dbf9073d..eb7d389881eba94f5f8fad65dd197f94eaa9c92d 100644 (file)
@@ -3,6 +3,26 @@ module UserMethods
 
   private
 
+  ##
+  # ensure that there is a "user" instance variable
+  def lookup_user
+    @user = User.active.find_by!(:display_name => params[:display_name])
+  rescue ActiveRecord::RecordNotFound
+    render_unknown_user params[:display_name]
+  end
+
+  ##
+  # render a "no such user" page
+  def render_unknown_user(name)
+    @title = t "users.no_such_user.title"
+    @not_found_user = name
+
+    respond_to do |format|
+      format.html { render :template => "users/no_such_user", :status => :not_found, :layout => "site" }
+      format.all { head :not_found }
+    end
+  end
+
   ##
   # update a user's details
   def update_user(user, params)
index a482bc96de0da11b52335a7790879fc0155f9ad9..65f5605710a5726e9de02355368c5a976ea19e37 100644 (file)
@@ -1,5 +1,6 @@
 class ConfirmationsController < ApplicationController
   include SessionMethods
+  include UserMethods
 
   layout "site"
 
index 6981ed797f92112956e2097bf7a11a1e54d9465b..ea6d1d27601db89980fa6366308b90a5ad996f45 100644 (file)
@@ -1,4 +1,6 @@
 class DiaryEntriesController < ApplicationController
+  include UserMethods
+
   layout "site", :except => :rss
 
   before_action :authorize_web
index 4d1161147304943d50c4437797566e99aae6a917..731dda453068bfb6e057e60dbf5fe8b4ca0dce8f 100644 (file)
@@ -1,4 +1,6 @@
 class FriendshipsController < ApplicationController
+  include UserMethods
+
   layout "site"
 
   before_action :authorize_web
index 22d0c88ba5e868e374f6c5f553c21245975e5d7e..e0b5b05d31900dca9032e070df3ea127fa45cd18 100644 (file)
@@ -1,4 +1,6 @@
 class MessagesController < ApplicationController
+  include UserMethods
+
   layout "site"
 
   before_action :authorize_web
index 440a620e8116806be582b4b996a88088cb53a1a7..97efc3eda8128f79bbd0a870b347cebc0c384501 100644 (file)
@@ -1,4 +1,6 @@
 class NotesController < ApplicationController
+  include UserMethods
+
   layout :map_layout
 
   before_action :check_api_readable
@@ -7,30 +9,22 @@ class NotesController < ApplicationController
 
   authorize_resource
 
+  before_action :lookup_user, :only => [:index]
   before_action :set_locale
   around_action :web_timeout
 
   ##
   # Display a list of notes by a specified user
   def index
-    if params[:display_name]
-      if @user = User.active.find_by(:display_name => params[:display_name])
-        @params = params.permit(:display_name)
-        @title = t ".title", :user => @user.display_name
-        @page = (params[:page] || 1).to_i
-        @page_size = 10
-        @notes = @user.notes
-        @notes = @notes.visible unless current_user&.moderator?
-        @notes = @notes.order("updated_at DESC, id").distinct.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author)
-
-        render :layout => "site"
-      else
-        @title = t "users.no_such_user.title"
-        @not_found_user = params[:display_name]
-
-        render :template => "users/no_such_user", :status => :not_found, :layout => "site"
-      end
-    end
+    @params = params.permit(:display_name)
+    @title = t ".title", :user => @user.display_name
+    @page = (params[:page] || 1).to_i
+    @page_size = 10
+    @notes = @user.notes
+    @notes = @notes.visible unless current_user&.moderator?
+    @notes = @notes.order("updated_at DESC, id").distinct.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author)
+
+    render :layout => "site"
   end
 
   def show
index 0b7dbc94a60228f0e63656333a689b5abef24ec4..90ab34a48c406d27ecc31b3418c6ad48d94bb4c1 100644 (file)
@@ -1,4 +1,6 @@
 class TracesController < ApplicationController
+  include UserMethods
+
   layout "site", :except => :georss
 
   before_action :authorize_web
index 63ebdad713b85f5b54785c5d8169a611f89d57dc..546c8233c65a4d5f4eeb42d97cc76dc0558c1d28 100644 (file)
@@ -1,4 +1,6 @@
 class UserBlocksController < ApplicationController
+  include UserMethods
+
   layout "site"
 
   before_action :authorize_web
index cf5b4de9e35e2c8771673e4bd09ac7d011aeeb73..b54cd0bd7a3eee82ccfecb01ce14882ba1d7c3cc 100644 (file)
@@ -1,4 +1,6 @@
 class UserRolesController < ApplicationController
+  include UserMethods
+
   layout "site"
 
   before_action :authorize_web