flexible_accessibility 0.2.0.pre → 0.2.1.pre

Sign up to get free protection for your applications and to get access to all the features.
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.2.0.pre"
18
+ gem.version = "0.2.1.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.2.0.pre"
8
+ s.version = "0.2.1.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-25"
12
+ s.date = "2012-07-26"
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 = [
@@ -1,17 +1,46 @@
1
1
  module FlexibleAccessibility
2
- class AccessDeniedException < StandardError
3
- attr_reader :action, :subject
4
- attr_writer :default_message
2
+ class FlexibleAccessibilityException < StandardError
3
+ attr_reader :action, :subject, :default_message
5
4
 
6
- def initialize(message = nil, action = nil, subject = nil)
7
- @message = message
5
+ def initialize(action = nil, subject = nil)
8
6
  @action = action
9
7
  @subject = subject
10
- @default_message = I18n.t('flexible_accessibility.errors.access_denied', :action => @action)
11
8
  end
12
9
 
13
10
  def to_s
14
- @message || @default_message
11
+ message || default_message
12
+ end
13
+
14
+ private
15
+ def message
16
+ nil
17
+ end
18
+
19
+ def default_message
20
+ "An exception is occured"
21
+ end
22
+ end
23
+
24
+
25
+ class AccessDeniedException < FlexibleAccessibilityException
26
+ private
27
+ def message
28
+ I18n.t 'flexible_accessibility.errors.access_denied', :action => @action
29
+ end
30
+
31
+ def default_message
32
+ "The acess for resoure #{@action} is denied"
15
33
  end
16
34
  end
35
+
36
+ class UserNotLoggedInException < FlexibleAccessibilityException
37
+ private
38
+ def message
39
+ I18n.t 'flexible_accessibility.errors.user_is_not_logged_in'
40
+ end
41
+
42
+ def default_message
43
+ "Current user is not logged in"
44
+ end
45
+ end
17
46
  end
@@ -7,7 +7,7 @@ module FlexibleAccessibility
7
7
  append_before_filter :check_if_route_permitted
8
8
  end
9
9
 
10
- private
10
+ private
11
11
  # Detect current controller and action and return a permission
12
12
  def current_resource
13
13
  # ActionController::Routing::Routes.recognize_path request.env["PATH_INFO"][:controller]
@@ -22,18 +22,21 @@ module FlexibleAccessibility
22
22
  def current_route
23
23
  "#{current_resource}##{current_action}"
24
24
  end
25
- # We checks access to route
26
- # And we expected the existing of current_user helper
27
- def check_permission_to_route
28
- if self.class.instance_variable_get(:@_checkable_routes).include? current_action.to_sym
29
- self.class.instance_variable_set :@_route_permitted, Permission.is_action_permitted_for_user?(current_route, current_user)
30
- end
31
- end
25
+ # We checks access to route
26
+ # And we expected the existing of current_user helper
27
+ def check_permission_to_route
28
+ if self.class.instance_variable_get(:@_checkable_routes).include? current_action.to_sym
29
+ raise UserNotLoggedInException.new(current_route, nil) if current_user.nil?
30
+ self.class.instance_variable_set :@_route_permitted, Permission.is_action_permitted_for_user?(current_route, current_user)
31
+ else
32
+ self.class.instance_variable_set :@_route_permitted, true
33
+ end
34
+ end
32
35
 
33
- # We checks @authorized variable state
34
- def check_if_route_permitted
35
- raise AccessDeniedException.new(nil, current_route, nil) unless self.class.instance_variable_get :@_route_permitted
36
- end
36
+ # We checks @authorized variable state
37
+ def check_if_route_permitted
38
+ raise AccessDeniedException.new(current_route, nil) unless self.class.instance_variable_get :@_route_permitted
39
+ end
37
40
  end
38
41
 
39
42
  ActiveSupport.on_load(:action_controller) do
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: 961915988
4
+ hash: 961915984
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
9
+ - 1
10
10
  - pre
11
- version: 0.2.0.pre
11
+ version: 0.2.1.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-25 00:00:00 Z
19
+ date: 2012-07-26 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  type: :development