2012-04-23 06:55:16 +00:00
|
|
|
class Token < ActiveRecord::Base
|
|
|
|
before_create :generate_token
|
|
|
|
|
|
|
|
belongs_to :user
|
|
|
|
|
|
|
|
def self.check( data )
|
|
|
|
|
|
|
|
# fetch token
|
|
|
|
token = Token.where( :action => data[:action], :name => data[:name] ).first
|
|
|
|
return if !token
|
|
|
|
|
|
|
|
# check if token is still valid
|
|
|
|
if token.created_at < 1.day.ago
|
2013-01-03 12:00:55 +00:00
|
|
|
|
2012-04-23 06:55:16 +00:00
|
|
|
# delete token
|
|
|
|
token.delete
|
|
|
|
token.save
|
|
|
|
return
|
|
|
|
end
|
2013-01-03 12:00:55 +00:00
|
|
|
|
2012-04-23 06:55:16 +00:00
|
|
|
# return token if valid
|
2013-01-03 12:00:55 +00:00
|
|
|
return token.user
|
2012-04-23 06:55:16 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
def generate_token
|
|
|
|
begin
|
|
|
|
self.name = SecureRandom.hex(20)
|
|
|
|
end while Token.exists?( :name => self.name )
|
|
|
|
end
|
|
|
|
end
|