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 +5 -5
- data/app/models/signin.rb +3 -1
- data/db/migrate/20140103165607_create_signins.rb +2 -1
- data/db/migrate/20180530131006_add_custom_data_to_sigins.rb +13 -0
- data/lib/signinable/model_additions.rb +10 -10
- data/lib/signinable/version.rb +1 -1
- metadata +28 -32
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8f6b4e11c8d02ff119c491cbcd8a21ac67cf1c14e8964d690c517facb547773a
|
4
|
+
data.tar.gz: '06836449980727858552681d9cbf919803e960f1dac59e214d10de82bc547dc5'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0673f78fb8302317f41fa5df6f0956069bf6a255fbab3e931fe2f3f4b17807b098f1efb09c2da2126345923c43b676a8384d1dfae73849014993fead611f9b6c
|
7
|
+
data.tar.gz: 258c6e565a86bbf68b303469af5bff069bf035edac10dcdb63421389b40f3db3e4c2b889fdac70ad871e0be1767f283db842a12305d36d011e15fa1dea239303
|
data/app/models/signin.rb
CHANGED
@@ -13,10 +13,12 @@ class Signin < ActiveRecord::Base
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def expire!
|
16
|
-
|
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
|
@@ -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
|
data/lib/signinable/version.rb
CHANGED
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.
|
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:
|
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
|
-
|
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/
|
162
|
-
- spec/dummy/
|
163
|
-
- spec/dummy/
|
164
|
-
- spec/dummy/
|
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/
|
170
|
-
- spec/dummy/config/
|
171
|
-
- spec/dummy/config/
|
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/
|
169
|
+
- spec/dummy/config/initializers/wrap_parameters.rb
|
174
170
|
- spec/dummy/config/initializers/inflections.rb
|
175
|
-
- spec/dummy/config/initializers/
|
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/
|
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/
|
181
|
-
- spec/dummy/
|
182
|
-
- spec/dummy/
|
183
|
-
- spec/dummy/
|
184
|
-
- spec/dummy/
|
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/
|
191
|
-
- spec/dummy/
|
192
|
-
- spec/
|
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
|
data/spec/dummy/db/test.sqlite3
DELETED
Binary file
|
data/spec/dummy/log/test.log
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
[1m[35m (5.9ms)[0m [1m[34mSELECT sqlite_version(*)[0m
|
2
|
-
[1m[35m (2.2ms)[0m [1m[35mCREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)[0m
|
3
|
-
[1m[35m (0.9ms)[0m [1m[35mCREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)[0m
|
4
|
-
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
5
|
-
Migrating to CreateUsers (20140103165606)
|