authn 3.7.4 → 3.8.4
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.
- data/.gitignore +3 -14
- data/.rvmrc +2 -2
- data/CHANGELOG.md +7 -1
- data/LICENSE.txt +2 -2
- data/README.md +41 -10
- data/Rakefile +8 -10
- data/authn.gemspec +26 -22
- data/lib/authn/session.rb +2 -1
- data/lib/authn/version.rb +1 -1
- data/test/lib/authn_test.rb +1 -1
- metadata +106 -25
data/.gitignore
CHANGED
@@ -22,19 +22,8 @@
|
|
22
22
|
# Ignores that should be in the global gitignore
|
23
23
|
# /*.rbc
|
24
24
|
# /.config
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# /coverage/
|
29
|
-
# /doc/
|
30
|
-
# /lib/bundler/man/
|
25
|
+
/.yardoc
|
26
|
+
/coverage/
|
27
|
+
/doc/
|
31
28
|
# /rdoc/
|
32
29
|
# /spec/reports/
|
33
|
-
# /test/tmp/
|
34
|
-
# /test/version_tmp/
|
35
|
-
|
36
|
-
# Ignore sub-gems
|
37
|
-
/lib/authn/activation
|
38
|
-
/lib/authn/recovery
|
39
|
-
/lib/authn/protection
|
40
|
-
/lib/authn/rails
|
data/.rvmrc
CHANGED
@@ -6,10 +6,10 @@
|
|
6
6
|
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
|
7
7
|
# Only full ruby name is supported here, for short names use:
|
8
8
|
# echo "rvm use 1.9.3" > .rvmrc
|
9
|
-
environment_id="ruby-1.9.3-
|
9
|
+
environment_id="ruby-1.9.3-p392@authn"
|
10
10
|
|
11
11
|
# Uncomment the following lines if you want to verify rvm version per project
|
12
|
-
# rvmrc_rvm_version="1.
|
12
|
+
# rvmrc_rvm_version="1.18.18 (stable)" # 1.10.1 seams as a safe start
|
13
13
|
# eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
|
14
14
|
# echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
|
15
15
|
# return 1
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
---------
|
3
3
|
|
4
|
+
3.8.4 / 2013-03-20
|
5
|
+
==================
|
6
|
+
|
7
|
+
* Fixing a bug with current user getting called
|
8
|
+
* Cleaning up documentation
|
9
|
+
|
4
10
|
3.7.4 / 2012-09-21
|
5
11
|
==================
|
6
12
|
|
@@ -17,7 +23,7 @@ CHANGELOG
|
|
17
23
|
|
18
24
|
* Updating the readme with new details about authn-rails
|
19
25
|
* Commenting out non-working tests
|
20
|
-
* Adding a
|
26
|
+
* Adding a convenience before filter to require login
|
21
27
|
|
22
28
|
1.0.0 / 2012-MM-DD
|
23
29
|
==================
|
data/LICENSE.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c)
|
1
|
+
Copyright (c) 2013 Kurtis Rainbolt-Greene
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
AuthN
|
2
2
|
-----
|
3
3
|
|
4
|
+
- [](https://rubygems.org/gems/authn)
|
5
|
+
- [](https://codeclimate.com/github/krainboltgreene/authn)
|
6
|
+
- [](https://travis-ci.org/krainboltgreene/authn)
|
7
|
+
- [](https://gemnasium.com/krainboltgreene/authn)
|
8
|
+
- [](https://coveralls.io/r/krainboltgreene/authn)
|
9
|
+
|
10
|
+
|
11
|
+
|
4
12
|
authn is a simplistic and barebones authentication library.
|
5
13
|
It only does a few things for you, such as:
|
6
14
|
|
@@ -19,7 +27,17 @@ In addition you can bring in other behavior sets like:
|
|
19
27
|
Using AuthN
|
20
28
|
===========
|
21
29
|
|
22
|
-
|
30
|
+
**The Model**
|
31
|
+
|
32
|
+
In order to use AuthN in your model you'll only need to follow a few steps:
|
33
|
+
|
34
|
+
* ActiveModel's SecurePassword requires the model have an accessor called `password_digest`. (See schema below, for the ActiveRecord version)
|
35
|
+
* The `AuthN::Model` module will need to be included into the model. (See codeblock below)
|
36
|
+
* The singleton method `has_authentication` will need to be called.
|
37
|
+
* The singleton method `has_secure_password` will need to be called.
|
38
|
+
|
39
|
+
That's it!
|
40
|
+
Now for those fun code examples:
|
23
41
|
|
24
42
|
``` ruby
|
25
43
|
# create_table :accounts do |t|
|
@@ -46,8 +64,9 @@ end
|
|
46
64
|
|
47
65
|
See?
|
48
66
|
No muss, no fuss.
|
49
|
-
|
50
|
-
|
67
|
+
Of course authn does (and will) provide extras, like activation or rails integration.
|
68
|
+
You'll need to read those repositories for more information.
|
69
|
+
Here's a taste of what a "fully loaded" model looks like:
|
51
70
|
|
52
71
|
``` ruby
|
53
72
|
# create_table :accounts do |t|
|
@@ -79,8 +98,8 @@ class Account < ActiveRecord::Base
|
|
79
98
|
|
80
99
|
has_authentication
|
81
100
|
has_password_recovery mailer: "PasswordRecoveryMailer"
|
82
|
-
has_activation mailer: "ActivationMailer",
|
83
|
-
has_login_protection maximum: 3
|
101
|
+
has_activation mailer: "ActivationMailer", on_create_send: false
|
102
|
+
has_login_protection maximum: 3
|
84
103
|
has_secure_password
|
85
104
|
|
86
105
|
validates :email, uniqueness: true, presence: true, length: 5..255
|
@@ -90,11 +109,23 @@ class Account < ActiveRecord::Base
|
|
90
109
|
end
|
91
110
|
```
|
92
111
|
|
93
|
-
You'll notice that
|
94
|
-
These
|
95
|
-
|
96
|
-
|
97
|
-
|
112
|
+
You'll notice that each singleton method can take some options passed to it in the form of a Hash (or similar).
|
113
|
+
These options *supercede* the global config options given by your AuthN config.
|
114
|
+
Those options supercede the default config in the gem.
|
115
|
+
|
116
|
+
|
117
|
+
**The Controller**
|
118
|
+
|
119
|
+
Inside your controllers you have access to these methods:
|
120
|
+
|
121
|
+
* `login email: "jpublic@mail.com", password: "12341234"`, for logging accounts in if the creds match
|
122
|
+
* `auto_login Account.find(23)`, for automatically logging in a certain account
|
123
|
+
* `logged_in?` for checking if there's a current user
|
124
|
+
* `current_user` which returns the current user instance
|
125
|
+
* `require_login`, which redirects to the `unauthorized` action if the user isn't logged in
|
126
|
+
* `logout`, for logging out of the current user
|
127
|
+
|
128
|
+
For more information, check the [wiki](/wiki)
|
98
129
|
|
99
130
|
Installing AuthN
|
100
131
|
================
|
data/Rakefile
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rake/clean"
|
4
|
+
require "rake/testtask"
|
5
|
+
require "yard"
|
6
6
|
|
7
7
|
begin
|
8
8
|
Bundler.setup :default, :development
|
@@ -16,16 +16,14 @@ Bundler::GemHelper.install_tasks
|
|
16
16
|
|
17
17
|
desc "Run all of the tests"
|
18
18
|
Rake::TestTask.new do |config|
|
19
|
-
config.libs <<
|
20
|
-
config.pattern =
|
21
|
-
config.verbose = true
|
22
|
-
config.warning = true
|
19
|
+
config.libs << "test"
|
20
|
+
config.pattern = "test/**/*_test.rb"
|
23
21
|
end
|
24
22
|
|
25
23
|
desc "Generate all of the docs"
|
26
24
|
YARD::Rake::YardocTask.new do |config|
|
27
|
-
config.files = Dir[
|
25
|
+
config.files = Dir["lib/**/*.rb"]
|
28
26
|
end
|
29
27
|
|
30
|
-
desc
|
28
|
+
desc "Default: run tests, and generate docs"
|
31
29
|
task :default => [ :test, :yard ]
|
data/authn.gemspec
CHANGED
@@ -1,27 +1,31 @@
|
|
1
|
-
#
|
2
|
-
lib = File.expand_path(
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "authn/version"
|
5
5
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "authn"
|
8
|
+
spec.version = AuthN::VERSION
|
9
|
+
spec.authors = ["Kurtis Rainbolt-Greene"]
|
10
|
+
spec.email = ["me@kurtisrainboltgreene.name"]
|
11
|
+
spec.summary = %q{An incredibly bare bones authentication library}
|
12
|
+
spec.description = spec.summary
|
13
|
+
spec.homepage = "http://krainboltgreene.github.com/authn"
|
14
|
+
spec.license = "MIT"
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
spec.add_runtime_dependency 'activemodel', '~> 3.0'
|
22
|
+
spec.add_runtime_dependency 'astruct', '~> 2.9'
|
23
|
+
spec.add_runtime_dependency 'bcrypt-ruby', '~> 3.0'
|
24
|
+
spec.add_development_dependency "bundler"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "minitest"
|
27
|
+
spec.add_development_dependency "yard"
|
28
|
+
spec.add_development_dependency "kramdown"
|
29
|
+
spec.add_development_dependency "pry"
|
30
|
+
spec.add_development_dependency "coveralls"
|
27
31
|
end
|
data/lib/authn/session.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module AuthN
|
2
2
|
module Session
|
3
3
|
private
|
4
|
+
|
4
5
|
def login(identifiers, klass = AuthN.config.account_klass)
|
5
6
|
generate_session_and_instance_from find_instance_klass(klass).authenticate identifiers
|
6
7
|
end
|
@@ -36,7 +37,7 @@ module AuthN
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def klass_as_name(klass)
|
39
|
-
klass.name.downcase
|
40
|
+
(klass.respond_to?(:name) ? klass.name : klass).downcase
|
40
41
|
end
|
41
42
|
|
42
43
|
def generate_session_and_instance_from(instance)
|
data/lib/authn/version.rb
CHANGED
data/test/lib/authn_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.8.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,88 +9,168 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.0'
|
20
|
+
none: false
|
21
|
+
prerelease: false
|
15
22
|
name: activemodel
|
16
23
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
24
|
requirements:
|
19
25
|
- - ~>
|
20
26
|
- !ruby/object:Gem::Version
|
21
27
|
version: '3.0'
|
28
|
+
none: false
|
22
29
|
type: :runtime
|
23
|
-
|
30
|
+
- !ruby/object:Gem::Dependency
|
24
31
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
32
|
requirements:
|
27
33
|
- - ~>
|
28
34
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
|
35
|
+
version: '2.9'
|
36
|
+
none: false
|
37
|
+
prerelease: false
|
31
38
|
name: astruct
|
32
39
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
40
|
requirements:
|
35
41
|
- - ~>
|
36
42
|
- !ruby/object:Gem::Version
|
37
43
|
version: '2.9'
|
44
|
+
none: false
|
38
45
|
type: :runtime
|
39
|
-
|
46
|
+
- !ruby/object:Gem::Dependency
|
40
47
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
48
|
requirements:
|
43
49
|
- - ~>
|
44
50
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
46
|
-
|
51
|
+
version: '3.0'
|
52
|
+
none: false
|
53
|
+
prerelease: false
|
47
54
|
name: bcrypt-ruby
|
48
55
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
56
|
requirements:
|
51
57
|
- - ~>
|
52
58
|
- !ruby/object:Gem::Version
|
53
59
|
version: '3.0'
|
60
|
+
none: false
|
54
61
|
type: :runtime
|
55
|
-
|
62
|
+
- !ruby/object:Gem::Dependency
|
56
63
|
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
57
68
|
none: false
|
69
|
+
prerelease: false
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ! '>='
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '0'
|
76
|
+
none: false
|
77
|
+
type: :development
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
|
-
|
64
|
-
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
65
84
|
none: false
|
85
|
+
prerelease: false
|
86
|
+
name: rake
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
66
88
|
requirements:
|
67
89
|
- - ! '>='
|
68
90
|
- !ruby/object:Gem::Version
|
69
91
|
version: '0'
|
92
|
+
none: false
|
70
93
|
type: :development
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ! '>='
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
none: false
|
71
101
|
prerelease: false
|
102
|
+
name: minitest
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ! '>='
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
none: false
|
109
|
+
type: :development
|
110
|
+
- !ruby/object:Gem::Dependency
|
72
111
|
version_requirements: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
73
116
|
none: false
|
117
|
+
prerelease: false
|
118
|
+
name: yard
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
74
120
|
requirements:
|
75
121
|
- - ! '>='
|
76
122
|
- !ruby/object:Gem::Version
|
77
123
|
version: '0'
|
124
|
+
none: false
|
125
|
+
type: :development
|
78
126
|
- !ruby/object:Gem::Dependency
|
127
|
+
version_requirements: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
none: false
|
133
|
+
prerelease: false
|
79
134
|
name: kramdown
|
80
135
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
136
|
requirements:
|
83
137
|
- - ! '>='
|
84
138
|
- !ruby/object:Gem::Version
|
85
139
|
version: '0'
|
140
|
+
none: false
|
86
141
|
type: :development
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ! '>='
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
none: false
|
87
149
|
prerelease: false
|
150
|
+
name: pry
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ! '>='
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
none: false
|
157
|
+
type: :development
|
158
|
+
- !ruby/object:Gem::Dependency
|
88
159
|
version_requirements: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
89
164
|
none: false
|
165
|
+
prerelease: false
|
166
|
+
name: coveralls
|
167
|
+
requirement: !ruby/object:Gem::Requirement
|
90
168
|
requirements:
|
91
169
|
- - ! '>='
|
92
170
|
- !ruby/object:Gem::Version
|
93
171
|
version: '0'
|
172
|
+
none: false
|
173
|
+
type: :development
|
94
174
|
description: An incredibly bare bones authentication library
|
95
175
|
email:
|
96
176
|
- me@kurtisrainboltgreene.name
|
@@ -118,32 +198,33 @@ files:
|
|
118
198
|
- test/lib/authn/session_test.rb
|
119
199
|
- test/lib/authn_test.rb
|
120
200
|
homepage: http://krainboltgreene.github.com/authn
|
121
|
-
licenses:
|
201
|
+
licenses:
|
202
|
+
- MIT
|
122
203
|
post_install_message:
|
123
204
|
rdoc_options: []
|
124
205
|
require_paths:
|
125
206
|
- lib
|
126
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
208
|
requirements:
|
129
209
|
- - ! '>='
|
130
210
|
- !ruby/object:Gem::Version
|
211
|
+
hash: 2952794838346421510
|
131
212
|
version: '0'
|
132
213
|
segments:
|
133
214
|
- 0
|
134
|
-
hash: 2261638177236117174
|
135
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
215
|
none: false
|
216
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
217
|
requirements:
|
138
218
|
- - ! '>='
|
139
219
|
- !ruby/object:Gem::Version
|
220
|
+
hash: 2952794838346421510
|
140
221
|
version: '0'
|
141
222
|
segments:
|
142
223
|
- 0
|
143
|
-
|
224
|
+
none: false
|
144
225
|
requirements: []
|
145
226
|
rubyforge_project:
|
146
|
-
rubygems_version: 1.8.
|
227
|
+
rubygems_version: 1.8.25
|
147
228
|
signing_key:
|
148
229
|
specification_version: 3
|
149
230
|
summary: An incredibly bare bones authentication library
|