devise_password_sharing_extension 0.0.13 → 0.0.14
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 +7 -0
- data/lib/devise_password_sharing_extension.rb +5 -1
- data/lib/devise_password_sharing_extension/hooks/password_sharing.rb +11 -8
- data/lib/devise_password_sharing_extension/models/password_sharing.rb +11 -10
- data/lib/devise_password_sharing_extension/version.rb +1 -1
- metadata +12 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6782c1a303c8ac25e05dc3f385783ca076b72b78
|
4
|
+
data.tar.gz: 189356f3f553182673115e0152204c5a3d2497d6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3ef9aa78d831dcdb916b6236cabc80520e1de9cc9779f0a2d8748480892e184504d01d8e160e26f537b8d6c253fd2365df65a7490f42d2a4e33a0a7214f55c68
|
7
|
+
data.tar.gz: 976f54777a6abce88fdadf53669cee9dcf025a1eb2f6c90978bda875c350c473be7135c2953dabed8b521ea76ec4c4c347b9dd37d42a11b8998ae3364fd099ba
|
@@ -2,11 +2,15 @@ require 'geoip'
|
|
2
2
|
require 'devise'
|
3
3
|
require 'devise_password_sharing_extension/schema'
|
4
4
|
require 'devise_password_sharing_extension/rails'
|
5
|
+
# require 'devise_password_sharing_extension/resque_job'
|
5
6
|
|
6
7
|
module Devise
|
7
8
|
mattr_accessor :enable_banning
|
8
9
|
@@enable_banning = true
|
9
10
|
|
11
|
+
mattr_accessor :banning_handler
|
12
|
+
@@banning_handler = nil
|
13
|
+
|
10
14
|
mattr_accessor :geoip_database
|
11
15
|
@@geoip_database = '/var/tmp/geoip.dat'
|
12
16
|
|
@@ -17,4 +21,4 @@ module Devise
|
|
17
21
|
@@number_of_cities = 10
|
18
22
|
end
|
19
23
|
|
20
|
-
Devise.add_module(:password_sharing, :
|
24
|
+
Devise.add_module(:password_sharing, model: 'devise_password_sharing_extension/models/password_sharing')
|
@@ -1,12 +1,15 @@
|
|
1
|
-
Warden::Manager.after_set_user(:
|
1
|
+
Warden::Manager.after_set_user(except: :fetch) do |record, warden, options|
|
2
2
|
if record.respond_to?(:password_sharing?) && warden.authenticated?(options[:scope])
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
record.
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
if handler = Devise.banning_handler
|
4
|
+
handler.call(record, warden.request.remote_ip)
|
5
|
+
else
|
6
|
+
record.create_login_event!(warden.request.remote_ip)
|
7
|
+
if record.password_sharing?
|
8
|
+
record.ban_for_password_sharing!
|
9
|
+
scope = options[:scope]
|
10
|
+
warden.logout(scope)
|
11
|
+
throw :warden, :scope => scope, :message => 'Account banned for password sharing.'
|
12
|
+
end
|
10
13
|
end
|
11
14
|
end
|
12
15
|
end
|
@@ -7,6 +7,7 @@ module Devise
|
|
7
7
|
|
8
8
|
module ClassMethods
|
9
9
|
Devise::Models.config(self, :enable_banning)
|
10
|
+
Devise::Models.config(self, :banning_handler)
|
10
11
|
Devise::Models.config(self, :geoip_database)
|
11
12
|
Devise::Models.config(self, :time_frame)
|
12
13
|
Devise::Models.config(self, :number_of_cities)
|
@@ -19,18 +20,18 @@ module Devise
|
|
19
20
|
@@white_listed_ips = YAML::load(File.read(Rails.root.join('config', 'white_listed_ips.yml')))
|
20
21
|
end
|
21
22
|
|
22
|
-
def create_login_event!(
|
23
|
-
unless @@white_listed_ips.include?(
|
23
|
+
def create_login_event!(remote_ip)
|
24
|
+
unless @@white_listed_ips.include?(remote_ip)
|
24
25
|
database = GeoIP.new(self.class.geoip_database)
|
25
|
-
if geo = database.city(
|
26
|
+
if geo = database.city(remote_ip)
|
26
27
|
begin
|
27
28
|
login_events.create!(
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
29
|
+
ip_address: remote_ip,
|
30
|
+
latitude: geo.latitude,
|
31
|
+
longitude: geo.longitude,
|
32
|
+
city: geo.city_name.encode('US-ASCII', undef: :replace),
|
33
|
+
country_code: geo.country_code2.encode('US-ASCII', undef: :replace),
|
34
|
+
region_name: geo.region_name.encode('US-ASCII', undef: :replace))
|
34
35
|
rescue ActiveRecord::RecordInvalid => e
|
35
36
|
# Just move on and be nice.
|
36
37
|
Rails.logger.info("Problem with geo: #{geo.inspect}")
|
@@ -42,7 +43,7 @@ module Devise
|
|
42
43
|
def ban_for_password_sharing!
|
43
44
|
return unless self.class.enable_banning
|
44
45
|
self.banned_for_password_sharing_at = Time.now
|
45
|
-
save(:
|
46
|
+
save(validate: false)
|
46
47
|
end
|
47
48
|
|
48
49
|
def password_sharing?
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_password_sharing_extension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.14
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Russ Smith
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,39 +27,34 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rails
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 3.0.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 3.0.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: devise
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 2.0.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 2.0.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: geoip
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -98,6 +89,7 @@ files:
|
|
98
89
|
- README.rdoc
|
99
90
|
homepage: https://github.com/russ/devise_password_sharing_extension
|
100
91
|
licenses: []
|
92
|
+
metadata: {}
|
101
93
|
post_install_message:
|
102
94
|
rdoc_options:
|
103
95
|
- --main
|
@@ -106,21 +98,20 @@ rdoc_options:
|
|
106
98
|
require_paths:
|
107
99
|
- lib
|
108
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
101
|
requirements:
|
111
|
-
- -
|
102
|
+
- - '>='
|
112
103
|
- !ruby/object:Gem::Version
|
113
104
|
version: 1.8.6
|
114
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
106
|
requirements:
|
117
|
-
- -
|
107
|
+
- - '>='
|
118
108
|
- !ruby/object:Gem::Version
|
119
109
|
version: 1.3.6
|
120
110
|
requirements: []
|
121
111
|
rubyforge_project:
|
122
|
-
rubygems_version:
|
112
|
+
rubygems_version: 2.0.3
|
123
113
|
signing_key:
|
124
|
-
specification_version:
|
114
|
+
specification_version: 4
|
125
115
|
summary: A devise extension to curb password sharing.
|
126
116
|
test_files: []
|
117
|
+
has_rdoc:
|