Class: Token
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Token
- Defined in:
- app/models/token.rb
Overview
Redmine - project management software Copyright (C) 2006-2016 Jean-Philippe Lang
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Class Method Summary collapse
-
.destroy_expired ⇒ Object
Delete all expired tokens.
-
.find_active_user(action, key, validity_days = nil) ⇒ Object
Returns the active user who owns the key for the given action.
-
.find_token(action, key, validity_days = nil) ⇒ Object
Returns the token for action and key with an optional validity duration (in number of days).
-
.find_user(action, key, validity_days = nil) ⇒ Object
Returns the user who owns the key for the given action.
- .generate_token_value ⇒ Object
Instance Method Summary collapse
-
#expired? ⇒ Boolean
Return true if token has expired.
- #generate_new_token ⇒ Object
Class Method Details
.destroy_expired ⇒ Object
Delete all expired tokens
38 39 40 |
# File 'app/models/token.rb', line 38 def self.destroy_expired Token.where("action NOT IN (?) AND created_on < ?", ['feeds', 'api', 'session'], Time.now - validity_time).delete_all end |
.find_active_user(action, key, validity_days = nil) ⇒ Object
Returns the active user who owns the key for the given action
43 44 45 46 47 48 |
# File 'app/models/token.rb', line 43 def self.find_active_user(action, key, validity_days=nil) user = find_user(action, key, validity_days) if user && user.active? user end end |
.find_token(action, key, validity_days = nil) ⇒ Object
Returns the token for action and key with an optional validity duration (in number of days)
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'app/models/token.rb', line 60 def self.find_token(action, key, validity_days=nil) action = action.to_s key = key.to_s return nil unless action.present? && key =~ /\A[a-z0-9]+\z/i token = Token.where(:action => action, :value => key).first if token && (token.action == action) && (token.value == key) && token.user if validity_days.nil? || (token.created_on > validity_days.days.ago) token end end end |
.find_user(action, key, validity_days = nil) ⇒ Object
Returns the user who owns the key for the given action
51 52 53 54 55 56 |
# File 'app/models/token.rb', line 51 def self.find_user(action, key, validity_days=nil) token = find_token(action, key, validity_days) if token token.user end end |
.generate_token_value ⇒ Object
73 74 75 |
# File 'app/models/token.rb', line 73 def self.generate_token_value Redmine::Utils.random_hex(20) end |
Instance Method Details
#expired? ⇒ Boolean
Return true if token has expired
33 34 35 |
# File 'app/models/token.rb', line 33 def expired? return Time.now > self.created_on + self.class.validity_time end |
#generate_new_token ⇒ Object
28 29 30 |
# File 'app/models/token.rb', line 28 def generate_new_token self.value = Token.generate_token_value end |