diff --git a/app/assets/javascripts/application.js.erb b/app/assets/javascripts/application.js.erb
index 46caccf92..5f44e5f57 100644
--- a/app/assets/javascripts/application.js.erb
+++ b/app/assets/javascripts/application.js.erb
@@ -34,6 +34,7 @@
 //= require ./discourse/views/modal/modal_body_view
 //= require ./discourse/models/model
 //= require ./discourse/routes/discourse_route
+//= require ./discourse/routes/discourse_restricted_user_route
 
 //= require_tree ./discourse/controllers
 //= require_tree ./discourse/components
diff --git a/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js.coffee b/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js.coffee
new file mode 100644
index 000000000..af51c2642
--- /dev/null
+++ b/app/assets/javascripts/discourse/routes/discourse_restricted_user_route.js.coffee
@@ -0,0 +1,10 @@
+window.Discourse.RestrictedUserRoute = Discourse.Route.extend
+
+  enter: (router, context) ->
+    user = @controllerFor('user').get('content')
+    
+    @allowed = user.can_edit
+    
+  redirect: ->
+    @transitionTo('user.activity') unless @allowed
+    
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/routes/preferences_email_route.js.coffee b/app/assets/javascripts/discourse/routes/preferences_email_route.js.coffee
index 8befc7361..3b4b3de79 100644
--- a/app/assets/javascripts/discourse/routes/preferences_email_route.js.coffee
+++ b/app/assets/javascripts/discourse/routes/preferences_email_route.js.coffee
@@ -1,4 +1,4 @@
-window.Discourse.PreferencesEmailRoute = Discourse.Route.extend
+window.Discourse.PreferencesEmailRoute = Discourse.RestrictedUserRoute.extend
   renderTemplate: ->
     @render into: 'user', outlet: 'userOutlet'
   setupController: (controller) ->
diff --git a/app/assets/javascripts/discourse/routes/preferences_route.js.coffee b/app/assets/javascripts/discourse/routes/preferences_route.js.coffee
index bbf14ab3b..87f254bc6 100644
--- a/app/assets/javascripts/discourse/routes/preferences_route.js.coffee
+++ b/app/assets/javascripts/discourse/routes/preferences_route.js.coffee
@@ -1,4 +1,4 @@
-window.Discourse.PreferencesRoute = Discourse.Route.extend
+window.Discourse.PreferencesRoute = Discourse.RestrictedUserRoute.extend
   renderTemplate: ->
     @render 'preferences', into: 'user', outlet: 'userOutlet', controller: 'preferences'
 
diff --git a/app/assets/javascripts/discourse/routes/preferences_username_route.js.coffee b/app/assets/javascripts/discourse/routes/preferences_username_route.js.coffee
index f440d738c..01109e6c5 100644
--- a/app/assets/javascripts/discourse/routes/preferences_username_route.js.coffee
+++ b/app/assets/javascripts/discourse/routes/preferences_username_route.js.coffee
@@ -1,4 +1,4 @@
-window.Discourse.PreferencesUsernameRoute = Discourse.Route.extend
+window.Discourse.PreferencesUsernameRoute = Discourse.RestrictedUserRoute.extend
   renderTemplate: ->
     @render into: 'user', outlet: 'userOutlet'
   setupController: (controller) ->
diff --git a/app/assets/javascripts/discourse/routes/user_private_messages_route.js.coffee b/app/assets/javascripts/discourse/routes/user_private_messages_route.js.coffee
index 2ff6bafd5..cecbf7278 100644
--- a/app/assets/javascripts/discourse/routes/user_private_messages_route.js.coffee
+++ b/app/assets/javascripts/discourse/routes/user_private_messages_route.js.coffee
@@ -1,4 +1,4 @@
-window.Discourse.UserPrivateMessagesRoute = Discourse.Route.extend
+window.Discourse.UserPrivateMessagesRoute = Discourse.RestrictedUserRoute.extend
   renderTemplate: ->
     @render into: 'user', outlet: 'userOutlet'
   setupController: (controller, user) ->