Class: Token

Inherits:
ActiveRecord::Base
  • Object
show all
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

Instance Method Summary collapse

Class Method Details

.destroy_expiredObject

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_valueObject



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

Returns:

  • (Boolean)


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_tokenObject



28
29
30
# File 'app/models/token.rb', line 28

def generate_new_token
  self.value = Token.generate_token_value
end