Commit 68f4b597 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #1569 from jouve/simplify_controllers2

Simplify controllers and layout handling
parents 3e9836ae be18397d
...@@ -10,19 +10,17 @@ class ApplicationController < ActionController::Base ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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)
......
# 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
......
# 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
......
# 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
......
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
......
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
......
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
......
class ErrorsController < ApplicationController class ErrorsController < ApplicationController
layout "error"
def githost def githost
render "errors/gitolite" render "errors/gitolite"
end end
......
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]
......
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!
......
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!
......
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!
......
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!
......
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]
......
class ProfileController < ApplicationController class ProfileController < ApplicationController
layout "profile"
before_filter :user before_filter :user
def show def show
......
class ProjectResourceController < ApplicationController
before_filter :project
# Authorize
before_filter :add_project_abilities
end
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 ...@@ -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
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
......
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 ...@@ -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
......
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
......
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!
......
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]
......
# 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
......
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 ...@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment