diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb index 5116f1f177a..a937f484877 100644 --- a/app/controllers/admin/application_settings_controller.rb +++ b/app/controllers/admin/application_settings_controller.rb @@ -26,6 +26,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController :signin_enabled, :gravatar_enabled, :sign_in_text, + :home_page_url ) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b83de68c5d2..4780a7a2a9a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -48,6 +48,17 @@ class ApplicationController < ActionController::Base end end + def authenticate_user! + # If user is not signe-in and tries to access root_path - redirect him to landing page + if current_application_settings.home_page_url.present? + if current_user.nil? && controller_name == 'dashboard' && action_name == 'show' + redirect_to current_application_settings.home_page_url and return + end + end + + super + end + def log_exception(exception) application_trace = ActionDispatch::ExceptionWrapper.new(env, exception).application_trace application_trace.map!{ |t| " #{t}\n" } diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 67c02f5dfa4..f65e04af205 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -292,9 +292,4 @@ module ApplicationHelper profile_key_path(key) end end - - def redirect_from_root? - request.env['rack.session']['user_return_to'] == - '/' - end end diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 47fa6f1071c..d9c73559098 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -1,4 +1,7 @@ class ApplicationSetting < ActiveRecord::Base + validates :home_page_url, allow_blank: true, + format: { with: URI::regexp(%w(http https)), message: "should be a valid url" } + def self.current ApplicationSetting.last end diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml index 5ca9585e9a9..481e7882300 100644 --- a/app/views/admin/application_settings/_form.html.haml +++ b/app/views/admin/application_settings/_form.html.haml @@ -25,6 +25,10 @@ = f.label :default_projects_limit, class: 'control-label' .col-sm-10 = f.number_field :default_projects_limit, class: 'form-control' + .form-group + = f.label :home_page_url, class: 'control-label' + .col-sm-10 + = f.text_field :home_page_url, class: 'form-control', placeholder: 'http://company.example.com' .form-group = f.label :sign_in_text, class: 'control-label' .col-sm-10 diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml index 857ebd9b8d9..6f805f1c9d1 100644 --- a/app/views/layouts/devise.html.haml +++ b/app/views/layouts/devise.html.haml @@ -6,8 +6,7 @@ = render "layouts/public_head_panel", title: '' .container.navless-container .content - - unless redirect_from_root? - = render "layouts/flash" + = render "layouts/flash" .row.prepend-top-20 .col-sm-5.pull-right = yield diff --git a/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb b/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb new file mode 100644 index 00000000000..aa179ce3a4d --- /dev/null +++ b/db/migrate/20150116234544_add_home_page_url_for_application_settings.rb @@ -0,0 +1,5 @@ +class AddHomePageUrlForApplicationSettings < ActiveRecord::Migration + def change + add_column :application_settings, :home_page_url, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index dedfce4797b..96f66ac3634 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150108073740) do +ActiveRecord::Schema.define(version: 20150116234544) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -24,6 +24,7 @@ ActiveRecord::Schema.define(version: 20150108073740) do t.text "sign_in_text" t.datetime "created_at" t.datetime "updated_at" + t.string "home_page_url" end create_table "broadcast_messages", force: true do |t| @@ -423,6 +424,7 @@ ActiveRecord::Schema.define(version: 20150108073740) do t.integer "notification_level", default: 1, null: false t.datetime "password_expires_at" t.integer "created_by_id" + t.datetime "last_credential_check_at" t.string "avatar" t.string "confirmation_token" t.datetime "confirmed_at" @@ -430,7 +432,6 @@ ActiveRecord::Schema.define(version: 20150108073740) do t.string "unconfirmed_email" t.boolean "hide_no_ssh_key", default: false t.string "website_url", default: "", null: false - t.datetime "last_credential_check_at" t.string "github_access_token" end