Commit 26622f4c authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Improve routing. Project access via namespace

parent a4d1bc17
......@@ -63,7 +63,10 @@ class ApplicationController < ActionController::Base
end
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
end
......
......@@ -135,7 +135,11 @@ class Project < ActiveRecord::Base
end
def to_param
code
if namespace
namespace.code + "/" + code
else
code
end
end
def web_url
......@@ -201,4 +205,7 @@ class Project < ActiveRecord::Base
path
end
end
def move_repo
end
end
class ProjectObserver < ActiveRecord::Observer
def after_save(project)
project.update_repository
def before_save(project)
# Move repository if namespace changed
if project.namespace_id_changed?
move_project(project)
end
end
def after_save(project)
project.update_repository
end
def after_destroy(project)
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")
new_path = File.join(new_dir_path, "#{project.path}.git")
binding.pry
`mv #{old_path} #{new_path}`
log_info "Project #{project.name} was moved from #{old_path} to #{new_path}"
end
end
......@@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do
project_root: Gitlab.config.git_base_path,
upload_pack: Gitlab.config.git_upload_pack,
receive_pack: Gitlab.config.git_receive_pack
}), at: '/:path', constraints: { path: /[\w\.-]+\.git/ }
}), at: '/:path', constraints: { path: /[-\/\w\.-]+\.git/ }
#
# Help
......@@ -107,7 +107,7 @@ Gitlab::Application.routes.draw do
#
# 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
get "wall"
get "graph"
......
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