summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2015-07-06 13:47:05 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2015-08-03 15:43:27 +0200
commited99139954489a5c8ebd41e20d9c34d777a7e165 (patch)
treeef3a020bfa690d5598de98084db8a4249f09ff60
parent4f469a133d4a5990d8ee0cf81d770bb8db47b9b1 (diff)
downloadgitlab-ci-ed99139954489a5c8ebd41e20d9c34d777a7e165.tar.gz
Add session_expire_delay to Application Settings
-rw-r--r--app/controllers/admin/application_settings_controller.rb1
-rw-r--r--app/models/application_setting.rb16
-rw-r--r--app/views/admin/application_settings/_form.html.haml8
-rw-r--r--config/initializers/session_store.rb4
-rw-r--r--db/migrate/20150730103907_add_session_expire_delay_to_application_settings.rb5
-rw-r--r--db/schema.rb3
-rw-r--r--lib/current_settings.rb1
7 files changed, 32 insertions, 6 deletions
diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb
index 8f673b9..5f9ff7c 100644
--- a/app/controllers/admin/application_settings_controller.rb
+++ b/app/controllers/admin/application_settings_controller.rb
@@ -24,6 +24,7 @@ class Admin::ApplicationSettingsController < Admin::ApplicationController
params.require(:application_setting).permit(
:all_broken_builds,
:add_pusher,
+ :session_expire_delay,
)
end
end
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index f68f10a..12c6883 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -2,15 +2,20 @@
#
# Table name: application_settings
#
-# id :integer not null, primary key
-# all_broken_builds :boolean
-# add_pusher :boolean
-# created_at :datetime
-# updated_at :datetime
+# id :integer not null, primary key
+# all_broken_builds :boolean
+# add_pusher :boolean
+# created_at :datetime
+# updated_at :datetime
+# session_expire_delay :integer default(10080), not null
#
class ApplicationSetting < ActiveRecord::Base
+ validates :session_expire_delay,
+ presence: true,
+ numericality: { only_integer: true, greater_than_or_equal_to: 0 }
+
def self.current
ApplicationSetting.last
end
@@ -19,6 +24,7 @@ class ApplicationSetting < ActiveRecord::Base
create(
all_broken_builds: Settings.gitlab_ci['all_broken_builds'],
add_pusher: Settings.gitlab_ci['add_pusher'],
+ session_expire_delay: Settings.gitlab_ci['session_expire_delay'],
)
end
diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml
index a767257..b396948 100644
--- a/app/views/admin/application_settings/_form.html.haml
+++ b/app/views/admin/application_settings/_form.html.haml
@@ -20,5 +20,13 @@
= f.check_box :add_pusher
Add pusher to recipients list
+ %fieldset
+ %legend Account Settings
+ .form-group
+ = f.label :session_expire_delay, 'Session duration (minutes)', class: 'control-label col-sm-2'
+ .col-sm-10
+ = f.number_field :session_expire_delay, class: 'form-control'
+ %span.help-block#session_expire_delay_help_block GitLab CI restart is required to apply changes
+
.form-actions
= f.submit 'Save', class: 'btn btn-primary'
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index 7ab8a9c..511c364 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -1,5 +1,9 @@
# Be sure to restart your server when you modify this file.
+require 'current_settings'
+include CurrentSettings
+Settings.gitlab_ci['session_expire_delay'] = current_application_settings.session_expire_delay
+
# Use Redis caching across all environments
redis_config_file = Rails.root.join('config', 'resque.yml')
diff --git a/db/migrate/20150730103907_add_session_expire_delay_to_application_settings.rb b/db/migrate/20150730103907_add_session_expire_delay_to_application_settings.rb
new file mode 100644
index 0000000..7d7f8ec
--- /dev/null
+++ b/db/migrate/20150730103907_add_session_expire_delay_to_application_settings.rb
@@ -0,0 +1,5 @@
+class AddSessionExpireDelayToApplicationSettings < ActiveRecord::Migration
+ def change
+ add_column :application_settings, :session_expire_delay, :integer, default: 10080, null: false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e23f099..f423a51 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: 20150729145246) do
+ActiveRecord::Schema.define(version: 20150730103907) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -21,6 +21,7 @@ ActiveRecord::Schema.define(version: 20150729145246) do
t.boolean "add_pusher"
t.datetime "created_at"
t.datetime "updated_at"
+ t.integer "session_expire_delay", default: 10080, null: false
end
create_table "builds", force: true do |t|
diff --git a/lib/current_settings.rb b/lib/current_settings.rb
index 59dedfd..82c5692 100644
--- a/lib/current_settings.rb
+++ b/lib/current_settings.rb
@@ -15,6 +15,7 @@ module CurrentSettings
OpenStruct.new(
all_broken_builds: Settings.gitlab_ci['all_broken_builds'],
add_pusher: Settings.gitlab_ci['add_pusher'],
+ session_expire_delay: Settings.gitlab_ci['session_expire_delay'],
)
end
end