From ac76468b1a86cfe872a89ee66fa5ba8b12099744 Mon Sep 17 00:00:00 2001
From: anonymous <anonymous>
Date: Wed, 14 Nov 2018 11:04:31 +0100
Subject: [PATCH] redirect all user routes to custom controller

---
 ckanext/odsh/controller.py | 25 ++++++++++++++++++++++++
 ckanext/odsh/plugin.py     | 39 +++++++++++++++++++++++++++++++++++---
 2 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/ckanext/odsh/controller.py b/ckanext/odsh/controller.py
index dfb98dc8..b1052945 100644
--- a/ckanext/odsh/controller.py
+++ b/ckanext/odsh/controller.py
@@ -23,3 +23,28 @@ class OdshUserController(UserController):
         if not authz.is_sysadmin(c.user):
             abort(404)
         return super(OdshUserController,self).dashboard(id,offset)
+
+    def dashboard_datasets(self):
+        if not authz.is_sysadmin(c.user):
+            abort(404)
+        return super(OdshUserController,self).dashboard_datasets(id)
+
+    def read(self, id=None):
+        if not authz.is_sysadmin(c.user):
+            abort(404)
+        return super(OdshUserController,self).read(id)
+
+    def follow(self, id):
+        if not authz.is_sysadmin(c.user):
+            abort(404)
+        return super(OdshUserController,self).follow(id)
+
+    def unfollow(self, id):
+        if not authz.is_sysadmin(c.user):
+            abort(404)
+        return super(OdshUserController,self).unfollow(id)
+
+    def activity(self, id, offset=0):
+        if not authz.is_sysadmin(c.user):
+            abort(404)
+        return super(OdshUserController,self).activity(id, offset)
\ No newline at end of file
diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index c2dbfaa2..eb1454f9 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -92,11 +92,44 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
 
     def before_map(self, map):
         map.connect('info_page', '/info_page', controller='ckanext.odsh.controller:OdshRouteController', action='info_page')
+
+        # redirect all user routes to custom controller
         with SubMapper(map, controller='ckanext.odsh.controller:OdshUserController') as m:
+            m.connect('/user/edit', action='edit')
+            m.connect('user_generate_apikey', '/user/generate_key/{id}', action='generate_apikey')
+            m.connect('/user/activity/{id}/{offset}', action='activity')
+            m.connect('user_activity_stream', '/user/activity/{id}',
+                    action='activity', ckan_icon='clock-o')
+            m.connect('user_dashboard', '/dashboard', action='dashboard',
+                    ckan_icon='list')
+            m.connect('user_dashboard_datasets', '/dashboard/datasets',
+                    action='dashboard_datasets', ckan_icon='sitemap')
+            m.connect('user_dashboard_groups', '/dashboard/groups',
+                    action='dashboard_groups', ckan_icon='users')
+            m.connect('user_dashboard_organizations', '/dashboard/organizations',
+                    action='dashboard_organizations', ckan_icon='building-o')
+            m.connect('/dashboard/{offset}', action='dashboard')
+            m.connect('user_follow', '/user/follow/{id}', action='follow')
+            m.connect('/user/unfollow/{id}', action='unfollow')
+            m.connect('user_followers', '/user/followers/{id:.*}',
+                    action='followers', ckan_icon='users')
+            m.connect('user_edit', '/user/edit/{id:.*}', action='edit',
+                    ckan_icon='cog')
+            m.connect('user_delete', '/user/delete/{id}', action='delete')
+            m.connect('/user/reset/{id:.*}', action='perform_reset')
+            m.connect('register', '/user/register', action='register')
+            m.connect('login', '/user/login', action='login')
+            m.connect('/user/_logout', action='logout')
+            m.connect('/user/logged_in', action='logged_in')
+            m.connect('/user/logged_out', action='logged_out')
+            m.connect('/user/logged_out_redirect', action='logged_out_page')
+            m.connect('/user/reset', action='request_reset')
             m.connect('/user/me', action='me')
-            m.connect('/user/logged_in', action='me')
-            m.connect('user_dashboard', '/dashboard', action='dashboard', ckan_icon='list')
-            m.connect('user_dashboard/{url:.*}', '/dashboard/{url:.*}', action='dashboard', ckan_icon='list')
+            m.connect('/user/set_lang/{lang}', action='set_lang')
+            m.connect('user_datasets', '/user/{id:.*}', action='read',
+                    ckan_icon='sitemap')
+            m.connect('user_index', '/user', action='index')
+        
         return map
 
     def dataset_facets(self, facets_dict, package_type):
-- 
GitLab