u-authorization 1.0.0 → 1.1.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/authorization.rb +13 -4
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a8a0a045b9fdd6b4f30c7c6b376635b2665b2609450226a329a2f4ad93e8747
4
- data.tar.gz: 3f52e3df4e835319ca288750b7cedc85cd83189d4ec91054f1559a9f30ceb1cd
3
+ metadata.gz: 06c108c527980c647df86862a7f4f0499d536cbb2c44c36cf440d835871ee0de
4
+ data.tar.gz: dcf79b3d63c780012dd6dbb8caf22bb56499ad3244823135fac23cfadbb06034
5
5
  SHA512:
6
- metadata.gz: a8a2e6243af66478cf723b9df7662eeeaa8c31bc53b487a90e7ba8b501c4546b55b1fcfec416bb917f7bf05a6fb1291216475fec952590c88ec11515a6cc7125
7
- data.tar.gz: 104a3e02d545745efdfd0ed189725a04caaf2dd1c0c9a2abff44ef0cd8f1c11ad76e02f3886b6fa3f24c970616f24da187da3185794b495c5287d096c45baf03
6
+ metadata.gz: 327d5890be7a1b2efbc51d22ef14f106510989096eb6d7d46f9c17eadc51ba7fd9dac5671b0cd90ebee162009899c988e47cc304bac5e8f905eace61cfef1e51
7
+ data.tar.gz: 2bd82ecd1054b103b1b0d544941b97c40e21799d90dcb09849f00d0a3f72b5f9cea131b929ba1f8c34b8eb1c6644b59ad3bf677a96a9c0f0049799358af7ef23
data/authorization.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Authorization
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
 
6
6
  MapValuesAsDowncasedStrings = -> (values) do
7
7
  Array(values).map { |value| String(value).downcase }
@@ -130,7 +130,9 @@ module Authorization
130
130
  def add_policy(key, policy_klass)
131
131
  raise ArgumentError, 'key must be a Symbol' unless key.is_a?(Symbol)
132
132
 
133
- @policies[key] ||= Policy.type(policy_klass)
133
+ default_ref = key == :default && policy_klass.is_a?(Symbol)
134
+
135
+ @policies[key] ||= default_ref ? policy_klass : Policy.type(policy_klass)
134
136
 
135
137
  self
136
138
  end
@@ -140,13 +142,13 @@ module Authorization
140
142
  raise ArgumentError, "policies must be a Hash (key => #{Policy.name})"
141
143
  end
142
144
 
143
- new_policies.each &method(:add_policy)
145
+ new_policies.each(&method(:add_policy))
144
146
 
145
147
  self
146
148
  end
147
149
 
148
150
  def to(policy_key, subject: nil)
149
- policy_klass = @policies.fetch(policy_key, Policy)
151
+ policy_klass = fetch_policy(policy_key)
150
152
 
151
153
  return policy_klass.new(user, subject, permissions: permissions) if subject
152
154
 
@@ -160,5 +162,12 @@ module Authorization
160
162
  def policy(key = :default, subject: nil)
161
163
  to(key, subject: subject)
162
164
  end
165
+
166
+ private
167
+
168
+ def fetch_policy(policy_key)
169
+ value = @policies.fetch(policy_key, Policy)
170
+ value.is_a?(Symbol) ? fetch_policy(value) : value
171
+ end
163
172
  end
164
173
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: u-authorization
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Serradura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-18 00:00:00.000000000 Z
11
+ date: 2018-11-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Simple authorization library and role managment for Ruby.
14
14
  email: rodrigo.serradura@gmail.com