authoreyes 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 +4 -4
- data/.gitignore +2 -0
- data/Gemfile +6 -0
- data/MIT-LICENSE +20 -0
- data/README.md +6 -6
- data/Rakefile +27 -3
- data/authoreyes.gemspec +8 -0
- data/authorization_rules.dist.rb +1 -1
- data/bin/test +9 -0
- data/lib/authoreyes.rb +12 -2
- data/lib/authoreyes/authorization.rb +18 -18
- data/lib/authoreyes/authorization/engine.rb +5 -0
- data/lib/authoreyes/helpers.rb +6 -0
- data/lib/authoreyes/helpers/in_controller.rb +95 -0
- data/lib/authoreyes/railtie.rb +51 -0
- data/lib/authoreyes/version.rb +1 -1
- data/lib/tasks/authoreyes_tasks.rake +4 -0
- metadata +65 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2043aee1461c027a8e709798ca08a034bef0730a
|
4
|
+
data.tar.gz: fc7c8229de1c9edbe95af17b27e12c617a149be7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64f245dae1fd0a68e7044e653788d1e799d28116c746e63de7398e8b250a5f2e644845baa4969b45670ff5f793a75e5b3e243d7c221951f260b8d8cd0b926513
|
7
|
+
data.tar.gz: 8cee745304c642ca106f61d528ad563c067bcd1661d9fc0ae49c45727af8771e7699bb3551d3a56315917dc32683013d0eaae0cb2a015674c23244386a38846b
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -6,4 +6,10 @@ gem 'rails', '~> 5.0'
|
|
6
6
|
|
7
7
|
group :test do
|
8
8
|
gem "codeclimate-test-reporter", require: nil
|
9
|
+
gem 'minitest-spec-rails'
|
10
|
+
gem 'minitest-rails-capybara'
|
11
|
+
gem 'capybara_minitest_spec'
|
12
|
+
gem 'minitest-reporters'
|
13
|
+
gem 'factory_girl', '~> 4.0'
|
14
|
+
gem 'faker'
|
9
15
|
end
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2016 Xavier Bick
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Authoreyes
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/authoreyes.svg)](https://badge.fury.io/rb/authoreyes) [![Build Status](https://travis-ci.org/tektite-software/authoreyes.svg?branch=master)](https://travis-ci.org/tektite-software/authoreyes) [![
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/authoreyes.svg)](https://badge.fury.io/rb/authoreyes) [![Build Status](https://travis-ci.org/tektite-software/authoreyes.svg?branch=master)](https://travis-ci.org/tektite-software/authoreyes) [![Dependency Status](https://gemnasium.com/badges/github.com/tektite-software/authoreyes.svg)](https://gemnasium.com/github.com/tektite-software/authoreyes)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/tektite-software/authoreyes/badges/gpa.svg)](https://codeclimate.com/github/tektite-software/authoreyes) [![Test Coverage](https://codeclimate.com/github/tektite-software/authoreyes/badges/coverage.svg)](https://codeclimate.com/github/tektite-software/authoreyes/coverage) [![Inline docs](http://inch-ci.org/github/tektite-software/authoreyes.svg?branch=master)](http://inch-ci.org/github/tektite-software/authoreyes)
|
4
5
|
|
5
6
|
#### Warning! This gem is an alpha!
|
6
7
|
|
@@ -29,11 +30,10 @@ For Rails authorization in Rails versions 4 and below, please use [Declarative A
|
|
29
30
|
__Warning! This gem is not finished!__ Although authorization functionality _does_ work, you will need to do a few things to actually use it in your application...
|
30
31
|
|
31
32
|
At this point, to use Authoreyes, you must do the following:
|
32
|
-
1. Add an `authorization_rules.rb` file.
|
33
|
-
2.
|
34
|
-
|
35
|
-
|
36
|
-
5. Use the Engine's `permit!` and `permit?` methods in your application.
|
33
|
+
1. Add an `authorization_rules.rb` file. See the included one for an example.
|
34
|
+
2. Define privileges for every single action you want to be accessed. As of now, Authoreyes has only one mode: authorize everything.
|
35
|
+
|
36
|
+
If you want to customize authorization behavior, in your ApplicationController override Authoreyes's `redirect_if_unauthorized` before_action and `set_unauthorized_status_code` after_action. See `lib/authoreyes/helpers/in_controller` for details.
|
37
37
|
|
38
38
|
## Contributing
|
39
39
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,34 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'Authoreyes'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
1
22
|
require 'bundler/gem_tasks'
|
23
|
+
|
2
24
|
require 'rake/testtask'
|
3
25
|
|
4
26
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs << 'test'
|
6
27
|
t.libs << 'lib'
|
7
|
-
t.
|
28
|
+
t.libs << 'test'
|
29
|
+
t.pattern = 'test/**/*_test.rb'
|
30
|
+
t.verbose = false
|
8
31
|
end
|
9
32
|
|
10
|
-
|
33
|
+
|
34
|
+
task default: :test
|
data/authoreyes.gemspec
CHANGED
@@ -23,7 +23,15 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
24
|
spec.require_paths = ['lib']
|
25
25
|
|
26
|
+
spec.required_ruby_version = '>= 2.3'
|
27
|
+
|
28
|
+
spec.add_dependency 'rails', '~> 5.0'
|
29
|
+
|
26
30
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
27
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
28
32
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
33
|
+
spec.add_development_dependency 'sqlite3'
|
34
|
+
spec.add_development_dependency 'devise'
|
35
|
+
spec.add_development_dependency 'byebug'
|
36
|
+
|
29
37
|
end
|
data/authorization_rules.dist.rb
CHANGED
data/bin/test
ADDED
data/lib/authoreyes.rb
CHANGED
@@ -1,7 +1,17 @@
|
|
1
|
+
require 'rails'
|
1
2
|
require 'authoreyes/version'
|
2
|
-
require 'authoreyes/authorization'
|
3
3
|
require 'authoreyes/parser'
|
4
|
+
require 'authoreyes/authorization'
|
5
|
+
require 'authoreyes/railtie'
|
4
6
|
|
5
7
|
module Authoreyes
|
6
|
-
|
8
|
+
class Railtie
|
9
|
+
# Require helpers after Rails initialization
|
10
|
+
config.after_initialize do
|
11
|
+
require 'authoreyes/helpers/in_controller'
|
12
|
+
|
13
|
+
# Include Controller helpers
|
14
|
+
ActionController::Base.include Authoreyes::Helpers::InController
|
15
|
+
end
|
16
|
+
end
|
7
17
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# Authorization
|
2
|
-
require 'rails'
|
3
2
|
require 'authoreyes/authorization/engine'
|
4
3
|
require 'authoreyes/authorization/authorization_rule_set'
|
5
4
|
require 'authoreyes/authorization/authorization_rule'
|
@@ -7,56 +6,57 @@ require 'authoreyes/authorization/attribute'
|
|
7
6
|
require 'authoreyes/authorization/attribute_with_permission'
|
8
7
|
require 'authoreyes/authorization/anonymous_user'
|
9
8
|
|
10
|
-
require
|
11
|
-
require
|
9
|
+
require 'set'
|
10
|
+
require 'forwardable'
|
12
11
|
|
13
12
|
module Authoreyes
|
14
13
|
module Authorization
|
15
14
|
# An exception raised if anything goes wrong in the Authorization realm
|
16
|
-
class AuthorizationError < StandardError
|
15
|
+
class AuthorizationError < StandardError; end
|
17
16
|
# NotAuthorized is raised if the current user is not allowed to perform
|
18
17
|
# the given operation possibly on a specific object.
|
19
|
-
class NotAuthorized < AuthorizationError
|
18
|
+
class NotAuthorized < AuthorizationError; end
|
20
19
|
# AttributeAuthorizationError is more specific than NotAuthorized, signaling
|
21
20
|
# that the access was denied on the grounds of attribute conditions.
|
22
|
-
class AttributeAuthorizationError < NotAuthorized
|
21
|
+
class AttributeAuthorizationError < NotAuthorized; end
|
23
22
|
# AuthorizationUsageError is used whenever a situation is encountered
|
24
23
|
# in which the application misused the plugin. That is, if, e.g.,
|
25
24
|
# authorization rules may not be evaluated.
|
26
|
-
class AuthorizationUsageError < AuthorizationError
|
25
|
+
class AuthorizationUsageError < AuthorizationError; end
|
27
26
|
# NilAttributeValueError is raised by Attribute#validate? when it hits a nil attribute value.
|
28
27
|
# The exception is raised to ensure that the entire rule is invalidated.
|
29
|
-
class NilAttributeValueError < AuthorizationError
|
28
|
+
class NilAttributeValueError < AuthorizationError; end
|
30
29
|
|
31
|
-
AUTH_DSL_FILES = [Pathname.new(Rails.root || '').join(
|
30
|
+
AUTH_DSL_FILES = [Pathname.new(Rails.root || '').join('config', 'authorization_rules.rb').to_s].freeze unless defined? AUTH_DSL_FILES
|
32
31
|
|
33
32
|
# Controller-independent method for retrieving the current user.
|
34
33
|
# Needed for model security where the current controller is not available.
|
35
34
|
def self.current_user
|
36
|
-
Thread
|
35
|
+
# TODO: get rid of Thread usage
|
36
|
+
Thread.current['current_user'] || AnonymousUser.new
|
37
37
|
end
|
38
38
|
|
39
39
|
# Controller-independent method for setting the current user.
|
40
40
|
def self.current_user=(user)
|
41
|
-
Thread.current[
|
41
|
+
Thread.current['current_user'] = user
|
42
42
|
end
|
43
43
|
|
44
44
|
# For use in test cases only
|
45
45
|
def self.ignore_access_control(state = nil) # :nodoc:
|
46
|
-
Thread.current[
|
47
|
-
Thread.current[
|
46
|
+
Thread.current['ignore_access_control'] = state unless state.nil?
|
47
|
+
Thread.current['ignore_access_control'] || false
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.activate_authorization_rules_browser? # :nodoc:
|
51
51
|
::Rails.env.development?
|
52
52
|
end
|
53
53
|
|
54
|
-
@@dot_path =
|
54
|
+
@@dot_path = 'dot'
|
55
55
|
def self.dot_path
|
56
56
|
@@dot_path
|
57
57
|
end
|
58
58
|
|
59
|
-
def self.dot_path=
|
59
|
+
def self.dot_path=(path)
|
60
60
|
@@dot_path = path
|
61
61
|
end
|
62
62
|
|
@@ -65,12 +65,12 @@ module Authoreyes
|
|
65
65
|
@@default_role
|
66
66
|
end
|
67
67
|
|
68
|
-
def self.default_role=
|
68
|
+
def self.default_role=(role)
|
69
69
|
@@default_role = role.to_sym
|
70
70
|
end
|
71
71
|
|
72
|
-
def self.is_a_association_proxy?
|
73
|
-
if Rails.version <
|
72
|
+
def self.is_a_association_proxy?(object)
|
73
|
+
if Rails.version < '3.2'
|
74
74
|
object.respond_to?(:proxy_reflection)
|
75
75
|
else
|
76
76
|
object.respond_to?(:proxy_association)
|
@@ -89,6 +89,11 @@ module Authoreyes
|
|
89
89
|
privilege.flatten.collect { |priv| priv.to_sym } :
|
90
90
|
privilege.to_sym
|
91
91
|
|
92
|
+
# Convert context to symbol as well
|
93
|
+
unless options[:context].nil?
|
94
|
+
options[:context] = options[:context].to_sym
|
95
|
+
end
|
96
|
+
|
92
97
|
#
|
93
98
|
# If the object responds to :proxy_reflection, we're probably working with
|
94
99
|
# an association proxy. Use 'new' to leverage ActiveRecord's builder
|
@@ -0,0 +1,95 @@
|
|
1
|
+
module Authoreyes
|
2
|
+
module Helpers
|
3
|
+
# This module handles authorization at the Controller level. It allows
|
4
|
+
# various actions within the controller to be configured to work with
|
5
|
+
# Authoreyes, only permitting access to that action if certain
|
6
|
+
# conditions are met, according to the defined Authorization Rules.
|
7
|
+
module InController
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
# ActiveSupport.on_load :action_controller do
|
10
|
+
# extend
|
11
|
+
# end
|
12
|
+
|
13
|
+
ApplicationController.send :before_action, :redirect_if_unauthorized
|
14
|
+
|
15
|
+
# TODO: Implement this!
|
16
|
+
def filter_resource_access(options = {})
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
def redirect_if_unauthorized
|
21
|
+
unless permitted_to? action_name
|
22
|
+
session[:request_unauthorized] = true
|
23
|
+
redirect_back fallback_location: root_path,
|
24
|
+
status: :found,
|
25
|
+
alert: 'You are not allowed to do that.'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_unauthorized_status_code
|
30
|
+
if session[:request_unauthorized] == true
|
31
|
+
session.delete :request_unauthorized
|
32
|
+
response.status = :forbidden
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# If the current user meets the given privilege, permitted_to? returns true
|
37
|
+
# and yields to the optional block. The attribute checks that are defined
|
38
|
+
# in the authorization rules are only evaluated if an object is given
|
39
|
+
# for context.
|
40
|
+
#
|
41
|
+
# See examples for Authorization::AuthorizationHelper #permitted_to?
|
42
|
+
#
|
43
|
+
# If no object or context is specified, the controller_name is used as
|
44
|
+
# context.
|
45
|
+
# TODO: Use permit? instead of permit!
|
46
|
+
# +privelege+ is the symbol name of the privele checked
|
47
|
+
# +object_or_symbol+ is the object the privelege is checked on
|
48
|
+
def permitted_to?(privelege, object_or_symbol = nil, options = {})
|
49
|
+
if Authoreyes::ENGINE.permit!(
|
50
|
+
privelege, options_for_permit(object_or_symbol, options, false)
|
51
|
+
)
|
52
|
+
yield if block_given?
|
53
|
+
true
|
54
|
+
else
|
55
|
+
false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Works similar to the permitted_to? method, but
|
60
|
+
# throws the authorization exceptions, just like Engine#permit!
|
61
|
+
# +privelege+ is the symbol name of the privele checked
|
62
|
+
# +object_or_symbol+ is the object the privelege is checked on
|
63
|
+
def permitted_to!(privelege, object_or_symbol = nil, options = {})
|
64
|
+
Authoreyes::ENGINE.permit!(
|
65
|
+
privelege, options_for_permit(object_or_symbol, options, true)
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
# Create hash of options to be used with ENGINE's permit methods
|
72
|
+
def options_for_permit(object_or_sym = nil, options = {}, bang = true)
|
73
|
+
context = object = nil
|
74
|
+
if object_or_sym.nil?
|
75
|
+
context = controller_name.to_sym
|
76
|
+
elsif !Authorization.is_a_association_proxy?(object_or_sym) and object_or_sym.is_a?(Symbol)
|
77
|
+
context = object_or_sym
|
78
|
+
else
|
79
|
+
object = object_or_sym
|
80
|
+
end
|
81
|
+
|
82
|
+
result = {:object => object,
|
83
|
+
:context => context,
|
84
|
+
:skip_attribute_test => object.nil?,
|
85
|
+
:bang => bang}.merge(options)
|
86
|
+
result[:user] = current_user unless result.key?(:user)
|
87
|
+
result
|
88
|
+
end
|
89
|
+
|
90
|
+
class_methods do
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Authoreyes
|
2
|
+
# Authoreyes sets up a Railtie to create its authorization engine
|
3
|
+
# as a constant during the rails initialization. Middleware is also
|
4
|
+
# configured here.
|
5
|
+
class Railtie < Rails::Railtie
|
6
|
+
# Error for bad configuration
|
7
|
+
class InvalidConfigurationOption < StandardError; end
|
8
|
+
|
9
|
+
# Allow users to configure Authoreyes in an initializer file
|
10
|
+
# +auth_rules_file+ is the path of the authorization rules file.
|
11
|
+
config.authoreyes = ActiveSupport::OrderedOptions.new
|
12
|
+
|
13
|
+
initializer 'authoreyes.setup', before: 'authoreyes.engine' do |app|
|
14
|
+
# Set default Authoreyes options
|
15
|
+
default_options = ActiveSupport::OrderedOptions.new
|
16
|
+
default_options.auth_rules_file =
|
17
|
+
File.path("#{Rails.root}/config/authorization_rules.rb")
|
18
|
+
default_options.mode = :whitelist
|
19
|
+
|
20
|
+
# Validates options
|
21
|
+
unless [nil, :whitelist, :blacklist].include? config.authoreyes.mode
|
22
|
+
raise InvalidConfigurationOption,
|
23
|
+
"Unrecognized mode. Valid options are :whitelist and :blacklist"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Merge user options with defaults
|
27
|
+
config.authoreyes = default_options.merge(config.authoreyes)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Controller integration
|
31
|
+
initializer 'authoreyes.in_controller' do |app|
|
32
|
+
ActiveSupport.on_load :action_controller do
|
33
|
+
before_action :redirect_if_unauthorized
|
34
|
+
after_action :set_unauthorized_status_code
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Set up the Authoreyes ENGINE
|
39
|
+
initializer 'authoreyes.engine' do |app|
|
40
|
+
config.before_initialize do
|
41
|
+
# Set up parser and parse rules
|
42
|
+
parser = Authoreyes::Parser::DSLParser.new
|
43
|
+
parser.load! app.config.authoreyes.auth_rules_file
|
44
|
+
|
45
|
+
# Create new engine using parsed rules an make constant
|
46
|
+
engine = Authoreyes::Authorization::Engine.new reader: parser
|
47
|
+
Authoreyes::ENGINE = engine
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/authoreyes/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authoreyes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tektite Software
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-07-
|
12
|
+
date: 2016-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '5.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '5.0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: bundler
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,6 +67,48 @@ dependencies:
|
|
53
67
|
- - "~>"
|
54
68
|
- !ruby/object:Gem::Version
|
55
69
|
version: '5.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: sqlite3
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: devise
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: byebug
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
56
112
|
description: |-
|
57
113
|
A powerful, modern authorization plugin for Ruby on
|
58
114
|
Rails featuring a declarative DSL for centralized
|
@@ -68,12 +124,14 @@ files:
|
|
68
124
|
- ".travis.yml"
|
69
125
|
- Gemfile
|
70
126
|
- LICENSE.txt
|
127
|
+
- MIT-LICENSE
|
71
128
|
- README.md
|
72
129
|
- Rakefile
|
73
130
|
- authoreyes.gemspec
|
74
131
|
- authorization_rules.dist.rb
|
75
132
|
- bin/console
|
76
133
|
- bin/setup
|
134
|
+
- bin/test
|
77
135
|
- lib/authoreyes.rb
|
78
136
|
- lib/authoreyes/authorization.rb
|
79
137
|
- lib/authoreyes/authorization/anonymous_user.rb
|
@@ -82,11 +140,15 @@ files:
|
|
82
140
|
- lib/authoreyes/authorization/authorization_rule.rb
|
83
141
|
- lib/authoreyes/authorization/authorization_rule_set.rb
|
84
142
|
- lib/authoreyes/authorization/engine.rb
|
143
|
+
- lib/authoreyes/helpers.rb
|
144
|
+
- lib/authoreyes/helpers/in_controller.rb
|
85
145
|
- lib/authoreyes/parser.rb
|
86
146
|
- lib/authoreyes/parser/authorization_rules_parser.rb
|
87
147
|
- lib/authoreyes/parser/dsl_parser.rb
|
88
148
|
- lib/authoreyes/parser/priveleges_reader.rb
|
149
|
+
- lib/authoreyes/railtie.rb
|
89
150
|
- lib/authoreyes/version.rb
|
151
|
+
- lib/tasks/authoreyes_tasks.rake
|
90
152
|
homepage: https://www.github.com/tektite-software/authoreyes
|
91
153
|
licenses:
|
92
154
|
- MIT
|
@@ -99,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
161
|
requirements:
|
100
162
|
- - ">="
|
101
163
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
164
|
+
version: '2.3'
|
103
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
166
|
requirements:
|
105
167
|
- - ">="
|