signinable 2.0.6 → 2.0.11

Sign up to get free protection for your applications and to get access to all the features.
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)