Merge pull request #1569 from jouve/simplify_controllers2
Simplify controllers and layout handling
This commit is contained in:
commit
68f4b59738
27 changed files with 42 additions and 151 deletions
|
@ -10,19 +10,17 @@ class ApplicationController < ActionController::Base
|
||||||
helper_method :abilities, :can?
|
helper_method :abilities, :can?
|
||||||
|
|
||||||
rescue_from Gitlab::Gitolite::AccessDenied do |exception|
|
rescue_from Gitlab::Gitolite::AccessDenied do |exception|
|
||||||
render "errors/gitolite", layout: "error", status: 500
|
render "errors/gitolite", layout: "errors", status: 500
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue_from Encoding::CompatibilityError do |exception|
|
rescue_from Encoding::CompatibilityError do |exception|
|
||||||
render "errors/encoding", layout: "error", status: 500
|
render "errors/encoding", layout: "errors", status: 500
|
||||||
end
|
end
|
||||||
|
|
||||||
rescue_from ActiveRecord::RecordNotFound do |exception|
|
rescue_from ActiveRecord::RecordNotFound do |exception|
|
||||||
render "errors/not_found", layout: "error", status: 404
|
render "errors/not_found", layout: "errors", status: 404
|
||||||
end
|
end
|
||||||
|
|
||||||
layout :layout_by_resource
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def reject_blocked!
|
def reject_blocked!
|
||||||
|
@ -43,14 +41,6 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def layout_by_resource
|
|
||||||
if devise_controller?
|
|
||||||
"devise_layout"
|
|
||||||
else
|
|
||||||
"application"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_current_user_for_mailer
|
def set_current_user_for_mailer
|
||||||
MailerObserver.current_user = current_user
|
MailerObserver.current_user = current_user
|
||||||
end
|
end
|
||||||
|
@ -68,7 +58,7 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def project
|
def project
|
||||||
@project ||= current_user.projects.find_by_code(params[:project_id])
|
@project ||= current_user.projects.find_by_code(params[:project_id] || params[:id])
|
||||||
@project || render_404
|
@project || render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -85,15 +75,15 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def access_denied!
|
def access_denied!
|
||||||
render "errors/access_denied", layout: "error", status: 404
|
render "errors/access_denied", layout: "errors", status: 404
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_found!
|
def not_found!
|
||||||
render "errors/not_found", layout: "error", status: 404
|
render "errors/not_found", layout: "errors", status: 404
|
||||||
end
|
end
|
||||||
|
|
||||||
def git_not_found!
|
def git_not_found!
|
||||||
render "errors/git_not_found", layout: "error", status: 404
|
render "errors/git_not_found", layout: "errors", status: 404
|
||||||
end
|
end
|
||||||
|
|
||||||
def method_missing(method_sym, *arguments, &block)
|
def method_missing(method_sym, *arguments, &block)
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
# Controller for viewing a file's blame
|
# Controller for viewing a file's blame
|
||||||
class BlameController < ApplicationController
|
class BlameController < ProjectResourceController
|
||||||
include ExtractsPath
|
include ExtractsPath
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
# Controller for viewing a file's blame
|
# Controller for viewing a file's blame
|
||||||
class BlobController < ApplicationController
|
class BlobController < ProjectResourceController
|
||||||
include ExtractsPath
|
include ExtractsPath
|
||||||
include Gitlab::Encode
|
include Gitlab::Encode
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
# Controller for a specific Commit
|
# Controller for a specific Commit
|
||||||
#
|
#
|
||||||
# Not to be confused with CommitsController, plural.
|
# Not to be confused with CommitsController, plural.
|
||||||
class CommitController < ApplicationController
|
class CommitController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
require "base64"
|
require "base64"
|
||||||
|
|
||||||
class CommitsController < ApplicationController
|
class CommitsController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
include ExtractsPath
|
include ExtractsPath
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
class CompareController < ApplicationController
|
class CompareController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,16 +1,9 @@
|
||||||
class DeployKeysController < ApplicationController
|
class DeployKeysController < ProjectResourceController
|
||||||
respond_to :html
|
respond_to :html
|
||||||
layout "project"
|
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_admin_project!
|
before_filter :authorize_admin_project!
|
||||||
|
|
||||||
def project
|
|
||||||
@project ||= Project.find_by_code(params[:project_id])
|
|
||||||
end
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@keys = @project.deploy_keys.all
|
@keys = @project.deploy_keys.all
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
class ErrorsController < ApplicationController
|
class ErrorsController < ApplicationController
|
||||||
layout "error"
|
|
||||||
|
|
||||||
def githost
|
def githost
|
||||||
render "errors/gitolite"
|
render "errors/gitolite"
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
class HooksController < ApplicationController
|
class HooksController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_admin_project!, only: [:new, :create, :destroy]
|
before_filter :authorize_admin_project!, only: [:new, :create, :destroy]
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
class IssuesController < ApplicationController
|
class IssuesController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :module_enabled
|
before_filter :module_enabled
|
||||||
before_filter :issue, only: [:edit, :update, :destroy, :show]
|
before_filter :issue, only: [:edit, :update, :destroy, :show]
|
||||||
helper_method :issues_filter
|
helper_method :issues_filter
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
# Allow read any issue
|
# Allow read any issue
|
||||||
before_filter :authorize_read_issue!
|
before_filter :authorize_read_issue!
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
class LabelsController < ApplicationController
|
class LabelsController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :module_enabled
|
before_filter :module_enabled
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
# Allow read any issue
|
# Allow read any issue
|
||||||
before_filter :authorize_read_issue!
|
before_filter :authorize_read_issue!
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
class MergeRequestsController < ApplicationController
|
class MergeRequestsController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :module_enabled
|
before_filter :module_enabled
|
||||||
before_filter :merge_request, only: [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check, :raw]
|
before_filter :merge_request, only: [:edit, :update, :destroy, :show, :commits, :diffs, :automerge, :automerge_check, :raw]
|
||||||
before_filter :validates_merge_request, only: [:show, :diffs, :raw]
|
before_filter :validates_merge_request, only: [:show, :diffs, :raw]
|
||||||
before_filter :define_show_vars, only: [:show, :diffs]
|
before_filter :define_show_vars, only: [:show, :diffs]
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
# Allow read any merge_request
|
# Allow read any merge_request
|
||||||
before_filter :authorize_read_merge_request!
|
before_filter :authorize_read_merge_request!
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
class MilestonesController < ApplicationController
|
class MilestonesController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :module_enabled
|
before_filter :module_enabled
|
||||||
before_filter :milestone, only: [:edit, :update, :destroy, :show]
|
before_filter :milestone, only: [:edit, :update, :destroy, :show]
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
# Allow read any milestone
|
# Allow read any milestone
|
||||||
before_filter :authorize_read_milestone!
|
before_filter :authorize_read_milestone!
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
class NotesController < ApplicationController
|
class NotesController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
before_filter :authorize_read_note!
|
before_filter :authorize_read_note!
|
||||||
before_filter :authorize_write_note!, only: [:create]
|
before_filter :authorize_write_note!, only: [:create]
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
class ProfileController < ApplicationController
|
class ProfileController < ApplicationController
|
||||||
layout "profile"
|
|
||||||
before_filter :user
|
before_filter :user
|
||||||
|
|
||||||
def show
|
def show
|
||||||
|
|
5
app/controllers/project_resource_controller.rb
Normal file
5
app/controllers/project_resource_controller.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
class ProjectResourceController < ApplicationController
|
||||||
|
before_filter :project
|
||||||
|
# Authorize
|
||||||
|
before_filter :add_project_abilities
|
||||||
|
end
|
|
@ -1,15 +1,15 @@
|
||||||
require Rails.root.join('lib', 'gitlab', 'graph_commit')
|
require Rails.root.join('lib', 'gitlab', 'graph_commit')
|
||||||
|
|
||||||
class ProjectsController < ApplicationController
|
class ProjectsController < ProjectResourceController
|
||||||
before_filter :project, except: [:index, :new, :create]
|
skip_before_filter :project, only: [:new, :create]
|
||||||
layout :determine_layout
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!, except: [:index, :new, :create]
|
before_filter :authorize_read_project!, except: [:index, :new, :create]
|
||||||
before_filter :authorize_admin_project!, only: [:edit, :update, :destroy]
|
before_filter :authorize_admin_project!, only: [:edit, :update, :destroy]
|
||||||
before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
|
before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
|
||||||
|
|
||||||
|
layout 'application', only: [:new, :create]
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@project = Project.new
|
@project = Project.new
|
||||||
end
|
end
|
||||||
|
@ -93,19 +93,4 @@ class ProjectsController < ApplicationController
|
||||||
format.html { redirect_to root_path }
|
format.html { redirect_to root_path }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def project
|
|
||||||
@project ||= Project.find_by_code(params[:id])
|
|
||||||
@project || render_404
|
|
||||||
end
|
|
||||||
|
|
||||||
def determine_layout
|
|
||||||
if @project && !@project.new_record?
|
|
||||||
"project"
|
|
||||||
else
|
|
||||||
"application"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,15 +1,10 @@
|
||||||
class ProtectedBranchesController < ApplicationController
|
class ProtectedBranchesController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
||||||
before_filter :authorize_admin_project!, only: [:destroy, :create]
|
before_filter :authorize_admin_project!, only: [:destroy, :create]
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@branches = @project.protected_branches.all
|
@branches = @project.protected_branches.all
|
||||||
@protected_branch = @project.protected_branches.new
|
@protected_branch = @project.protected_branches.new
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
class RefsController < ApplicationController
|
class RefsController < ProjectResourceController
|
||||||
include Gitlab::Encode
|
include Gitlab::Encode
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
@ -11,11 +9,9 @@ class RefsController < ApplicationController
|
||||||
before_filter :ref
|
before_filter :ref
|
||||||
before_filter :define_tree_vars, only: [:blob, :logs_tree]
|
before_filter :define_tree_vars, only: [:blob, :logs_tree]
|
||||||
|
|
||||||
layout "project"
|
def switch
|
||||||
|
respond_to do |format|
|
||||||
def switch
|
format.html do
|
||||||
respond_to do |format|
|
|
||||||
format.html do
|
|
||||||
new_path = if params[:destination] == "tree"
|
new_path = if params[:destination] == "tree"
|
||||||
project_tree_path(@project, @ref)
|
project_tree_path(@project, @ref)
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
class RepositoriesController < ApplicationController
|
class RepositoriesController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@activities = @project.commits_with_refs(20)
|
@activities = @project.commits_with_refs(20)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
class SnippetsController < ApplicationController
|
class SnippetsController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
|
before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw]
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
|
|
||||||
# Allow read any snippet
|
# Allow read any snippet
|
||||||
before_filter :authorize_read_snippet!
|
before_filter :authorize_read_snippet!
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
class TeamMembersController < ApplicationController
|
class TeamMembersController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_admin_project!, except: [:index, :show]
|
before_filter :authorize_admin_project!, except: [:index, :show]
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
# Controller for viewing a repository's file structure
|
# Controller for viewing a repository's file structure
|
||||||
class TreeController < ApplicationController
|
class TreeController < ProjectResourceController
|
||||||
include ExtractsPath
|
include ExtractsPath
|
||||||
|
|
||||||
layout "project"
|
|
||||||
|
|
||||||
before_filter :project
|
|
||||||
|
|
||||||
# Authorize
|
# Authorize
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :authorize_code_access!
|
before_filter :authorize_code_access!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
class WikisController < ApplicationController
|
class WikisController < ProjectResourceController
|
||||||
before_filter :project
|
|
||||||
before_filter :add_project_abilities
|
|
||||||
before_filter :authorize_read_wiki!
|
before_filter :authorize_read_wiki!
|
||||||
before_filter :authorize_write_wiki!, only: [:edit, :create, :history]
|
before_filter :authorize_write_wiki!, only: [:edit, :create, :history]
|
||||||
before_filter :authorize_admin_wiki!, only: :destroy
|
before_filter :authorize_admin_wiki!, only: :destroy
|
||||||
layout "project"
|
|
||||||
|
|
||||||
def pages
|
def pages
|
||||||
@wikis = @project.wikis.group(:slug).order("created_at")
|
@wikis = @project.wikis.group(:slug).order("created_at")
|
||||||
|
|
|
@ -53,5 +53,9 @@ module Gitlab
|
||||||
|
|
||||||
# Add fonts
|
# Add fonts
|
||||||
config.assets.paths << "#{Rails.root}/app/assets/fonts"
|
config.assets.paths << "#{Rails.root}/app/assets/fonts"
|
||||||
|
|
||||||
|
config.to_prepare do
|
||||||
|
Devise::SessionsController.layout 'devise_layout'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue