role_based_authorization 0.1.14 → 0.1.15

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.14
1
+ 0.1.15
@@ -42,13 +42,27 @@ module RoleBasedAuthorization
42
42
  url_options
43
43
  end
44
44
 
45
+
46
+ # cleans options so that they are good to be passed to exists_matching_rule
47
+ def cleanup_options(opts)
48
+ opts.reverse_merge!( :user => current_user, :controller => controller_name, :ids => {} )
49
+ user, controller, action, ids = opts.values_at( :user, :controller, :action, :ids )
50
+ ids.reverse_merge!( opts.reject { |key,value| key.to_s !~ /(_id\Z)|(\Aid\Z)/ } )
51
+
52
+ { :user => user,
53
+ :controllers => [controller,'application'],
54
+ :actions => [:all,action],
55
+ :ids => ids }
56
+ end
57
+
45
58
 
46
59
  # Returns true if one of the rules defined for this controller matches
47
60
  # the given options
48
61
  def exists_matching_rule? options
49
62
  rules = self.class.role_auth_rules
50
63
 
51
- return options[:controllers].find do |controller|
64
+ # !! is an idiom for transforming any value in true/false (e.g., !!nil is exactly false)
65
+ !!options[:controllers].find do |controller|
52
66
  AUTHORIZATION_LOGGER.debug("current controller: %s" % [controller])
53
67
 
54
68
  rules_for_controller = rules[controller]
@@ -71,22 +85,13 @@ module RoleBasedAuthorization
71
85
  # exiting immediately if not logged in
72
86
  return false if respond_to?(:logged_in?) && !logged_in?
73
87
 
74
- opts.reverse_merge!( :user => current_user, :controller => controller_name, :ids => {} )
75
- user, controller, action, ids = opts.values_at( :user, :controller, :action, :ids )
76
- ids.reverse_merge!( opts.reject { |key,value| key.to_s !~ /(_id\Z)|(\Aid\Z)/ } )
77
-
78
- new_options = { :user => user,
79
- :controllers => [controller,'application'],
80
- :actions => [:all,action],
81
- :ids => ids }
82
-
83
- return exists_matching_rule?( new_options ) != nil
88
+ exists_matching_rule?( cleanup_options(opts) )
84
89
  end
85
90
 
86
91
  # wraps some logging around do_authorize_action?.
87
92
  def authorize_action? opts = {}
88
93
  AUTHORIZATION_LOGGER.info("access request. options: %s" % [opts.inspect])
89
- result = do_authorize_action? opts
94
+ result = do_authorize_action?(opts)
90
95
  AUTHORIZATION_LOGGER.info("returning #{result}")
91
96
 
92
97
  return result
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{role_based_authorization}
8
- s.version = "0.1.14"
8
+ s.version = "0.1.15"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Roberto Esposito"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: role_based_authorization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Esposito