flexible_accessibility 0.1.8.pre → 0.1.95.pre

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/Rakefile CHANGED
@@ -15,7 +15,7 @@ require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "flexible_accessibility"
18
- gem.version = "0.1.8.pre"
18
+ gem.version = "0.1.95.pre"
19
19
  gem.homepage = "http://github.com/mochnatiy/flexible_accessibility"
20
20
  gem.license = "MIT"
21
21
  gem.summary = %Q{Flexible access control system}
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "flexible_accessibility"
8
- s.version = "0.1.8.pre"
8
+ s.version = "0.1.95.pre"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sergey Awanesov"]
12
- s.date = "2012-07-16"
12
+ s.date = "2012-07-18"
13
13
  s.description = "Flexible access control system for your rails application. Based on analysis of controller actions"
14
14
  s.email = "sergey.awanesov@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -6,14 +6,11 @@ module FlexibleAccessibility
6
6
  def skip_authorization_here
7
7
  self.instance_variable_set :@_route_permitted, true
8
8
  self.instance_variable_set :@_checkable_routes, []
9
- #self.send :before_filter, :check_if_route_permitted
10
9
  end
11
10
 
12
11
  # Macro for define authorization
13
12
  def authorize args={}
14
13
  self.instance_variable_set :@_route_permitted, false
15
- #self.send :before_filter, :check_permission_to_route
16
- #self.send :before_filter, :check_if_route_permitted
17
14
  set_actions_to_authorize args
18
15
  end
19
16
 
@@ -33,13 +30,13 @@ module FlexibleAccessibility
33
30
  end
34
31
 
35
32
  # We checks url for each link in view to show it
36
- def has_access? controller, action
37
- Permission.is_action_permitted_for_user? "#{controller}##{action}", current_user
33
+ def has_access? permission, user
34
+ Permission.is_action_permitted_for_user? permission, user
38
35
  end
39
36
  end
40
37
  end
41
38
 
42
- #
39
+ # We include methods in ActionController::Base
43
40
  if defined? ActionController::Base
44
41
  ActionController::Base.class_eval do
45
42
  include FlexibleAccessibility::ControllerMethods
@@ -1,21 +1,30 @@
1
1
  module FlexibleAccessibility
2
2
  class Permission
3
+ attr_reader :controller
4
+ attr_reader :actions
5
+
6
+ def initialize args={}
7
+ @controller = args[:controller]
8
+ @actions = args[:actions]
9
+ end
10
+
3
11
  class << self
4
12
  def all
5
- permissions = {}
13
+ permissions = []
6
14
  Utils.new.get_controllers.each do |klass|
7
- permissions[klass.to_sym] = klass.camelize.constantize.instance_variable_get(:@_checkable_routes).collect{ |a| a.to_s }.join(', ')
15
+ permissions << Permission.new(:controller => klass.gsub(/_controller/, "").to_sym, :actions => klass.camelize.constantize.instance_variable_get(:@_checkable_routes))
8
16
  end
9
17
  permissions
10
18
  end
11
19
 
12
20
  # Stub methods
13
- def is_action_permitted? action
14
- false
21
+ def is_action_permitted? permission
22
+ self.is_action_permitted_for_user? permission, current_user
15
23
  end
16
24
 
17
- def is_action_permitted_for_user? action, user
18
- false
25
+ def is_action_permitted_for_user? permission, user
26
+ # TODO: Avoid these code, maybe handle a callback included in application
27
+ !AccessRule.where(["permission = ? and user_id = ?", permission, user.id]).empty?
19
28
  end
20
29
  end
21
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flexible_accessibility
3
3
  version: !ruby/object:Gem::Version
4
- hash: 961916012
5
- prerelease: 6
4
+ hash: 961916208
5
+ prerelease: 7
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
9
+ - 95
10
10
  - pre
11
- version: 0.1.8.pre
11
+ version: 0.1.95.pre
12
12
  platform: ruby
13
13
  authors:
14
14
  - Sergey Awanesov
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-07-16 00:00:00 Z
19
+ date: 2012-07-18 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  type: :development