monban 0.3.1 → 1.0.0

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
2
  SHA1:
3
- metadata.gz: 5c8d75fe9becef4e85c00188afc6bd4ce6cc2add
4
- data.tar.gz: 0a017b45d82756152678e35a3cbb0cd5c6caf362
3
+ metadata.gz: c994797ca1338ca8d78bb15bdfeaa5585bdf555a
4
+ data.tar.gz: 0ae31c41b9a1b9b08e8888a354d440051ed30eef
5
5
  SHA512:
6
- metadata.gz: 86de815a9526d7f46a6af686918164ae081319ce596e0ab1f753113aeb43106169eb8c6b3f230b28218ced996bd5099f650d06460dc8c69fc007386fff4fd37b
7
- data.tar.gz: 36865675f616268e793634a71e73a7243827a152d14de39ebf7a971b580439a8bd5435f4fdf7acf7f6ea5bcd348652e183ecde6a63e3bb76cab03eb006a453bf
6
+ metadata.gz: 3d4db22086b7359a92202a55cb033f5255434146e214d655974db3ae8d4b039232188bbfc41f715eb6ce040c80c02b55295b51dc2799c6ffe77f76a4ad51ffa7
7
+ data.tar.gz: ccd82bf884f619b75f15b0fd4a3d91248f600d0d3aa660964c6a565a20623cf8e868eac62ac91a8bde5caae667d54693f0e11f1e2494fc3c6c49311bc8f92302
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- monban (0.2.1)
4
+ monban (1.0.0)
5
5
  bcrypt
6
6
  rails
7
7
  warden
@@ -46,8 +46,8 @@ GEM
46
46
  minitest (~> 5.1)
47
47
  thread_safe (~> 0.3, >= 0.3.4)
48
48
  tzinfo (~> 1.1)
49
- arel (6.0.0)
50
- bcrypt (3.1.10)
49
+ arel (6.0.3)
50
+ bcrypt (3.1.11)
51
51
  builder (3.2.2)
52
52
  capybara (2.4.4)
53
53
  mime-types (>= 1.16)
@@ -55,16 +55,17 @@ GEM
55
55
  rack (>= 1.0.0)
56
56
  rack-test (>= 0.5.4)
57
57
  xpath (~> 2.0)
58
+ concurrent-ruby (1.0.2)
58
59
  diff-lcs (1.2.5)
59
60
  erubis (2.7.0)
60
- globalid (0.3.5)
61
+ globalid (0.3.6)
61
62
  activesupport (>= 4.1.0)
62
63
  i18n (0.7.0)
63
64
  json (1.8.3)
64
65
  loofah (2.0.2)
65
66
  nokogiri (>= 1.5.9)
66
- mail (2.6.3)
67
- mime-types (>= 1.16, < 3)
67
+ mail (2.6.4)
68
+ mime-types (>= 1.16, < 4)
68
69
  mime-types (2.6.1)
69
70
  mini_portile (0.6.2)
70
71
  minitest (5.7.0)
@@ -119,18 +120,19 @@ GEM
119
120
  rspec-mocks (~> 3.3.0)
120
121
  rspec-support (~> 3.3.0)
121
122
  rspec-support (3.3.0)
122
- sprockets (3.2.0)
123
- rack (~> 1.0)
124
- sprockets-rails (2.3.1)
125
- actionpack (>= 3.0)
126
- activesupport (>= 3.0)
127
- sprockets (>= 2.8, < 4.0)
123
+ sprockets (3.6.0)
124
+ concurrent-ruby (~> 1.0)
125
+ rack (> 1, < 3)
126
+ sprockets-rails (3.0.4)
127
+ actionpack (>= 4.0)
128
+ activesupport (>= 4.0)
129
+ sprockets (>= 3.0.0)
128
130
  sqlite3 (1.3.10)
129
131
  thor (0.19.1)
130
132
  thread_safe (0.3.5)
131
133
  tzinfo (1.2.2)
132
134
  thread_safe (~> 0.1)
133
- warden (1.2.3)
135
+ warden (1.2.6)
134
136
  rack (>= 1.0)
135
137
  xpath (2.0.0)
136
138
  nokogiri (~> 1.3)
@@ -146,3 +148,6 @@ DEPENDENCIES
146
148
  rspec
147
149
  rspec-rails
148
150
  sqlite3
151
+
152
+ BUNDLED WITH
153
+ 1.11.2
data/NEWS.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.0
2
+ * Do not perform lookup if no params are passed to lookup
3
+ * Add param transformer for sanitizing and normalizing
4
+
1
5
  == 0.3.1
2
6
  * Extend private interface for services
3
7
 
data/lib/monban.rb CHANGED
@@ -8,6 +8,7 @@ require "monban/failure_app"
8
8
  require "monban/back_door"
9
9
  require "monban/warden_setup"
10
10
  require "monban/field_map"
11
+ require "monban/param_transformer"
11
12
  require "monban/strategies/password_strategy"
12
13
  require "active_support/core_ext/module/attribute_accessors"
13
14
 
@@ -73,8 +74,10 @@ module Monban
73
74
  # @return [User] if user is found
74
75
  # @return [nil] if no user is found
75
76
  def self.lookup(params, field_map)
76
- fields = FieldMap.new(params, field_map).to_fields
77
- self.config.find_method.call(fields)
77
+ if params.present?
78
+ fields = FieldMap.new(params, field_map).to_fields
79
+ self.config.find_method.call(fields)
80
+ end
78
81
  end
79
82
 
