signinable 2.0.6 → 2.0.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 55794149ad1cc0c4a7be9a08d2cefbb0e1d10d61
4
- data.tar.gz: e59d8ae956f9d4833c58ffb674358b1e4d4cba79
2
+ SHA256:
3
+ metadata.gz: 8f6b4e11c8d02ff119c491cbcd8a21ac67cf1c14e8964d690c517facb547773a
4
+ data.tar.gz: '06836449980727858552681d9cbf919803e960f1dac59e214d10de82bc547dc5'
5
5
  SHA512:
6
- metadata.gz: 8331f8045d7b3bbfeac9bc0c52239b0db9ee21e23a3616308dbc70a21bc6179e13b7894575c69fa55c8c119c302b37fec739d93badf0c74be57748d79404d0a6
7
- data.tar.gz: 598d52c18fe092f3e59f6e781d9c34e9aeff4f5a81ac0825d25f616bf74c2fc929239f21f6bb9c4ab36841c69fec8d8dc3185b93c420b11ccaca0d076388c2c8
6
+ metadata.gz: 0673f78fb8302317f41fa5df6f0956069bf6a255fbab3e931fe2f3f4b17807b098f1efb09c2da2126345923c43b676a8384d1dfae73849014993fead611f9b6c
7
+ data.tar.gz: 258c6e565a86bbf68b303469af5bff069bf035edac10dcdb63421389b40f3db3e4c2b889fdac70ad871e0be1767f283db842a12305d36d011e15fa1dea239303
@@ -13,10 +13,12 @@ class Signin < ActiveRecord::Base
13
13
  end
14
14
 
15
15
  def expire!
16
- update_attributes(expiration_time: Time.zone.now)
16
+ update!(expiration_time: Time.zone.now)
17
17
  end
18
18
 
19
19
  def expired?
20
20
  expiration_time && expiration_time <= Time.zone.now
21
21
  end
22
+
23
+ serialize :custom_data if ActiveRecord::Base.connection.instance_values['config'][:adapter].match('mysql')
22
24
  end
@@ -1,4 +1,5 @@
1
- class CreateSignins < ActiveRecord::Migration
1
+ migration_kls = Rails::VERSION::MAJOR > 4 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
2
+ class CreateSignins < migration_kls
2
3
  def self.up
3
4
  create_table :signins do |t|
4
5
  t.integer :signinable_id, null: false
@@ -0,0 +1,13 @@
1
+ migration_kls = Rails::VERSION::MAJOR > 4 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
2
+
3
+ class AddCustomDataToSigins < migration_kls
4
+ def change
5
+
6
+ if ActiveRecord::Base.connection.instance_values["config"][:adapter] == "postgresql"
7
+ add_column :signins, :custom_data, :jsonb, null:false, default: {}
8
+ else
9
+ add_column :signins, :custom_data, :string, null:false, default: {}.to_json
10
+ end
11
+
12
+ end
13
+ end
@@ -14,7 +14,7 @@ module Signinable
14
14
  has_many :signins, as: :signinable, dependent: :destroy
15
15
  end
16
16
 
17
- def authenticate_with_token(token, ip, user_agent)
17
+ def authenticate_with_token(token, ip, user_agent, skip_restrictions=[])
18
18
  if(signin = Signin.find_by_token(token))
19
19
  if self.signin_expiration.respond_to?(:call)
20
20
  self.signin_expiration = self.signin_expiration.call(signin.signinable)
@@ -28,18 +28,18 @@ module Signinable
28
28
  return nil unless signin == signin.signinable.last_signin
29
29
  end
30
30
 
31
- return nil unless self.check_signin_permission(signin, ip, user_agent)
31
+ return nil unless self.check_signin_permission(signin, ip, user_agent, skip_restrictions)
32
32
  signin.update!(expiration_time: (Time.zone.now + self.signin_expiration)) unless signin.expiration_time.nil? || self.signin_expiration == 0
33
33
  signin.signinable
34
34
  end
35
35
  end
36
36
 
37
- def check_signin_permission(signin, ip, user_agent)
38
- signin_permitted?(signin, ip, user_agent)
37
+ def check_signin_permission(signin, ip, user_agent, skip_restrictions)
38
+ signin_permitted?(signin, ip, user_agent, skip_restrictions)
39
39
  end
40
40
 
41
41
  private
42
- def signin_permitted?(signin, ip, user_agent)
42
+ def signin_permitted?(signin, ip, user_agent, skip_restrictions)
43
43
  restriction_fields = case
44
44
  when self.signin_restrictions.respond_to?(:call)
45
45
  self.signin_restrictions.call(signin.signinable)
@@ -49,7 +49,7 @@ module Signinable
49
49
  []
50
50
  end
51
51
 
52
- restriction_fields.each do |field|
52
+ (restriction_fields - skip_restrictions).each do |field|
53
53
  if(local_variables.include?(field.to_sym) && signin.respond_to?("#{field}"))
54
54
  return false unless signin.send("#{field}") == eval("#{field}")
55
55
  end
@@ -59,17 +59,17 @@ module Signinable
59
59
  end
60
60
  end
61
61
 
62
- def signin(ip, user_agent, referer, permanent = false)
62
+ def signin(ip, user_agent, referer, permanent = false, custom_data = {})
63
63
  if self.class.signin_expiration.respond_to?(:call)
64
64
  self.class.signin_expiration = self.class.signin_expiration.call(self)
65
65
  end
66
66
  expiration_time = (self.class.signin_expiration == 0 || permanent) ? nil : (Time.zone.now + self.class.signin_expiration)
