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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c692f2b44a5992e6ed48d9edb77cda2accfa2bc1
4
- data.tar.gz: 63e2a6282929830fa130217e901c2a55e1c9897e
3
+ metadata.gz: 2043aee1461c027a8e709798ca08a034bef0730a
4
+ data.tar.gz: fc7c8229de1c9edbe95af17b27e12c617a149be7
5
5
  SHA512:
6
- metadata.gz: 7086240162b0a8734af9922554d20b9867706bbe9619917642d72f2531596c13229a97d16f59831fac56820bd94547bc367c6c3862f525ac248cbca8a58ec1f9
7
- data.tar.gz: 77bb72a8bf572b7c06595993985f48e896c68327681b563cb6cd2fd1429da4af2fe2b4c77a710e94364d626a6d1d34f1430aade2b56eda9ef6bebd50caf45313
6
+ metadata.gz: 64f245dae1fd0a68e7044e653788d1e799d28116c746e63de7398e8b250a5f2e644845baa4969b45670ff5f793a75e5b3e243d7c221951f260b8d8cd0b926513
7
+ data.tar.gz: 8cee745304c642ca106f61d528ad563c067bcd1661d9fc0ae49c45727af8771e7699bb3551d3a56315917dc32683013d0eaae0cb2a015674c23244386a38846b
data/.gitignore CHANGED
@@ -7,4 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /test/dummy/tmp/
11
+ /test/dummy/log/
10
12
  *.gem
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
@@ -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) [![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)
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. Create an Authoreyes DSL Parser object.
34
- 3. Use the DSL Parser object to parse your authorization rules.
35
- 4. Create an Authoreyes Authorization Engine object passing in the Parser object.
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.test_files = FileList['test/**/*_test.rb']
28
+ t.libs << 'test'
29
+ t.pattern = 'test/**/*_test.rb'
30
+ t.verbose = false
8
31
  end
9
32
 
10
- task :default => :test
33
+
34
+ task default: :test
@@ -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
@@ -3,7 +3,7 @@ authorization do
3
3
  # add permissions for guests here, e.g.
4
4
  #has_permission_on :conferences, :to => :read
5
5
  end
6
-
6
+
7
7
  # permissions on other roles, such as
8
8
  #role :admin do
9
9
  # has_permission_on :conferences, :to => :manage
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ $: << File.expand_path(File.expand_path('../../test', __FILE__))
3
+
4
+ require 'bundler/setup'
5
+ require 'rails/test_unit/minitest_plugin'
6
+
7
+ Rails::TestUnitReporter.executable = 'bin/test'
8
+
9
+ exit Minitest.run(ARGV)
@@ -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
- # Your code goes here...
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 "set"
11
- require "forwardable"
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 ; end
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 ; end
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 ; end
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 ; end
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 ; end
28
+ class NilAttributeValueError < AuthorizationError; end
30
29
 
31
- AUTH_DSL_FILES = [Pathname.new(Rails.root || '').join("config", "authorization_rules.rb").to_s] unless defined? AUTH_DSL_FILES
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.current["current_user"] || AnonymousUser.new
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["current_user"] = user
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["ignore_access_control"] = state unless state.nil?
47
- Thread.current["ignore_access_control"] || false
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 = "dot"
54
+ @@dot_path = 'dot'
55
55
  def self.dot_path
56
56
  @@dot_path
57
57
  end
58
58
 
59
- def self.dot_path= (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= (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? (object)
73
- if Rails.version < "3.2"
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,6 @@
1
+ module Authoreyes
2
+ # This module contains all helpers for views, controllers, and models
3
+ module Helpers
4
+
5
+ end
6
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Authoreyes
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :authoreyes do
3
+ # # Task goes here
4
+ # end
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.1.1
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-06 00:00:00.000000000 Z
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: '0'
164
+ version: '2.3'
103
165
  required_rubygems_version: !ruby/object:Gem::Requirement
104
166
  requirements:
105
167
  - - ">="