From 122f9188c9c2eb9c928930d63404f3e18ddac6ae Mon Sep 17 00:00:00 2001 From: Chris Hunt Date: Tue, 4 Jun 2013 15:39:35 -0700 Subject: [PATCH] Redirect Ember routes to login if login required --- app/assets/javascripts/discourse.js | 4 ++++ .../discourse/controllers/static_controller.js | 2 +- .../discourse/routes/filtered_list_route.js | 2 ++ .../discourse/routes/list_categories_route.js | 2 ++ .../javascripts/discourse/routes/topic_route.js | 2 ++ app/views/static/login.en.html.erb | 13 +++++++++++++ config/routes.rb | 1 + 7 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 app/views/static/login.en.html.erb diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js index 2c7bedf5107..05b80775d26 100644 --- a/app/assets/javascripts/discourse.js +++ b/app/assets/javascripts/discourse.js @@ -168,6 +168,10 @@ Discourse = Ember.Application.createWithMixins({ ); }.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 deb5b37dc1b..a432d7a1d7c 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 2344b62b430..a612724afdc 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 0ef914f9a9b..4647fa79042 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 61f92900781..4c3b495d141 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/views/static/login.en.html.erb b/app/views/static/login.en.html.erb new file mode 100644 index 00000000000..d2ea59d5433 --- /dev/null +++ b/app/views/static/login.en.html.erb @@ -0,0 +1,13 @@ + + +

Welcome to <%= SiteSetting.title %>

+ +

+ We are excited to have you participate in <%= SiteSetting.title %>. Please + create an account or login to continue. +

diff --git a/config/routes.rb b/config/routes.rb index f974c5c9eb7..245c8e0a15b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -103,6 +103,7 @@ Discourse::Application.routes.draw do resources :static post 'login' => 'static#enter' + get 'login' => 'static#show', id: 'login' get 'faq' => 'static#show', id: 'faq' get 'tos' => 'static#show', id: 'tos' get 'privacy' => 'static#show', id: 'privacy'