67
- Signin.create!(signinable: self, ip: ip, referer: referer, user_agent: user_agent, expiration_time: expiration_time).token
67
+ Signin.create!(custom_data: custom_data, signinable: self, ip: ip, referer: referer, user_agent: user_agent, expiration_time: expiration_time).token
68
68
  end
69
69
 
70
- def signout(token, ip, user_agent)
70
+ def signout(token, ip, user_agent, skip_restrictions=[])
71
71
  if(signin = Signin.find_by_token(token))
72
- return nil unless self.class.check_signin_permission(signin, ip, user_agent)
72
+ return nil unless self.class.check_signin_permission(signin, ip, user_agent, skip_restrictions)
73
73
  signin.expire!
74
74
 
75
75
  return true
@@ -1,3 +1,3 @@
1
1
  module Signinable
2
- VERSION = "2.0.6"
2
+ VERSION = '2.0.11'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: signinable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: 2.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Novozhenets
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-29 00:00:00.000000000 Z
11
+ date: 2021-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -93,6 +93,7 @@ files:
93
93
  - app/models/signin.rb
94
94
  - config/routes.rb
95
95
  - db/migrate/20140103165607_create_signins.rb
96
+ - db/migrate/20180530131006_add_custom_data_to_sigins.rb
96
97
  - lib/signinable.rb
97
98
  - lib/signinable/engine.rb
98
99
  - lib/signinable/model_additions.rb
@@ -122,8 +123,6 @@ files:
122
123
  - spec/dummy/config/routes.rb
123
124
  - spec/dummy/db/migrate/20140103165606_create_users.rb
124
125
  - spec/dummy/db/schema.rb
125
- - spec/dummy/db/test.sqlite3
126
- - spec/dummy/log/test.log
127
126
  - spec/dummy/public/404.html
128
127
  - spec/dummy/public/422.html
129
128
  - spec/dummy/public/500.html
@@ -152,46 +151,43 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
151
  - !ruby/object:Gem::Version
153
152
  version: '0'
154
153
  requirements: []
155
- rubyforge_project:
156
- rubygems_version: 2.4.8
154
+ rubygems_version: 3.1.4
157
155
  signing_key:
158
156
  specification_version: 4
159
157
  summary: Token based signin
160
158
  test_files:
161
- - spec/dummy/app/models/user.rb
162
- - spec/dummy/bin/bundle
163
- - spec/dummy/bin/rails
164
- - spec/dummy/bin/rake
165
- - spec/dummy/config/application.rb
166
- - spec/dummy/config/boot.rb
167
- - spec/dummy/config/database.yml
159
+ - spec/dummy/config.ru
160
+ - spec/dummy/README.rdoc
161
+ - spec/dummy/db/migrate/20140103165606_create_users.rb
162
+ - spec/dummy/db/schema.rb
168
163
  - spec/dummy/config/environment.rb
169
- - spec/dummy/config/environments/development.rb
170
- - spec/dummy/config/environments/production.rb
171
- - spec/dummy/config/environments/test.rb
164
+ - spec/dummy/config/routes.rb
165
+ - spec/dummy/config/database.yml
166
+ - spec/dummy/config/application.rb
167
+ - spec/dummy/config/initializers/mime_types.rb
172
168
  - spec/dummy/config/initializers/backtrace_silencers.rb
173
- - spec/dummy/config/initializers/filter_parameter_logging.rb
169
+ - spec/dummy/config/initializers/wrap_parameters.rb
174
170
  - spec/dummy/config/initializers/inflections.rb
175
- - spec/dummy/config/initializers/mime_types.rb
171
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
176
172
  - spec/dummy/config/initializers/secret_token.rb
177
173
  - spec/dummy/config/initializers/session_store.rb
178
- - spec/dummy/config/initializers/wrap_parameters.rb
174
+ - spec/dummy/config/boot.rb
175
+ - spec/dummy/config/environments/test.rb
176
+ - spec/dummy/config/environments/production.rb
177
+ - spec/dummy/config/environments/development.rb
179
178
  - spec/dummy/config/locales/en.yml
180
- - spec/dummy/config/routes.rb
181
- - spec/dummy/config.ru
182
- - spec/dummy/db/migrate/20140103165606_create_users.rb
183
- - spec/dummy/db/schema.rb
184
- - spec/dummy/db/test.sqlite3
185
- - spec/dummy/log/test.log
186
- - spec/dummy/public/404.html
187
- - spec/dummy/public/422.html
179
+ - spec/dummy/app/models/user.rb
180
+ - spec/dummy/Rakefile
181
+ - spec/dummy/bin/rails
182
+ - spec/dummy/bin/bundle
183
+ - spec/dummy/bin/rake
188
184
  - spec/dummy/public/500.html
189
185
  - spec/dummy/public/favicon.ico
190
- - spec/dummy/Rakefile
191
- - spec/dummy/README.rdoc
192
- - spec/factories/signin.rb
186
+ - spec/dummy/public/404.html
187
+ - spec/dummy/public/422.html
188
+ - spec/support/utilities.rb
193
189
  - spec/factories/user.rb
190
+ - spec/factories/signin.rb
191
+ - spec/spec_helper.rb
194
192
  - spec/models/signin_spec.rb
195
193
  - spec/models/user_spec.rb
196
- - spec/spec_helper.rb
197
- - spec/support/utilities.rb
Binary file
@@ -1,5 +0,0 @@
1
-  (5.9ms) SELECT sqlite_version(*)
2
-  (2.2ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
3
-  (0.9ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
4
-  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
5
- Migrating to CreateUsers (20140103165606)