better error handling for not found resource, gitolite error
This commit is contained in:
parent
9e6d0710e9
commit
7d279f9302
|
@ -5,7 +5,11 @@ class ApplicationController < ActionController::Base
|
||||||
helper_method :abilities, :can?
|
helper_method :abilities, :can?
|
||||||
|
|
||||||
rescue_from Gitlabhq::Gitolite::AccessDenied do |exception|
|
rescue_from Gitlabhq::Gitolite::AccessDenied do |exception|
|
||||||
render :file => File.join(Rails.root, "public", "githost_error"), :layout => false
|
render "errors/gitolite", :layout => "error"
|
||||||
|
end
|
||||||
|
|
||||||
|
rescue_from ActiveRecord::RecordNotFound do |exception|
|
||||||
|
render "errors/not_found", :layout => "error"
|
||||||
end
|
end
|
||||||
|
|
||||||
layout :layout_by_resource
|
layout :layout_by_resource
|
||||||
|
@ -33,7 +37,8 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def project
|
def project
|
||||||
@project ||= Project.find_by_code(params[:project_id])
|
@project ||= current_user.projects.find_by_code(params[:project_id])
|
||||||
|
@project || render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_project_abilities
|
def add_project_abilities
|
||||||
|
@ -45,15 +50,23 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorize_project!(action)
|
def authorize_project!(action)
|
||||||
return render_404 unless can?(current_user, action, project)
|
return access_denied! unless can?(current_user, action, project)
|
||||||
end
|
end
|
||||||
|
|
||||||
def authorize_code_access!
|
def authorize_code_access!
|
||||||
return render_404 unless can?(current_user, :download_code, project)
|
return access_denied! unless can?(current_user, :download_code, project)
|
||||||
end
|
end
|
||||||
|
|
||||||
def access_denied!
|
def access_denied!
|
||||||
render_404
|
render "errors/access_denied", :layout => "error"
|
||||||
|
end
|
||||||
|
|
||||||
|
def not_found!
|
||||||
|
render "errors/not_found", :layout => "error"
|
||||||
|
end
|
||||||
|
|
||||||
|
def git_not_found!
|
||||||
|
render "errors/git_not_found", :layout => "error"
|
||||||
end
|
end
|
||||||
|
|
||||||
def method_missing(method_sym, *arguments, &block)
|
def method_missing(method_sym, *arguments, &block)
|
||||||
|
|
|
@ -26,6 +26,9 @@ class CommitsController < ApplicationController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@commit = project.commit(params[:id])
|
@commit = project.commit(params[:id])
|
||||||
|
|
||||||
|
git_not_found! and return unless @commit
|
||||||
|
|
||||||
@notes = project.commit_notes(@commit).fresh.limit(20)
|
@notes = project.commit_notes(@commit).fresh.limit(20)
|
||||||
@note = @project.build_commit_note(@commit)
|
@note = @project.build_commit_note(@commit)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
class ErrorsController < ApplicationController
|
class ErrorsController < ApplicationController
|
||||||
|
layout "error"
|
||||||
|
|
||||||
def githost
|
def githost
|
||||||
render :file => File.join(Rails.root, "public", "githost_error"), :layout => false
|
render "errors/gitolite"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -36,7 +36,7 @@ class MergeRequestsController < ApplicationController
|
||||||
def show
|
def show
|
||||||
unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch) &&
|
unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch) &&
|
||||||
@project.repo.heads.map(&:name).include?(@merge_request.source_branch)
|
@project.repo.heads.map(&:name).include?(@merge_request.source_branch)
|
||||||
head(404)and return
|
git_not_found! and return
|
||||||
end
|
end
|
||||||
|
|
||||||
@notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20)
|
@notes = @merge_request.notes.inc_author.order("created_at DESC").limit(20)
|
||||||
|
|
5
app/views/errors/access_denied.html.haml
Normal file
5
app/views/errors/access_denied.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%h3 Access Denied
|
||||||
|
%hr
|
||||||
|
%p Youre not allowed to access this page
|
||||||
|
%p Ream more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"}
|
9
app/views/errors/git_not_found.html.haml
Normal file
9
app/views/errors/git_not_found.html.haml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%h3 Git Resource Not found
|
||||||
|
%hr
|
||||||
|
%p
|
||||||
|
Application cant get access to some
|
||||||
|
%span.label branch
|
||||||
|
or
|
||||||
|
%span.label commit
|
||||||
|
in your repository. Maybe it was moved
|
18
app/views/errors/gitolite.html.haml
Normal file
18
app/views/errors/gitolite.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%h3 Gitolite Error
|
||||||
|
%hr
|
||||||
|
%h4 Application cant get access to your gitolite system.
|
||||||
|
%ol
|
||||||
|
%li
|
||||||
|
%p
|
||||||
|
Check 'config/gitlab.yml' for correct settings.
|
||||||
|
%li
|
||||||
|
%p
|
||||||
|
Make sure web server user has access to gitolite.
|
||||||
|
%a{:href => "https://github.com/gitlabhq/gitlabhq/wiki/Gitolite"} Setup tutorial
|
||||||
|
%li
|
||||||
|
%p
|
||||||
|
Try:
|
||||||
|
%pre
|
||||||
|
sudo chmod -R 770 /home/git/repositories/
|
||||||
|
sudo chown -R git:git /home/git/repositories/
|
5
app/views/errors/not_found.html.haml
Normal file
5
app/views/errors/not_found.html.haml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%h3 Not found
|
||||||
|
%hr
|
||||||
|
%p Resource you were looking for doesn't exist.
|
||||||
|
%P You may have mistyped the address or it was removed.
|
11
app/views/layouts/error.html.haml
Normal file
11
app/views/layouts/error.html.haml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
!!! 5
|
||||||
|
%html{ :lang => "en"}
|
||||||
|
= render "layouts/head"
|
||||||
|
%body.application
|
||||||
|
= render "layouts/flash"
|
||||||
|
= render "layouts/head_panel", :title => ""
|
||||||
|
.container
|
||||||
|
%nav.main_menu
|
||||||
|
= render "layouts/const_menu_links"
|
||||||
|
.content
|
||||||
|
%h3= yield
|
Loading…
Reference in a new issue