monban 0.0.8 → 0.0.9
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 +4 -4
- data/Gemfile.lock +6 -14
- data/README.md +18 -9
- data/lib/monban.rb +3 -1
- data/lib/monban/configuration.rb +8 -0
- data/lib/monban/controller_helpers.rb +4 -3
- data/lib/monban/services/sign_up.rb +1 -1
- data/lib/monban/version.rb +1 -1
- data/monban.gemspec +0 -2
- data/spec/monban/services/sign_up_spec.rb +11 -0
- metadata +2 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b85066515d8a269e94b2716637b08b008070cca5
|
4
|
+
data.tar.gz: 032a727fa968f9fc87ca361c91fd5caf8a4251ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f269fe95461228bfc61df0a541d98ba970aa884b7069dff4f4893b4c0e7f41db2589be0928d51154afd6dc0f273156cce10554ba1a9e70a3cce6bfa560e67c6
|
7
|
+
data.tar.gz: 02fd73c726d461da78cc952848d83e367eb05952a97a08491dd9a87c0e2462ca6a7ab98f66f02e8210859b4192d431b6f51812592951089889065e28005a72da
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
monban (0.0.
|
4
|
+
monban (0.0.8)
|
5
5
|
bcrypt-ruby
|
6
6
|
rails
|
7
7
|
warden
|
@@ -38,8 +38,8 @@ GEM
|
|
38
38
|
activesupport (3.2.11)
|
39
39
|
i18n (~> 0.6)
|
40
40
|
multi_json (~> 1.0)
|
41
|
-
arel (3.0.
|
42
|
-
bcrypt-ruby (3.
|
41
|
+
arel (3.0.3)
|
42
|
+
bcrypt-ruby (3.1.2)
|
43
43
|
builder (3.0.4)
|
44
44
|
capybara (2.0.2)
|
45
45
|
mime-types (>= 1.16)
|
@@ -50,7 +50,6 @@ GEM
|
|
50
50
|
xpath (~> 1.0.0)
|
51
51
|
childprocess (0.3.7)
|
52
52
|
ffi (~> 1.0, >= 1.0.6)
|
53
|
-
coderay (1.0.8)
|
54
53
|
diff-lcs (1.1.3)
|
55
54
|
erubis (2.7.0)
|
56
55
|
ffi (1.3.1)
|
@@ -62,15 +61,10 @@ GEM
|
|
62
61
|
i18n (>= 0.4.0)
|
63
62
|
mime-types (~> 1.16)
|
64
63
|
treetop (~> 1.4.8)
|
65
|
-
method_source (0.8.1)
|
66
64
|
mime-types (1.20.1)
|
67
65
|
multi_json (1.5.0)
|
68
66
|
nokogiri (1.5.6)
|
69
67
|
polyglot (0.3.3)
|
70
|
-
pry (0.9.11.4)
|
71
|
-
coderay (~> 1.0.5)
|
72
|
-
method_source (~> 0.8)
|
73
|
-
slop (~> 3.4)
|
74
68
|
rack (1.4.4)
|
75
69
|
rack-cache (1.2)
|
76
70
|
rack (>= 0.4)
|
@@ -117,7 +111,6 @@ GEM
|
|
117
111
|
multi_json (~> 1.0)
|
118
112
|
rubyzip
|
119
113
|
websocket (~> 1.0.4)
|
120
|
-
slop (3.4.3)
|
121
114
|
sprockets (2.2.2)
|
122
115
|
hike (~> 1.2)
|
123
116
|
multi_json (~> 1.0)
|
@@ -126,11 +119,11 @@ GEM
|
|
126
119
|
sqlite3 (1.3.7)
|
127
120
|
thor (0.17.0)
|
128
121
|
tilt (1.3.3)
|
129
|
-
treetop (1.4.
|
122
|
+
treetop (1.4.15)
|
130
123
|
polyglot
|
131
124
|
polyglot (>= 0.3.1)
|
132
|
-
tzinfo (0.3.
|
133
|
-
warden (1.2.
|
125
|
+
tzinfo (0.3.38)
|
126
|
+
warden (1.2.3)
|
134
127
|
rack (>= 1.0)
|
135
128
|
websocket (1.0.7)
|
136
129
|
xpath (1.0.0)
|
@@ -143,7 +136,6 @@ DEPENDENCIES
|
|
143
136
|
active_hash
|
144
137
|
capybara
|
145
138
|
monban!
|
146
|
-
pry
|
147
139
|
rake
|
148
140
|
rspec
|
149
141
|
rspec-rails
|
data/README.md
CHANGED
@@ -4,16 +4,16 @@
|
|
4
4
|
[](https://codeclimate.com/github/halogenandtoast/monban)
|
5
5
|
|
6
6
|
|
7
|
-
Monban is designed to be very simple and extensible user authentication
|
8
|
-
|
7
|
+
Monban is designed to be a very simple and extensible user authentication
|
8
|
+
library for rails. Its goal is to give all the power to the developer instead
|
9
|
+
of forcing them to make Monban work with their system.
|
9
10
|
|
10
11
|
# Why use Monban?
|
11
12
|
|
12
13
|
Monban makes authentication simple:
|
13
14
|
|
14
|
-
-
|
15
|
+
- Easy to use in tests with dependency injection
|
15
16
|
- Provides convenient controller helpers
|
16
|
-
- Provides a rails generator for default controllers and views
|
17
17
|
- Very customizable
|
18
18
|
|
19
19
|
Monban doesn't do the following:
|
@@ -33,21 +33,29 @@ Then inside of your ApplicationController add the following:
|
|
33
33
|
|
34
34
|
include Monban::ControllerHelpers
|
35
35
|
|
36
|
-
|
36
|
+
And you're ready to start designing your authentication system.
|
37
|
+
|
38
|
+
## Scaffold
|
39
|
+
|
40
|
+
If you don't want to add all the components yourself, you may instead generate
|
41
|
+
a scaffold to start with by running:
|
37
42
|
|
38
43
|
rails g monban:scaffold
|
39
44
|
|
40
|
-
This will generate a bare bones starting point. If you don't want the full
|
45
|
+
This will generate a bare bones starting point. If you don't want the full
|
46
|
+
stack you can just generate some controllers with:
|
41
47
|
|
42
48
|
rails g monban:controllers
|
43
49
|
|
44
50
|
## Usage
|
45
51
|
|
46
|
-
Monban does currently have some out of the box expectations, but you can
|
52
|
+
Monban does currently have some out of the box expectations, but you can
|
53
|
+
configure and change any of these:
|
47
54
|
|
48
55
|
- By default the model should be called `User`
|
56
|
+
- Monban expects your user model to respond to create
|
49
57
|
- You should have an `email` and `password_digest` column on your `User`
|
50
|
-
- Passwords will be
|
58
|
+
- Passwords will be handled with BCrypt
|
51
59
|
|
52
60
|
### Controller Additions
|
53
61
|
|
@@ -56,8 +64,9 @@ Monban provides the following controller methods:
|
|
56
64
|
- `sign_in(user)`
|
57
65
|
- `sign_out`
|
58
66
|
- `sign_up(user)`
|
59
|
-
- `authenticate_session(session_params)`
|
60
67
|
- `authenticate(user, password)`
|
68
|
+
- `authenticate_session(session_params)`
|
69
|
+
- `reset_password(user, password)`
|
61
70
|
|
62
71
|
These helpers:
|
63
72
|
|
data/lib/monban.rb
CHANGED
@@ -41,7 +41,9 @@ module Monban
|
|
41
41
|
def self.test_mode!
|
42
42
|
Warden.test_mode!
|
43
43
|
config.encryption_method = ->(password) { password }
|
44
|
-
config.token_comparison = ->(digest, unencrypted_password)
|
44
|
+
config.token_comparison = ->(digest, unencrypted_password) do
|
45
|
+
digest == unencrypted_password
|
46
|
+
end
|
45
47
|
end
|
46
48
|
|
47
49
|
def self.test_reset!
|
data/lib/monban/configuration.rb
CHANGED
@@ -1,11 +1,13 @@
|
|
1
1
|
module Monban
|
2
2
|
class Configuration
|
3
|
+
|
3
4
|
attr_accessor :user_class, :user_token_field, :user_token_store_field
|
4
5
|
attr_accessor :encryption_method, :token_comparison, :user_lookup_field
|
5
6
|
attr_accessor :sign_in_notice
|
6
7
|
attr_accessor :sign_in_service, :sign_up_service, :sign_out_service
|
7
8
|
attr_accessor :authentication_service, :password_reset_service
|
8
9
|
attr_accessor :failure_app
|
10
|
+
attr_accessor :creation_method
|
9
11
|
|
10
12
|
def initialize
|
11
13
|
setup_class_defaults
|
@@ -15,6 +17,10 @@ module Monban
|
|
15
17
|
setup_requirements
|
16
18
|
end
|
17
19
|
|
20
|
+
def default_creation_method
|
21
|
+
->(params) { Monban.user_class.create(params) }
|
22
|
+
end
|
23
|
+
|
18
24
|
def default_encryption_method
|
19
25
|
->(token) { BCrypt::Password.create(token) }
|
20
26
|
end
|
@@ -41,6 +47,7 @@ module Monban
|
|
41
47
|
@user_token_field = :password
|
42
48
|
@user_token_store_field = :password_digest
|
43
49
|
@user_lookup_field = :email
|
50
|
+
@creation_method = default_creation_method
|
44
51
|
end
|
45
52
|
|
46
53
|
def setup_services
|
@@ -55,4 +62,5 @@ module Monban
|
|
55
62
|
@failure_app = lambda{|e|[401, {"Content-Type" => "text/plain"}, ["Authorization Failed"]] }
|
56
63
|
end
|
57
64
|
end
|
65
|
+
|
58
66
|
end
|
@@ -29,8 +29,9 @@ module Monban
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def authenticate_session session_params, field_map = nil
|
32
|
-
|
33
|
-
|
32
|
+
token_field = Monban.config.user_token_field
|
33
|
+
password = session_params.fetch(token_field)
|
34
|
+
user = Monban.lookup(session_params.except(token_field), field_map)
|
34
35
|
authenticate(user, password)
|
35
36
|
end
|
36
37
|
|
@@ -57,7 +58,7 @@ module Monban
|
|
57
58
|
def require_login
|
58
59
|
unless signed_in?
|
59
60
|
flash.notice = Monban.config.sign_in_notice
|
60
|
-
redirect_to controller: 'sessions', action: 'new'
|
61
|
+
redirect_to controller: '/sessions', action: 'new'
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
data/lib/monban/version.rb
CHANGED
data/monban.gemspec
CHANGED
@@ -24,8 +24,6 @@ Gem::Specification.new do |gem|
|
|
24
24
|
gem.add_development_dependency 'rspec'
|
25
25
|
gem.add_development_dependency 'rspec-rails'
|
26
26
|
gem.add_development_dependency 'capybara'
|
27
|
-
gem.add_development_dependency 'pry'
|
28
27
|
gem.add_development_dependency 'sqlite3'
|
29
28
|
gem.add_development_dependency 'active_hash'
|
30
|
-
gem.add_development_dependency 'pry'
|
31
29
|
end
|
@@ -14,4 +14,15 @@ describe Monban::SignUp, '#perform' do
|
|
14
14
|
|
15
15
|
Monban::SignUp.new(user_params).perform
|
16
16
|
end
|
17
|
+
|
18
|
+
it 'creates a user from the configured user creation method' do
|
19
|
+
user_create_double = ->(user_params) { }
|
20
|
+
user_create_double.should_receive(:call) do |args|
|
21
|
+
Monban.compare_token(args[:password_digest], 'password').should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
user_params = { email: 'email@example.com', password: 'password' }
|
25
|
+
Monban.config.creation_method = user_create_double
|
26
|
+
Monban::SignUp.new(user_params).perform
|
27
|
+
end
|
17
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monban
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- halogenandtoast
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -109,20 +109,6 @@ dependencies:
|
|
109
109
|
- - '>='
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: pry
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - '>='
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
119
|
-
type: :development
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
112
|
- !ruby/object:Gem::Dependency
|
127
113
|
name: sqlite3
|
128
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,20 +137,6 @@ dependencies:
|
|
151
137
|
- - '>='
|
152
138
|
- !ruby/object:Gem::Version
|
153
139
|
version: '0'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: pry
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - '>='
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '0'
|
161
|
-
type: :development
|
162
|
-
prerelease: false
|
163
|
-
version_requirements: !ruby/object:Gem::Requirement
|
164
|
-
requirements:
|
165
|
-
- - '>='
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '0'
|
168
140
|
description: simple rails authentication
|
169
141
|
email:
|
170
142
|
- halogenandtoast@gmail.com
|