80
83
  # Puts monban into test mode. This will disable hashing passwords
@@ -12,6 +12,7 @@ module Monban
12
12
  attr_accessor :no_login_handler, :no_login_redirect
13
13
  attr_accessor :authentication_strategy
14
14
  attr_accessor :warden_serialize_into_session, :warden_serialize_from_session
15
+ attr_accessor :param_transformations
15
16
 
16
17
  attr_writer :user_class
17
18
 
@@ -21,13 +22,17 @@ module Monban
21
22
  setup_notices
22
23
  setup_services
23
24
  setup_warden
25
+ setup_param_transformations
24
26
  end
25
27
 
26
28
  # Default creation method. Can be overriden via {Monban.configure}
27
29
  #
28
30
  # @see #creation_method=
29
31
  def default_creation_method
30
- ->(params) { Monban.config.user_class.create(params) }
32
+ ->(params) do
33
+ updated_params = transform_params(params)
34
+ Monban.config.user_class.create(updated_params)
35
+ end
31
36
  end
32
37
 
33
38
  # Default hashing method. Can be overriden via {Monban.configure}
@@ -48,7 +53,10 @@ module Monban
48
53
  # @see #find_method=
49
54
  # @see Monban.config.user_class
50
55
  def default_find_method
51
- ->(params) { Monban.config.user_class.find_by(params) }
56
+ ->(params) do
57
+ updated_params = transform_params(params)
58
+ Monban.config.user_class.find_by(updated_params)
59
+ end
52
60
  end
53
61
 
54
62
  # Default token comparison method. Can be overriden via {Monban.configure}
@@ -123,5 +131,15 @@ module Monban
123
131
  @warden_serialize_into_session = -> (user) { user.id }
124
132
  @warden_serialize_from_session = -> (id) { Monban.config.user_class.find_by(id: id) }
125
133
  end
134
+
135
+ def setup_param_transformations
136
+ @param_transformations = {
137
+ email: ->(value) { value.downcase }
138
+ }
139
+ end
140
+
141
+ def transform_params(params)
142
+ ParamTransformer.new(params, param_transformations).to_h
143
+ end
126
144
  end
127
145
  end
@@ -0,0 +1,38 @@
1
+ module Monban
2
+ # Parameter transformer. Sanitizes and transforms parameter values
3
+ # @since 1.0.0
4
+ class ParamTransformer
5
+ # Initialize parameter transformer
6
+ #
7
+ # @param params [ActionController::Parameters] parameters to be altered
8
+ def initialize(params, transformations)
9
+ @params = params
10
+ @transformations = transformations
11
+ end
12
+
13
+ # Returns the transformed parameters
14
+ def to_h
15
+ sanitized_params.each_with_object({}) do |(key, value), hash|
16
+ hash[key] = transform(key, value)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :params, :transformations
23
+
24
+ def sanitized_params
25
+ params.to_h
26
+ end
27
+
28
+ def transform(key, value)
29
+ return value unless value.is_a? String
30
+
31
+ if transformations.key?(key)
32
+ transformations[key].call(value)
33
+ else
34
+ value
35
+ end
36
+ end
37
+ end
38
+ end
@@ -16,7 +16,7 @@ module Monban
16
16
  # Performs the service
17
17
  # @see Monban::Configuration.default_creation_method
18
18
  def perform
19
- Monban.config.creation_method.call(user_params.to_hash)
19
+ Monban.config.creation_method.call(user_params)
20
20
  end
21
21
 
22
22
  private
@@ -1,4 +1,4 @@
1
1
  module Monban
2
- # 0.3.1
3
- VERSION = "0.3.1"
2
+ # 1.0.0
3
+ VERSION = "1.0.0"
4
4
  end
data/spec/monban_spec.rb CHANGED
@@ -12,9 +12,9 @@ describe 'Monban' do
12
12
  expect(Monban.compare_token('password', 'password')).to be_truthy
13
13
  end
14
14
 
15
- it "allows lookup with a field_map" do
15
+ it "does not lookup with empty params" do
16
16
  allow(Monban::FieldMap).to receive(:new).and_return(fake_field_map)
17
- with_monban_config(find_method: -> (conditions) { true }) do
17
+ with_monban_config(find_method: -> (conditions) { raise }) do
18
18
  expect(-> { Monban.lookup({}, {}) }).not_to raise_exception
19
19
  end
20
20
  end
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,7 @@ require 'capybara'
9
9
 
10
10
  RSpec.configure do |config|
11
11
  config.include Warden::Test::Helpers
12
- config.include Monban::Test::Helpers, type: :feature
12
+ config.include Monban::Test::Helpers, type: :feature
13
13
  config.order = "random"
14
14
  end
15
15
 
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.3.1
4
+ version: 1.0.0
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: 2016-03-16 00:00:00.000000000 Z
12
+ date: 2016-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -161,6 +161,7 @@ files:
161
161
  - lib/monban/controller_helpers.rb
162
162
  - lib/monban/failure_app.rb
163
163
  - lib/monban/field_map.rb
164
+ - lib/monban/param_transformer.rb
164
165
  - lib/monban/railtie.rb
165
166
  - lib/monban/services.rb
166
167
  - lib/monban/services/authentication.rb
@@ -254,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
255
  version: '0'
255
256
  requirements: []
256
257
  rubyforge_project:
257
- rubygems_version: 2.4.5.1
258
+ rubygems_version: 2.5.1
258
259
  signing_key:
259
260
  specification_version: 4
260
261
  summary: Making rails authentication as simple as possible