Improve routing. Project access via namespace
This commit is contained in:
parent
a4d1bc1791
commit
26622f4c8f
4 changed files with 21 additions and 8 deletions
|
@ -63,7 +63,10 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def project
|
def project
|
||||||
@project ||= current_user.projects.find_by_code(params[:project_id] || params[:id])
|
id = params[:project_id] || params[:id]
|
||||||
|
id = id.split("/") if id.include?("/")
|
||||||
|
|
||||||
|
@project ||= current_user.projects.find_by_code(id)
|
||||||
@project || render_404
|
@project || render_404
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -135,7 +135,11 @@ class Project < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_param
|
def to_param
|
||||||
code
|
if namespace
|
||||||
|
namespace.code + "/" + code
|
||||||
|
else
|
||||||
|
code
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def web_url
|
def web_url
|
||||||
|
@ -201,4 +205,7 @@ class Project < ActiveRecord::Base
|
||||||
path
|
path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def move_repo
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
class ProjectObserver < ActiveRecord::Observer
|
class ProjectObserver < ActiveRecord::Observer
|
||||||
def after_save(project)
|
def before_save(project)
|
||||||
project.update_repository
|
|
||||||
|
|
||||||
# Move repository if namespace changed
|
# Move repository if namespace changed
|
||||||
if project.namespace_id_changed?
|
if project.namespace_id_changed?
|
||||||
move_project(project)
|
move_project(project)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def after_save(project)
|
||||||
|
project.update_repository
|
||||||
|
end
|
||||||
|
|
||||||
def after_destroy(project)
|
def after_destroy(project)
|
||||||
log_info("Project \"#{project.name}\" was removed")
|
log_info("Project \"#{project.name}\" was removed")
|
||||||
|
|
||||||
|
@ -35,7 +37,8 @@ class ProjectObserver < ActiveRecord::Observer
|
||||||
old_path = File.join(Gitlab.config.git_base_path, old_dir, "#{project.path}.git")
|
old_path = File.join(Gitlab.config.git_base_path, old_dir, "#{project.path}.git")
|
||||||
new_path = File.join(new_dir_path, "#{project.path}.git")
|
new_path = File.join(new_dir_path, "#{project.path}.git")
|
||||||
|
|
||||||
binding.pry
|
|
||||||
`mv #{old_path} #{new_path}`
|
`mv #{old_path} #{new_path}`
|
||||||
|
|
||||||
|
log_info "Project #{project.name} was moved from #{old_path} to #{new_path}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do
|
||||||
project_root: Gitlab.config.git_base_path,
|
project_root: Gitlab.config.git_base_path,
|
||||||
upload_pack: Gitlab.config.git_upload_pack,
|
upload_pack: Gitlab.config.git_upload_pack,
|
||||||
receive_pack: Gitlab.config.git_receive_pack
|
receive_pack: Gitlab.config.git_receive_pack
|
||||||
}), at: '/:path', constraints: { path: /[\w\.-]+\.git/ }
|
}), at: '/:path', constraints: { path: /[-\/\w\.-]+\.git/ }
|
||||||
|
|
||||||
#
|
#
|
||||||
# Help
|
# Help
|
||||||
|
@ -107,7 +107,7 @@ Gitlab::Application.routes.draw do
|
||||||
#
|
#
|
||||||
# Project Area
|
# Project Area
|
||||||
#
|
#
|
||||||
resources :projects, constraints: { id: /[^\/]+/ }, except: [:new, :create, :index], path: "/" do
|
resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do
|
||||||
member do
|
member do
|
||||||
get "wall"
|
get "wall"
|
||||||
get "graph"
|
get "graph"
|
||||||
|
|
Loading…
Add table
Reference in a new issue