Delta between CE and EE in config/routes/group.rb is weird

Currently, the diff between CE and EE for the config/routes/group.rb file is really weird:

  • CE: https://gitlab.com/gitlab-org/gitlab-ce/blob/4733570c3d710f3124718fa1173f3068eb932281/config/routes/group.rb
  • EE: https://gitlab.com/gitlab-org/gitlab-ee/blob/6ccdf35440243ff37900a96870feb0da79db7a47/config/routes/group.rb

The order of blocks is different and in EE, all the routes are wrapped in a constraints(GroupUrlConstrainer.new) do block (which is probably a good idea?).

diff --git a/config/routes/group.rb b/config/routes/group.rb
index 8cc30bfcc5..fa1409b0cc 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -4,50 +4,87 @@ resources :groups, only: [:index, :new, :create] do
   post :preview_markdown
 end
 
-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
+constraints(GroupUrlConstrainer.new) do
+  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
 
-  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
+  scope(path: 'groups/*group_id',
+        module: :groups,
+        as: :group,
+        constraints: { group_id: Gitlab::PathRegex.full_namespace_route_regex }) do
+
+    ## EE-specific
+    resource :analytics, only: [:show]
+    resource :ldap, only: [] do
+      member do
+        put :sync
+      end
     end
-  end
 
-  resources :labels, except: [:show] do
-    post :toggle_subscription, on: :member
-  end
+    resources :ldap_group_links, only: [:index, :create, :destroy]
+    ## EE-specific
+
+    resources :group_members, only: [:index, :create, :update, :destroy], concerns: :access_requestable do
+      post :resend_invite, on: :member
+      delete :leave, on: :collection
 
-  scope path: '-' do
-    namespace :settings do
-      resource :ci_cd, only: [:show], controller: 'ci_cd'
+      ## EE-specific
+      patch :override, on: :member
+      ## EE-specific
     end
 
-    resources :variables, only: [:index, :show, :update, :create, :destroy]
-  end
-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
+      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
+    ## EE-specific
+    resource :notification_setting, only: [:update]
+    resources :audit_events, only: [:index]
+    resources :pipeline_quota, only: [:index]
+    ## EE-specific
+
+    ## EE-specific
+    resources :hooks, only: [:index, :create, :destroy], constraints: { id: /\d+/ } do
+      member do
+        get :test
+      end
+    end
+    ## EE-specific
+
+    resources :labels, except: [:show] do
+      post :toggle_subscription, on: :member
+    end
+
+    scope path: '-' do
+      namespace :settings do
+        resource :ci_cd, only: [:show], controller: 'ci_cd'
+      end
+
+      resources :variables, only: [:index, :show, :update, :create, :destroy]
+      resources :billings, only: [:index]
+
+      ## EE-specific
+      resources :boards, only: [:index, :show, :create, :update, :destroy]
+    end
+
+    ## EE-specific
+    get :boards, to: redirect('/groups/%{group_id}/-/boards')
+  end
 
-constraints(GroupUrlConstrainer.new) do
   scope(path: '*id',
         as: :group,
         constraints: { id: Gitlab::PathRegex.full_namespace_route_regex, format: /(html|json|atom)/ },

We might want to harmonize that.

/cc @vsizov @godfat

Assignee Loading
Time tracking Loading