public
Description: A plugin for the Merb framework that provides integration with CouchDB via the RelaxDB gem
Homepage:
Clone URL: git://github.com/paulcarey/merb_relaxdb.git
merb_relaxdb / lib / merb_relaxdb / rdb_salted_user.rb
100644 54 lines (41 sloc) 1.37 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Merb::Authentication
  module Mixins
    module SaltedUser
      module RDBClassMethods
        
        def self.extended(base)
          base.class_eval do
 
            property :crypted_password
            property :salt
 
            before_save :password_checks
            
            def password_checks
              if password_required?
                return false unless !password.blank? && password == password_confirmation
              end
              encrypt_password
              true
            end
            
          end
        end
 
        def authenticate(login, password)
          login_param = Merb::Authentication::Strategies::Basic::Base.login_param
          @u = all.sorted_by(login_param) { |q| q.key(login) }.first
          @u && @u.authenticated?(password) ? @u : nil
        end
                 
      end
    end
  end
end
 
class Merb::Authentication
  module Mixins
    module SaltedUser
      
      def self.included(base)
        base.class_eval do
          attr_accessor :password, :password_confirmation
          
          include Merb::Authentication::Mixins::SaltedUser::InstanceMethods
          extend Merb::Authentication::Mixins::SaltedUser::ClassMethods
          extend Merb::Authentication::Mixins::SaltedUser::RDBClassMethods
      
        end
      end
            
    end
  end
end