]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/oauth_token.rb
Stick with bigdecimal 1.1 for ruby 1.9 compatibility
[rails.git] / app / models / oauth_token.rb
index f64ec53dbaf4869712d0b2bd1abc1f19a1dd1870..c9595e870f9f743ef315ceb47b214b24545116c0 100644 (file)
@@ -1,26 +1,22 @@
 class OauthToken < ActiveRecord::Base
   belongs_to :client_application
   belongs_to :user
+
+  scope :authorized, where("authorized_at IS NOT NULL and invalidated_at IS NULL")
+
   validates_uniqueness_of :token
-  validates_presence_of :client_application, :token, :secret
-  before_validation_on_create :generate_keys
-  
-  def self.find_token(token_key)
-    token = OauthToken.find_by_token(token_key, :include => :client_application)
-    if token && token.authorized?
-      logger.info "Loaded #{token.token} which was authorized by (user_id=#{token.user_id}) on the #{token.authorized_at}"
-      token
-    else
-      nil
-    end
-  end
+  validates_presence_of :client_application, :token
+
+  before_validation :generate_keys, :on => :create
   
   def invalidated?
     invalidated_at != nil
   end
   
   def invalidate!
-    update_attribute(:invalidated_at, Time.now)
+    update_attributes({
+      :invalidated_at => Time.now
+    }, :without_protection => true)
   end
   
   def authorized?
@@ -34,8 +30,7 @@ class OauthToken < ActiveRecord::Base
 protected
   
   def generate_keys
-    @oauth_token = client_application.oauth_server.generate_credentials
-    self.token = @oauth_token[0]
-    self.secret = @oauth_token[1]
+    self.token = OAuth::Helper.generate_key(40)[0,40]
+    self.secret = OAuth::Helper.generate_key(40)[0,40]
   end
 end