role_authorization 0.4.0 → 0.4.1

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.
@@ -47,7 +47,7 @@ module RoleAuthorization
47
47
 
48
48
  def authorized_action?(controller_klass, controller, action, id = nil)
49
49
  # by default admins see everything
50
- return true if admin?
50
+ return true if current_user && current_user.admin?
51
51
 
52
52
  ruleset = self.class.ruleset[controller]
53
53
  groups = RoleAuthorization::AllowGroup.get(self.class.allowable_groups[controller])
@@ -82,30 +82,49 @@ module RoleAuthorization
82
82
 
83
83
  def authorized?(url, method = nil)
84
84
  return false unless url
85
- return true if admin?
85
+ return true if current_user && current_user.admin?
86
86
 
87
- method ||= (params[:method] || request.method)
88
- url_parts = URI::split(url.strip)
89
- path = url_parts[5]
87
+ unless url.is_a?(Hash)
88
+ method ||= (params[:method] || request.method)
89
+ url_parts = URI::split(url.strip)
90
+ path = url_parts[5]
91
+ end
90
92
 
91
93
  begin
92
- hash = Rails.application.routes.recognize_path(path, :method => method)
93
- return authorized_action?(self, hash[:controller], hash[:action].to_sym, hash[:id]) if hash
94
+ hash = if url.is_a?(Hash)
95
+ url
96
+ else
97
+ Rails.application.routes.recognize_path(path, :method => method)
98
+ end
99
+
100
+ if hash
101
+ controller_klass = if self.controller_name == hash[:controller]
102
+ self
103
+ else
104
+ klass = (hash[:controller].camelize + "Controller").constantize.new
105
+ klass.params = hash
106
+ klass
107
+ end
108
+
109
+ return authorized_action?(controller_klass, hash[:controller], hash[:action].to_sym, hash[:id])
110
+ end
94
111
  rescue Exception => e
95
112
  Rails.logger.error e.inspect
96
113
  e.backtrace.each {|line| Rails.logger.error line }
97
114
  # continue on
98
115
  end
99
116
 
100
- # Mailto link
101
- return true if url =~ /^mailto:/
117
+ unless url.is_a?(Hash)
118
+ # Mailto link
119
+ return true if url =~ /^mailto:/
102
120
 
103
- # Public file
104
- file = File.join(Rails.root, 'public', url)
105
- return true if File.exists?(file)
121
+ # Public file
122
+ file = File.join(Rails.root, 'public', url)
123
+ return true if File.exists?(file)
106
124
 
107
- # Passing in different domain
108
- return remote_url?(url_parts[2])
125
+ # Passing in different domain
126
+ return remote_url?(url_parts[2])
127
+ end
109
128
  end
110
129
 
111
130
  def remote_url?(domain = nil)
@@ -72,7 +72,7 @@ module RoleAuthorization
72
72
 
73
73
  [global_roles, object_roles.values].flatten.map do |role_name|
74
74
  if persisted_roles.delete(role_name).nil?
75
- klass.create(:name => role_name, :nickname => nicknames[role_name])
75
+ klass.create(:name => role_name.to_s, :nickname => nicknames[role_name].to_s)
76
76
  end
77
77
  end
78
78
 
@@ -6,7 +6,9 @@ module RoleAuthorization
6
6
  base.send :include, InstanceMethods
7
7
  base.class_eval do
8
8
  validates_uniqueness_of :name
9
- serialize :user_ids
9
+ if defined?(ActiveRecord::Base)
10
+ serialize :user_ids
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -4,8 +4,24 @@ module RoleAuthorization
4
4
  base.send :extend, ClassMethods
5
5
  base.send :include, InstanceMethods
6
6
 
7
- base.class_eval do
8
- serialize :serialized_roles
7
+ if defined?(ActiveRecord::Base)
8
+ base.class_eval do
9
+ serialize :serialized_roles
10
+ end
11
+ elsif defined?(Mongoid::Attributes)
12
+ base.class_eval do
13
+ set_callback(:save, :before) do |user|
14
+ write_attribute(:serialized_roles, YAML.dump(@serialized_roles || {}))
15
+ end
16
+
17
+ def serialized_roles
18
+ @serialized_roles ||= (YAML.load(read_attribute(:serialized_roles).to_s) || {})
19
+ end
20
+
21
+ def serialized_roles=(value)
22
+ @serialized_roles = value
23
+ end
24
+ end
9
25
  end
10
26
 
11
27
  RoleAuthorization::Roles::Manager.user_klass = base
@@ -1,3 +1,3 @@
1
1
  module RoleAuthorization
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
@@ -49,11 +49,9 @@ module RoleAuthorization
49
49
  end
50
50
 
51
51
  def enable_view_security
52
- if RoleAuthorization.view_security
53
- require 'role_authorization/view_security'
54
- unless ActionView::Base.instance_methods.include? :link_to_or_show
55
- ActionView::Base.class_eval { include RoleAuthorization::ViewSecurity }
56
- end
52
+ require 'role_authorization/view_security'
53
+ unless ActionView::Base.instance_methods.include? :link_to_or_show
54
+ ActionView::Base.class_eval { include RoleAuthorization::ViewSecurity }
57
55
  end
58
56
  end
59
57
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: role_authorization
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.0
5
+ version: 0.4.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - John 'asceth' Long
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-21 00:00:00 -04:00
13
+ date: 2011-04-12 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency