active_permission 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d51048fc3edb6e14ac8f39eaf433b70371fe9f7
4
- data.tar.gz: a6dac96c1c9df176981a6fd6ae6a157f564c3d96
3
+ metadata.gz: 4822a5239730d4ab16ad3ad140ad83a42d316386
4
+ data.tar.gz: 9e72ad4a57f7fcf80ed87a123ccebaf507db91b2
5
5
  SHA512:
6
- metadata.gz: 2082819334f72c46e40522642d17542aa4aaf95d8fb690c860e6b31e2b2d1e5428e41200d584cf8a4e5e4cbc0cc73796870ef5ed859de06ba9752ff42f611ad2
7
- data.tar.gz: 6d9e8299ea7b794178e401bb29d96ee80043741f70533671429e1eac50b8f1d83640b2e5ca5da75bc7d15a9b7c7ed2a94100214f7bdaffb4df92d92752befd0e
6
+ metadata.gz: 3c23dd91e7b24ffcfcbf2581a9d02862a2cc05a766aaf4f31e9a6666059ea22c4197ed6b693633c8969030b619b81e1b0c75dba7145d02d5a0ca9ea03dd915b7
7
+ data.tar.gz: c55fe1ecaf350a2d76aa01d187a63de3645d03a068e03c9812fec4270de8ba61b75857c2eb63171f5c91df833bc199890aaa1ddd5020ade825a4bd204d50af7a
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # ActivePermission
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/active_permission.svg)](http://badge.fury.io/rb/active_permission)
4
+
3
5
  This gem allow you load and authorize resource in Ruby on Rails inside controllers or views using rules with described permissions of user.
4
6
 
5
7
  ## Installation
@@ -40,6 +42,19 @@ end
40
42
 
41
43
  ### Load Resource and authorization examples
42
44
 
45
+ ```
46
+ class ApplicationController < ActionController::Base
47
+ include ActivePermission::ControllerAdditions
48
+ private
49
+ def current_user
50
+ @current_user ||= User.find(session[:user_id]) if session[:user_id]
51
+ end
52
+ def current_permissions
53
+ @permission ||= Permission.new(current_user)
54
+ end
55
+ end
56
+ ```
57
+
43
58
  ```
44
59
  class BooksController < ApplicationController
45
60
  resource :book, object: 'Book'
@@ -95,6 +110,30 @@ end
95
110
  <% end %>
96
111
  ```
97
112
 
113
+ ### Rescue from ActivePermission::AccessDenied
114
+
115
+ ```
116
+ rescue_from ActivePermission::AccessDenied do |error|
117
+ if @current_user
118
+ logger.warn "#{@current_user.class}(#{@current_user.id}): #{error}"
119
+ flash[:warning] = t('Access denied')
120
+ redirect_to root_path
121
+ else
122
+ logger.warn "Anonymous: #{error}"
123
+ flash[:warning] = t('Must be signin')
124
+ redirect_to signin_path
125
+ end
126
+ end
127
+ ```
128
+
129
+ ```
130
+ rescue_from ActivePermission::AccessDenied do |error|
131
+ logger.warn "Controller: #{error.controller} Action: #{error.action} Object: #{error.object}"
132
+ flash[:warning] = t('Access denied')
133
+ redirect_to root_path
134
+ end
135
+ ```
136
+
98
137
 
99
138
  ## Contributing
100
139
 
@@ -4,10 +4,12 @@ require 'active_permission/base'
4
4
 
5
5
  module ActivePermission
6
6
  class AccessDenied < RuntimeError
7
- attr_reader :secure
8
- def initialize(message, secure = true)
9
- super(message)
10
- @secure = secure
7
+ attr_reader :controller, :action, :object
8
+ def initialize(controller = nil , action = nil , object = nil)
9
+ @controller = controller
10
+ @action = action
11
+ @object = object
12
+ super("Access denied in #{@controller}::#{@action} - #{object.inspect}")
11
13
  end
12
14
  end
13
15
  end
@@ -49,7 +49,7 @@ module ActivePermission
49
49
  if options[:through] and options[:association]
50
50
  object = instance_variable_get("@#{options[:through]}").send(options[:association])
51
51
  elsif options[:object].nil?
52
- raise AccessDenied.new("Access denied in #{controller.params[:controller]}::#{controller.params[:action]}. Required set a option :object.")
52
+ raise AccessDenied.new(controller.params[:controller], controller.params[:action], object)
53
53
  elsif options[:object].kind_of? Symbol
54
54
  object = send(options[:object])
55
55
  elsif options[:object].kind_of? String
@@ -78,27 +78,27 @@ module ActivePermission
78
78
  current_permissions.can!(controller.params[:controller], controller.params[:action], *objects)
79
79
  end
80
80
  end
81
-
81
+
82
82
  def current_permissions
83
83
  @permissions ||= ActivePermission::Base.new
84
84
  end
85
85
  end
86
86
 
87
87
  module InstanceMethods
88
- def authorize!(resource, options = {})
88
+ def authorize!(resource = nil, options = {})
89
89
  options = params.merge(options)
90
90
  current_permissions.can!(options[:controller], options[:action], resource)
91
91
  end
92
92
 
93
- def authorize?(resource, options = {})
93
+ def authorize?(resource = nil, options = {})
94
94
  options = params.merge(options)
95
95
  current_permissions.can?(options[:controller], options[:action], resource)
96
96
  end
97
97
  end
98
98
 
99
99
  def self.included(base)
100
- base.extend ClassMethods
101
- base.include InstanceMethods
100
+ base.send :extend, ClassMethods
101
+ base.send :include, InstanceMethods
102
102
  base.delegate :can?, :can!, :to => :current_permissions
103
103
  base.helper_method :can?, :can!
104
104
  end
@@ -1,3 +1,3 @@
1
1
  module ActivePermission
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_permission
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Shurmin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-28 00:00:00.000000000 Z
11
+ date: 2015-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler