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 ...@@ -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,8 +135,12 @@ class Project < ActiveRecord::Base ...@@ -135,8 +135,12 @@ class Project < ActiveRecord::Base
end end
def to_param def to_param
if namespace
namespace.code + "/" + code
else
code code
end end
end
def web_url def web_url
[Gitlab.config.url, code].join("/") [Gitlab.config.url, code].join("/")
...@@ -201,4 +205,7 @@ class Project < ActiveRecord::Base ...@@ -201,4 +205,7 @@ class Project < ActiveRecord::Base
path path
end end
end end
def move_repo
end
end end
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 ...@@ -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 ...@@ -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 ...@@ -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"
......
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