diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js index c619a7dcb1..8b4f2dd755 100644 --- a/app/assets/javascripts/discourse.js +++ b/app/assets/javascripts/discourse.js @@ -166,6 +166,16 @@ Discourse = Ember.Application.createWithMixins({ return loginController.authenticationComplete(options); }, + loginRequired: function() { + return ( + Discourse.SiteSettings.login_required && !Discourse.User.current() + ); + }.property(), + + redirectIfLoginRequired: function(route) { + if(this.get('loginRequired')) { route.transitionTo('login'); } + }, + /** Our own $.ajax method. Makes sure the .then method executes in an Ember runloop for performance reasons. Also automatically adjusts the URL to support installs diff --git a/app/assets/javascripts/discourse/controllers/static_controller.js b/app/assets/javascripts/discourse/controllers/static_controller.js index deb5b37dc1..a432d7a1d7 100644 --- a/app/assets/javascripts/discourse/controllers/static_controller.js +++ b/app/assets/javascripts/discourse/controllers/static_controller.js @@ -28,7 +28,7 @@ Discourse.StaticController = Discourse.Controller.extend({ }); Discourse.StaticController.reopenClass({ - pages: ['faq', 'tos', 'privacy'] + pages: ['faq', 'tos', 'privacy', 'login'] }); diff --git a/app/assets/javascripts/discourse/routes/filtered_list_route.js b/app/assets/javascripts/discourse/routes/filtered_list_route.js index 2344b62b43..a612724afd 100644 --- a/app/assets/javascripts/discourse/routes/filtered_list_route.js +++ b/app/assets/javascripts/discourse/routes/filtered_list_route.js @@ -8,6 +8,8 @@ **/ Discourse.FilteredListRoute = Discourse.Route.extend({ + redirect: function() { Discourse.redirectIfLoginRequired(this); }, + exit: function() { this._super(); diff --git a/app/assets/javascripts/discourse/routes/list_categories_route.js b/app/assets/javascripts/discourse/routes/list_categories_route.js index 0ef914f9a9..4647fa7904 100644 --- a/app/assets/javascripts/discourse/routes/list_categories_route.js +++ b/app/assets/javascripts/discourse/routes/list_categories_route.js @@ -8,6 +8,8 @@ **/ Discourse.ListCategoriesRoute = Discourse.Route.extend({ + redirect: function() { Discourse.redirectIfLoginRequired(this); }, + events: { createCategory: function() { diff --git a/app/assets/javascripts/discourse/routes/topic_route.js b/app/assets/javascripts/discourse/routes/topic_route.js index 61f9290078..4c3b495d14 100644 --- a/app/assets/javascripts/discourse/routes/topic_route.js +++ b/app/assets/javascripts/discourse/routes/topic_route.js @@ -8,6 +8,8 @@ **/ Discourse.TopicRoute = Discourse.Route.extend({ + redirect: function() { Discourse.redirectIfLoginRequired(this); }, + events: { // Modals that can pop up within a topic diff --git a/app/assets/javascripts/discourse/templates/header.js.handlebars b/app/assets/javascripts/discourse/templates/header.js.handlebars index cfea2889e1..df4d1d5f2f 100644 --- a/app/assets/javascripts/discourse/templates/header.js.handlebars +++ b/app/assets/javascripts/discourse/templates/header.js.handlebars @@ -29,10 +29,34 @@ {{/if}}
  • - + {{#if Discourse.loginRequired}} + + + + {{else}} + + + + {{/if}}