diff options
Diffstat (limited to 'config/routes/group.rb')
-rw-r--r-- | config/routes/group.rb | 81 |
1 files changed, 47 insertions, 34 deletions
diff --git a/config/routes/group.rb b/config/routes/group.rb index 23052a6c6dc..db99e10bb9a 100644 --- a/config/routes/group.rb +++ b/config/routes/group.rb @@ -1,51 +1,56 @@ require 'constraints/group_url_constrainer' -resources :groups, only: [:index, :new, :create] - -scope(path: 'groups/*group_id', - module: :groups, - as: :group, - constraints: { group_id: Gitlab::PathRegex.full_namespace_route_regex }) do - resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do - post :resend_invite, on: :member - delete :leave, on: :collection - end +resources :groups, only: [:index, :new, :create] do + post :preview_markdown +end - resource :avatar, only: [:destroy] - resources :milestones, constraints: { id: /[^\/]+/ }, only: [:index, :show, :edit, :update, :new, :create] do - member do - get :merge_requests - get :participants - get :labels +constraints(GroupUrlConstrainer.new) do + scope(path: 'groups/*id', + controller: :groups, + constraints: { id: Gitlab::PathRegex.full_namespace_route_regex, format: /(html|json|atom)/ }) do + scope(path: '-') do + get :edit, as: :edit_group + get :issues, as: :issues_group + get :merge_requests, as: :merge_requests_group + get :projects, as: :projects_group + get :activity, as: :activity_group end - end - resources :labels, except: [:show] do - post :toggle_subscription, on: :member + get '/', action: :show, as: :group_canonical end - scope path: '-' do + scope(path: 'groups/*group_id/-', + module: :groups, + as: :group, + constraints: { group_id: Gitlab::PathRegex.full_namespace_route_regex }) do namespace :settings do resource :ci_cd, only: [:show], controller: 'ci_cd' end resources :variables, only: [:index, :show, :update, :create, :destroy] - end -end -scope(path: 'groups/*id', - controller: :groups, - constraints: { id: Gitlab::PathRegex.full_namespace_route_regex, format: /(html|json|atom)/ }) do - get :edit, as: :edit_group - get :issues, as: :issues_group - get :merge_requests, as: :merge_requests_group - get :projects, as: :projects_group - get :activity, as: :activity_group - get :subgroups, as: :subgroups_group - get '/', action: :show, as: :group_canonical -end + resources :children, only: [:index] + + resources :labels, except: [:show] do + post :toggle_subscription, on: :member + end + + resources :milestones, constraints: { id: /[^\/]+/ }, only: [:index, :show, :edit, :update, :new, :create] do + member do + get :merge_requests + get :participants + get :labels + end + end + + resource :avatar, only: [:destroy] + + resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do + post :resend_invite, on: :member + delete :leave, on: :collection + end + end -constraints(GroupUrlConstrainer.new) do scope(path: '*id', as: :group, constraints: { id: Gitlab::PathRegex.full_namespace_route_regex, format: /(html|json|atom)/ }, @@ -55,4 +60,12 @@ constraints(GroupUrlConstrainer.new) do put '/', action: :update delete '/', action: :destroy end + + # Legacy paths should be defined last, so they would be ignored if routes with + # one of the previously reserved words exist. + scope(path: 'groups/*group_id') do + Gitlab::Routing.redirect_legacy_paths(self, :labels, :milestones, :group_members, + :edit, :issues, :merge_requests, :projects, + :activity) + end end |