]> git.openstreetmap.org Git - rails.git/blob - app/models/oauth_token.rb
Merge remote-tracking branch 'openstreetmap/pull/1068'
[rails.git] / app / models / oauth_token.rb
1 class OauthToken < ActiveRecord::Base
2   belongs_to :client_application
3   belongs_to :user
4
5   scope :authorized, -> { where("authorized_at IS NOT NULL and invalidated_at IS NULL") }
6
7   validates :token, :presence => true, :uniqueness => true
8   validates :user, :associated => true
9   validates :client_application, :presence => true
10
11   before_validation :generate_keys, :on => :create
12
13   def invalidated?
14     invalidated_at != nil
15   end
16
17   def invalidate!
18     update_attributes(:invalidated_at => Time.now)
19   end
20
21   def authorized?
22     !authorized_at.nil? && !invalidated?
23   end
24
25   def to_query
26     "oauth_token=#{token}&oauth_token_secret=#{secret}"
27   end
28
29   protected
30
31   def generate_keys
32     self.token = OAuth::Helper.generate_key(40)[0, 40]
33     self.secret = OAuth::Helper.generate_key(40)[0, 40]
34   end
35 end