summaryrefslogtreecommitdiffstats
path: root/app/models/token.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-10-24 10:15:22 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-10-24 10:15:22 +0000
commit4cd22dcc5595f32519fbb43329e33106127c29b6 (patch)
tree8d8c35201924edfc5ab522e0193342390a94d212 /app/models/token.rb
parenta371c8d850a2d1941e34fcf908d549438fdf72df (diff)
downloadredmine-4cd22dcc5595f32519fbb43329e33106127c29b6.tar.gz
redmine-4cd22dcc5595f32519fbb43329e33106127c29b6.zip
Keep track of valid user sessions (#21058).
git-svn-id: http://svn.redmine.org/redmine/trunk@14735 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/token.rb')
-rw-r--r--app/models/token.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/app/models/token.rb b/app/models/token.rb
index 84e7fc353..e458a92a7 100644
--- a/app/models/token.rb
+++ b/app/models/token.rb
@@ -36,7 +36,7 @@ class Token < ActiveRecord::Base
# Delete all expired tokens
def self.destroy_expired
- Token.where("action NOT IN (?) AND created_on < ?", ['feeds', 'api'], Time.now - validity_time).delete_all
+ Token.where("action NOT IN (?) AND created_on < ?", ['feeds', 'api', 'session'], Time.now - validity_time).delete_all
end
# Returns the active user who owns the key for the given action
@@ -79,7 +79,15 @@ class Token < ActiveRecord::Base
# Removes obsolete tokens (same user and action)
def delete_previous_tokens
if user
- Token.where(:user_id => user.id, :action => action).delete_all
+ scope = Token.where(:user_id => user.id, :action => action)
+ if action == 'session'
+ ids = scope.order(:updated_on => :desc).offset(9).ids
+ if ids.any?
+ Token.delete(ids)
+ end
+ else
+ scope.delete_all
+ end
end
end
end