##// END OF EJS Templates
Introduce virtual MenuNodes (#15880)....
Introduce virtual MenuNodes (#15880). They are characterized by having a blank url. they will only be rendered if the user is authorized to see at least one of its children. they render as links which do nothing when clicked. Patch by Jan Schulz-Hofen. git-svn-id: http://svn.redmine.org/redmine/trunk@15501 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r14856:cda9c63d9c21
r15119:53710d80fc88
Show More
token.rb
93 lines | 2.8 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Delete previous tokens when creating a new one....
r2678 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
0.3 unstable...
r10 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388 #
Jean-Philippe Lang
0.3 unstable...
r10 # 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.
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388 #
Jean-Philippe Lang
0.3 unstable...
r10 # 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 Token < ActiveRecord::Base
belongs_to :user
Jean-Philippe Lang
Add token value uniqueness validation (#3351)....
r2642 validates_uniqueness_of :value
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 attr_protected :id
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Toshi MARUYAMA
Rails3: model: replace deprecated 'before_create' method at Token model...
r7308 before_create :delete_previous_tokens, :generate_new_token
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Jean-Philippe Lang
Code cleanup....
r13300 cattr_accessor :validity_time
self.validity_time = 1.day
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Toshi MARUYAMA
Rails3: model: replace deprecated 'before_create' method at Token model...
r7308 def generate_new_token
Jean-Philippe Lang
0.3 unstable...
r10 self.value = Token.generate_token_value
end
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388 # Return true if token has expired
Jean-Philippe Lang
0.3 unstable...
r10 def expired?
Jean-Philippe Lang
Code cleanup....
r13300 return Time.now > self.created_on + self.class.validity_time
Jean-Philippe Lang
0.3 unstable...
r10 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Jean-Philippe Lang
0.3 unstable...
r10 # Delete all expired tokens
def self.destroy_expired
Jean-Philippe Lang
Keep track of valid user sessions (#21058)....
r14353 Token.where("action NOT IN (?) AND created_on < ?", ['feeds', 'api', 'session'], Time.now - validity_time).delete_all
Jean-Philippe Lang
0.3 unstable...
r10 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Jean-Philippe Lang
Refactors methods for searching a user by token....
r11066 # Returns the active user who owns the key for the given action
def self.find_active_user(action, key, validity_days=nil)
Jean-Philippe Lang
Adds token finder methods....
r11144 user = find_user(action, key, validity_days)
if user && user.active?
user
end
end
# Returns the user who owns the key for the given action
def self.find_user(action, key, validity_days=nil)
token = find_token(action, key, validity_days)
if token
token.user
end
end
# Returns the token for action and key with an optional
# validity duration (in number of days)
def self.find_token(action, key, validity_days=nil)
Jean-Philippe Lang
Refactors methods for searching a user by token....
r11066 action = action.to_s
key = key.to_s
Jean-Philippe Lang
Adds token finder methods....
r11144 return nil unless action.present? && key =~ /\A[a-z0-9]+\z/i
Jean-Philippe Lang
Refactors methods for searching a user by token....
r11066
Jean-Philippe Lang
Adds token finder methods....
r11144 token = Token.where(:action => action, :value => key).first
if token && (token.action == action) && (token.value == key) && token.user
Jean-Philippe Lang
Test broken by r11296....
r11067 if validity_days.nil? || (token.created_on > validity_days.days.ago)
Jean-Philippe Lang
Adds token finder methods....
r11144 token
Jean-Philippe Lang
Refactors methods for searching a user by token....
r11066 end
end
end
Jean-Philippe Lang
0.3 unstable...
r10 def self.generate_token_value
Jean-Philippe Lang
Adds Redmine::Utils.random_hex for generating a random hex string....
r8951 Redmine::Utils.random_hex(20)
Jean-Philippe Lang
0.3 unstable...
r10 end
Toshi MARUYAMA
remove trailing white-spaces from app/models/token.rb....
r6388
Jean-Philippe Lang
Refactors methods for searching a user by token....
r11066 private
Jean-Philippe Lang
Delete previous tokens when creating a new one....
r2678 # Removes obsolete tokens (same user and action)
def delete_previous_tokens
if user
Jean-Philippe Lang
Keep track of valid user sessions (#21058)....
r14353 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
Jean-Philippe Lang
Delete previous tokens when creating a new one....
r2678 end
end
Jean-Philippe Lang
0.3 unstable...
r10 end