]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/oauth_token.rb
Preserve URL fragments through external authentication
[rails.git] / app / models / oauth_token.rb
index 5fca40ce203e425965a59a222615976cf70eb5e4..9a3e7de9eca142c21574f011ef33ee393f573539 100644 (file)
@@ -1,31 +1,35 @@
 class OauthToken < ActiveRecord::Base
   belongs_to :client_application
   belongs_to :user
 class OauthToken < ActiveRecord::Base
   belongs_to :client_application
   belongs_to :user
-  validates_uniqueness_of :token
-  validates_presence_of :client_application, :token, :secret
-  before_validation_on_create :generate_keys
-  
+
+  scope :authorized, -> { where("authorized_at IS NOT NULL and invalidated_at IS NULL") }
+
+  validates :token, :presence => true, :uniqueness => true
+  validates :user, :associated => true
+  validates :client_application, :presence => true
+
+  before_validation :generate_keys, :on => :create
+
   def invalidated?
     invalidated_at != nil
   end
   def invalidated?
     invalidated_at != nil
   end
-  
+
   def invalidate!
   def invalidate!
-    update_attribute(:invalidated_at, Time.now)
+    update_attributes(:invalidated_at => Time.now)
   end
   end
-  
+
   def authorized?
   def authorized?
-    authorized_at != nil && !invalidated?
+    !authorized_at.nil? && !invalidated?
   end
   end
-  
+
   def to_query
     "oauth_token=#{token}&oauth_token_secret=#{secret}"
   end
   def to_query
     "oauth_token=#{token}&oauth_token_secret=#{secret}"
   end
-    
-protected
-  
+
+  protected
+
   def generate_keys
   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
   end
 end