Sha256: 94b37bdb11b806378c7e9e253fbb07daba8de4fdadeaf74a76135c129b120fdc

Contents?: true

Size: 1.61 KB

Versions: 25

Compression:

Stored size: 1.61 KB

Contents

require 'net/http'

module TwitterAuth
  module BasicUser
    def self.included(base)
      base.class_eval do
        attr_protected :crypted_password, :salt
      end

      base.extend TwitterAuth::BasicUser::ClassMethods
    end

    module ClassMethods
      def verify_credentials(login, password)
        response = TwitterAuth.net.start { |http|
          request = Net::HTTP::Get.new('/account/verify_credentials.json')
          request.basic_auth login, password
          http.request(request)
        }

        if response.code == '200'
          JSON.parse(response.body)
        else
          false
        end
      end

      def authenticate(login, password)
        if twitter_hash = verify_credentials(login, password)
          user = identify_or_create_from_twitter_hash_and_password(twitter_hash, password)
          user
        else
          nil
        end
      end

      def identify_or_create_from_twitter_hash_and_password(twitter_hash, password)
        if user = User.find_by_login(twitter_hash['screen_name']) 
          user.assign_twitter_attributes(twitter_hash)
          user.password = password
          user.save
          user
        else
          user = User.new_from_twitter_hash(twitter_hash)
          user.password = password
          user.save
          user
        end
      end
    end
   
    def password=(new_password)
      encrypted = TwitterAuth::Cryptify.encrypt(new_password)
      self.crypted_password = encrypted[:encrypted_data]
      self.salt = encrypted[:salt]
    end

    def password
      TwitterAuth::Cryptify.decrypt(self.crypted_password, self.salt)
    end
  end
end

Version data entries

25 entries across 25 versions & 4 rubygems

Version Path
mbleigh-twitter-auth-0.1.10 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.11 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.12 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.13 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.14 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.15 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.16 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.18 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.3 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.5 app/models/twitter_auth/basic_user.rb
mbleigh-twitter-auth-0.1.8 app/models/twitter_auth/basic_user.rb
millsb-twitter-auth-0.1.16 app/models/twitter_auth/basic_user.rb
xaviershay-twitter-auth-0.1.19 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.10 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.12 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.11 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.13 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.16 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.15 app/models/twitter_auth/basic_user.rb
twitter-auth-0.1.14 app/models/twitter_auth/basic_user.rb