cow_auth 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +9 -9
 - data/README.md +2 -3
 - data/lib/cow_auth/exceptions.rb +0 -3
 - data/lib/cow_auth/user.rb +13 -33
 - data/lib/cow_auth/version.rb +1 -1
 - metadata +3 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 64a895f28d740efa94c2a8b5684cd97997d4d17cf50376b9859b869ed16b2a07
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 52cba6f14267edb2b7c8e764421a1ec53aef72e96650bbf104be2de2119804f4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9d23c75c2a71d0e4d1e574f86a2e8adc70e3b018674852b18452475eed477387c6b56f07a3e9aed59b64475eb9e21e3667ce863be852320adc71526de1315c04
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: ad348254f5901b73ddd9a5a5ae79aa49305e55ee65cf019ab293f0338245fe1c65ed3bea8acdde0e5b6ce26a328aa64da4dd7c11f69458d90d6b128f93579f9c
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,31 +1,31 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                cow_auth (0. 
     | 
| 
      
 4 
     | 
    
         
            +
                cow_auth (0.6.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  activesupport (~> 5.1)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  scrypt (~> 3.0)
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            GEM
         
     | 
| 
       9 
9 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
       10 
10 
     | 
    
         
             
              specs:
         
     | 
| 
       11 
     | 
    
         
            -
                activesupport (5.1 
     | 
| 
      
 11 
     | 
    
         
            +
                activesupport (5.2.1)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  concurrent-ruby (~> 1.0, >= 1.0.2)
         
     | 
| 
       13 
     | 
    
         
            -
                  i18n ( 
     | 
| 
      
 13 
     | 
    
         
            +
                  i18n (>= 0.7, < 2)
         
     | 
| 
       14 
14 
     | 
    
         
             
                  minitest (~> 5.1)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  tzinfo (~> 1.1)
         
     | 
| 
       16 
16 
     | 
    
         
             
                concurrent-ruby (1.0.5)
         
     | 
| 
       17 
     | 
    
         
            -
                ffi (1.9. 
     | 
| 
      
 17 
     | 
    
         
            +
                ffi (1.9.25)
         
     | 
| 
       18 
18 
     | 
    
         
             
                ffi-compiler (1.0.1)
         
     | 
| 
       19 
19 
     | 
    
         
             
                  ffi (>= 1.0.0)
         
     | 
| 
       20 
20 
     | 
    
         
             
                  rake
         
     | 
| 
       21 
     | 
    
         
            -
                i18n ( 
     | 
| 
      
 21 
     | 
    
         
            +
                i18n (1.1.0)
         
     | 
| 
       22 
22 
     | 
    
         
             
                  concurrent-ruby (~> 1.0)
         
     | 
| 
       23 
     | 
    
         
            -
                minitest (5.11. 
     | 
| 
       24 
     | 
    
         
            -
                rake (12.3. 
     | 
| 
      
 23 
     | 
    
         
            +
                minitest (5.11.3)
         
     | 
| 
      
 24 
     | 
    
         
            +
                rake (12.3.1)
         
     | 
| 
       25 
25 
     | 
    
         
             
                scrypt (3.0.5)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  ffi-compiler (>= 1.0, < 2.0)
         
     | 
| 
       27 
27 
     | 
    
         
             
                thread_safe (0.3.6)
         
     | 
| 
       28 
     | 
    
         
            -
                tzinfo (1.2. 
     | 
| 
      
 28 
     | 
    
         
            +
                tzinfo (1.2.5)
         
     | 
| 
       29 
29 
     | 
    
         
             
                  thread_safe (~> 0.1)
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
         @@ -38,4 +38,4 @@ DEPENDENCIES 
     | 
|
| 
       38 
38 
     | 
    
         
             
              rake (~> 12.3)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            BUNDLED WITH
         
     | 
| 
       41 
     | 
    
         
            -
               1.16. 
     | 
| 
      
 41 
     | 
    
         
            +
               1.16.2
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -26,7 +26,7 @@ Configure your user model to add the authentication mechanism. 
     | 
|
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            #### Generator (Example)
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
                $ bundle exec rails generate model user uuid:string:uniq email:string:uniq sid:string:uniq encrypted_password:string locale:string first_name:string last_name:string  
     | 
| 
      
 29 
     | 
    
         
            +
                $ bundle exec rails generate model user uuid:string:uniq email:string:uniq sid:string:uniq encrypted_password:string locale:string first_name:string last_name:string sign_in_count:integer is_enabled:boolean is_deleted:boolean
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
            #### Migration (Example)
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
         @@ -41,9 +41,8 @@ Configure your user model to add the authentication mechanism. 
     | 
|
| 
       41 
41 
     | 
    
         
             
                      t.string :locale, null: false
         
     | 
| 
       42 
42 
     | 
    
         
             
                      t.string :first_name
         
     | 
| 
       43 
43 
     | 
    
         
             
                      t.string :last_name
         
     | 
| 
       44 
     | 
    
         
            -
                      t.integer :role, default: 0, null: false
         
     | 
| 
       45 
44 
     | 
    
         
             
                      t.integer :sign_in_count, default: 0, null: false
         
     | 
| 
       46 
     | 
    
         
            -
                      t.boolean : 
     | 
| 
      
 45 
     | 
    
         
            +
                      t.boolean :is_enabled, default: false, null: false
         
     | 
| 
       47 
46 
     | 
    
         
             
                      t.boolean :is_deleted, default: false, null: false
         
     | 
| 
       48 
47 
     | 
    
         
             
                      t.timestamps
         
     | 
| 
       49 
48 
     | 
    
         
             
                      t.index [:uuid], unique: true
         
     | 
    
        data/lib/cow_auth/exceptions.rb
    CHANGED
    
    
    
        data/lib/cow_auth/user.rb
    CHANGED
    
    | 
         @@ -1,5 +1,4 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'scrypt'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'cow_auth/exceptions'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            module CowAuth
         
     | 
| 
       5 
4 
     | 
    
         
             
              module User
         
     | 
| 
         @@ -26,34 +25,31 @@ module CowAuth 
     | 
|
| 
       26 
25 
     | 
    
         
             
                end
         
     | 
| 
       27 
26 
     | 
    
         | 
| 
       28 
27 
     | 
    
         
             
                def authenticate_with_token(auth_token)
         
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                       
     | 
| 
       32 
     | 
    
         
            -
                       
     | 
| 
       33 
     | 
    
         
            -
                      api_key[:auth_token] == auth_token &&
         
     | 
| 
       34 
     | 
    
         
            -
                      api_key[:expires_at] > Time.zone.now
         
     | 
| 
      
 28 
     | 
    
         
            +
                  if self.auth_token.present? &&
         
     | 
| 
      
 29 
     | 
    
         
            +
                      self.expires_at.present? &&
         
     | 
| 
      
 30 
     | 
    
         
            +
                      self.auth_token == auth_token &&
         
     | 
| 
      
 31 
     | 
    
         
            +
                      self.expires_at > Time.zone.now
         
     | 
| 
       35 
32 
     | 
    
         
             
                    return true
         
     | 
| 
       36 
33 
     | 
    
         
             
                  end
         
     | 
| 
       37 
34 
     | 
    
         
             
                  return false
         
     | 
| 
       38 
35 
     | 
    
         
             
                end
         
     | 
| 
       39 
36 
     | 
    
         | 
| 
       40 
37 
     | 
    
         
             
                def api_sign_in
         
     | 
| 
       41 
     | 
    
         
            -
                  self. 
     | 
| 
      
 38 
     | 
    
         
            +
                  self.update(
         
     | 
| 
       42 
39 
     | 
    
         
             
                    auth_token: self.token_valid? ? self.auth_token : self.generate_auth_token,
         
     | 
| 
       43 
40 
     | 
    
         
             
                    expires_at: self.generate_token_expires_at
         
     | 
| 
       44 
     | 
    
         
            -
                   
     | 
| 
      
 41 
     | 
    
         
            +
                  )
         
     | 
| 
       45 
42 
     | 
    
         
             
                  return true
         
     | 
| 
       46 
43 
     | 
    
         
             
                end
         
     | 
| 
       47 
44 
     | 
    
         | 
| 
       48 
45 
     | 
    
         
             
                def api_sign_out
         
     | 
| 
       49 
     | 
    
         
            -
                  self. 
     | 
| 
      
 46 
     | 
    
         
            +
                  self.update(
         
     | 
| 
      
 47 
     | 
    
         
            +
                    auth_token: nil,
         
     | 
| 
      
 48 
     | 
    
         
            +
                    expires_at: nil
         
     | 
| 
      
 49 
     | 
    
         
            +
                  )
         
     | 
| 
       50 
50 
     | 
    
         
             
                  return true
         
     | 
| 
       51 
51 
     | 
    
         
             
                end
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                def auth_token
         
     | 
| 
       54 
     | 
    
         
            -
                  return self.fetch_api_key_from_redis(self.sid).try(:[], :auth_token)
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
53 
     | 
    
         
             
                def password=(new_password)
         
     | 
| 
       58 
54 
     | 
    
         
             
                  return false if new_password.blank?
         
     | 
| 
       59 
55 
     | 
    
         
             
                  salt = SCrypt::Engine.generate_salt
         
     | 
| 
         @@ -63,11 +59,6 @@ module CowAuth 
     | 
|
| 
       63 
59 
     | 
    
         | 
| 
       64 
60 
     | 
    
         
             
              protected
         
     | 
| 
       65 
61 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
                def fetch_api_key_from_redis(sid)
         
     | 
| 
       67 
     | 
    
         
            -
                  api_key = self.redis_handle.get(self.redis_key)
         
     | 
| 
       68 
     | 
    
         
            -
                  return api_key.present? ? JSON.parse(api_key).try(:symbolize_keys) : nil
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
62 
     | 
    
         
             
                def generate_auth_token
         
     | 
| 
       72 
63 
     | 
    
         
             
                  return SecureRandom.hex(64)
         
     | 
| 
       73 
64 
     | 
    
         
             
                end
         
     | 
| 
         @@ -76,21 +67,10 @@ module CowAuth 
     | 
|
| 
       76 
67 
     | 
    
         
             
                  return 1.month.from_now
         
     | 
| 
       77 
68 
     | 
    
         
             
                end
         
     | 
| 
       78 
69 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
                def redis_handle
         
     | 
| 
       80 
     | 
    
         
            -
                  raise CowAuth::RedisHandleMissingError.new('"$redis" handle not found.') unless $redis.present?
         
     | 
| 
       81 
     | 
    
         
            -
                  return $redis
         
     | 
| 
       82 
     | 
    
         
            -
                end
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
                def redis_key
         
     | 
| 
       85 
     | 
    
         
            -
                  return "user_#{self.sid.downcase}"
         
     | 
| 
       86 
     | 
    
         
            -
                end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
70 
     | 
    
         
             
                def token_valid?
         
     | 
| 
       89 
     | 
    
         
            -
                   
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
                       
     | 
| 
       92 
     | 
    
         
            -
                      api_key.key?(:expires_at) &&
         
     | 
| 
       93 
     | 
    
         
            -
                      api_key[:expires_at] > Time.zone.now
         
     | 
| 
      
 71 
     | 
    
         
            +
                  return self.auth_token.present? &&
         
     | 
| 
      
 72 
     | 
    
         
            +
                      self.expires_at.present? &&
         
     | 
| 
      
 73 
     | 
    
         
            +
                      self.expires_at > Time.zone.now
         
     | 
| 
       94 
74 
     | 
    
         
             
                end
         
     | 
| 
       95 
75 
     | 
    
         | 
| 
       96 
76 
     | 
    
         
             
              private
         
     | 
    
        data/lib/cow_auth/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: cow_auth
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.6.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Mickey Cowden
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-08-08 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       125 
125 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       126 
126 
     | 
    
         
             
            requirements: []
         
     | 
| 
       127 
127 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       128 
     | 
    
         
            -
            rubygems_version: 2.7. 
     | 
| 
      
 128 
     | 
    
         
            +
            rubygems_version: 2.7.7
         
     | 
| 
       129 
129 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       130 
130 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       131 
131 
     | 
    
         
             
            summary: Authentication gem
         
     |