Strip spaces.
[ecs.git] / app / models / auth.rb
blob14f2831ab95728deccff9a9019fe5a2da7b1b72e
1 class Auth < ActiveRecord::Base
2   belongs_to :message
4   #scope :hash, lambda {|hash| {
5   #  :joins => {:membership_messages => {:membership => :participant}},
6   #  :order => "id ASC",
7   #  :conditions => {:participants => {:id => participant.id}}}}
10   # if valid time window return true
11   def test_validation_window
12     b = JSON.parse(message.body)
13     sov = Time.parse(b["sov"])
14     eov = Time.parse(b["eov"])
15     if eov > Time.now
16       true
17     else
18       false
19     end
20   end
22   # garbage collect outtimed authorization tokens
23   def self.gc_outtimed
24     gc_sys_auths_lock= "#{Rails.root}/tmp/gc_sys_auths.lock"
25     if File.exists?(gc_sys_auths_lock)
26       logtext= "GC: there seems to be already running a ecs:gc_sys_auths process (#{gc_sys_auths_lock}). Aborting."
27       logger.info logtext
28       puts logtext unless Rails.env.test?
29     else
30       begin
31         File.open(gc_sys_auths_lock,"w") do |f|
32           f.puts "#{Process.pid}"
33         end
34         logtext= "GC: Searching for outtimed auths ..."
35         logger.info logtext
36         puts logtext unless Rails.env.test?
37         Auth.all.each do |auth|
38           if ! auth.test_validation_window
39             auth.message.destroy_as_sender
40             logtext= "GC: garbage collect auths token: #{auth.one_touch_hash}"
41             logger.info logtext
42             puts logtext unless Rails.env.test?
43           end
44         end
45         logtext= "GC: Searching for outtimed auths done."
46         logger.info logtext
47         puts logtext unless Rails.env.test?
48       ensure
49         begin
50           File.delete(gc_sys_auths_lock)
51         rescue
52         end
53       end
54     end
55   end
57 end