permisi 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47559ea904f406010a7979cd77de853bf8c3628c7e4c1020e45742ae439a7e06
4
- data.tar.gz: b8c814331a90cbc7e4d2d3560cfb939419b001f1e88e731a3e67e9b180ead167
3
+ metadata.gz: 50d92f00f694bb0b93a36125736bbd3afae15446c6fe5c71e0a83027a136c5e8
4
+ data.tar.gz: f214d63982175a708e99f7c9238a778b10ec4b599b8baed0dbf09e62a3ad0ae4
5
5
  SHA512:
6
- metadata.gz: bdfbfbadcc257c15ded64521607e062d2d51ba3c9fc5209f4af273f69473df981e2bbbc74457e0bbd3cc0576e9c51e67895f66685bba7dada2e88d3b4513199c
7
- data.tar.gz: a095961d001eb1495f7d084434f8bef182add89e86f9a147013a34f0b7c171cff4da65373798442e45e962264f03c6d0c07eb23f58ca520e742c61adbd94d8e6
6
+ metadata.gz: ea1cedd52afd42383027297028974947aa338eff64d0bb12daee7f3e73663dc054c983f792f6ec8a917f2273745cbb212ea17d12271d11de003a509f53111803
7
+ data.tar.gz: 395586b6b62fdedfe3c9ffc0ea824868cf27d76922af4a7501f161eabd06561c9d44d251a114685552e4d5a37c50923b721621d212ef3d956f98a025e93f4649
@@ -0,0 +1,46 @@
1
+ name: Lint and test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+
16
+ - name: Set up Ruby 2.7
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.7
20
+
21
+ - name: Generate lockfile for cache key
22
+ run: bundle lock
23
+
24
+ - name: Cache gems
25
+ uses: actions/cache@v1
26
+ with:
27
+ path: vendor/bundle
28
+ key: ${{ runner.os }}-rspec-${{ hashFiles('**/Gemfile.lock') }}
29
+ restore-keys: |
30
+ ${{ runner.os }}-rspec-
31
+
32
+ - name: Install gems
33
+ run: |
34
+ bundle config path vendor/bundle
35
+ bundle install --jobs 4 --retry 3
36
+
37
+ - name: Run RuboCop
38
+ uses: reviewdog/action-rubocop@v1
39
+ with:
40
+ rubocop_version: gemfile
41
+ rubocop_extensions: rubocop-rails:gemfile rubocop-rspec:gemfile
42
+ github_token: ${{ secrets.github_token }}
43
+ reporter: github-pr-check # Default is github-pr-check
44
+
45
+ - name: Run RSpec
46
+ run: bundle exec rake spec
data/.rubocop.yml CHANGED
@@ -1,5 +1,10 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.4
3
+ NewCops: enable
4
+ Exclude:
5
+ - "lib/generators/**/*"
6
+ - "spec/**/*" # stuff for later
7
+ - "lib/permisi/permission_util.rb" # The necessary evil (for now)
3
8
 
4
9
  Style/StringLiterals:
5
10
  Enabled: true
@@ -11,3 +16,7 @@ Style/StringLiteralsInInterpolation:
11
16
 
12
17
  Layout/LineLength:
13
18
  Max: 120
19
+
20
+ # Stuff for later
21
+ Documentation:
22
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ # 0.1.1
4
+
5
+ - General code refactoring
6
+ - Improvements on ActiveRecord backend:
7
+ - Code refactoring
8
+ - Implement cache invalidation
9
+
3
10
  # 0.1.0
4
11
 
5
12
  Finished extraction work from my past projects.
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,25 @@
1
+ # How to contribute
2
+
3
+ This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ukazap/permisi/blob/master/CODE_OF_CONDUCT.md).
4
+
5
+ ## Found a bug?
6
+
7
+ - Search the [issues labeled "bug"](https://github.com/ukazap/permisi/issues?q=is%3Aissue+label%3Abug) to see if it's already reported.
8
+ - Make sure you are using the latest version of Permisi [![Gem Version](https://badge.fury.io/rb/permisi.svg)](https://badge.fury.io/rb/permisi)
9
+ - If you are still having an issue, create an issue including:
10
+ - Ruby version
11
+ - Gemfile.lock contents or at least major gem versions, such as Rails version
12
+ - Steps to reproduce the issue
13
+ - Full backtrace for any errors encountered
14
+
15
+ ## Submitting changes
16
+
17
+ If you want to contribute an enhancement or a fix:
18
+
19
+ - Fork the project on GitHub
20
+ - After checking out the repo, run `bin/setup` to install dependencies
21
+ - Make your changes with tests
22
+ - Run `bundle exec rubocop -A` to auto-format your code
23
+ - Run `rake spec` to run the tests
24
+ - Commit the changes without making changes to the Rakefile or any other files that aren't related to your enhancement or fix
25
+ - Send a pull request
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- permisi (0.1.0)
4
+ permisi (0.1.1)
5
5
  activemodel (>= 3.2.0)
6
6
  activerecord (>= 3.2.0)
7
7
  activesupport (>= 3.2.0)
@@ -10,12 +10,12 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- activemodel (6.1.2.1)
14
- activesupport (= 6.1.2.1)
15
- activerecord (6.1.2.1)
16
- activemodel (= 6.1.2.1)
17
- activesupport (= 6.1.2.1)
18
- activesupport (6.1.2.1)
13
+ activemodel (6.1.3)
14
+ activesupport (= 6.1.3)
15
+ activerecord (6.1.3)
16
+ activemodel (= 6.1.3)
17
+ activesupport (= 6.1.3)
18
+ activesupport (6.1.3)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 1.6, < 2)
21
21
  minitest (>= 5.1)
data/README.md CHANGED
@@ -172,15 +172,9 @@ user.permisi.has_role? :admin # == true
172
172
  user.permisi.may? "books.delete" # == true
173
173
  ```
174
174
 
175
- ## Development
176
-
177
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
178
-
179
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
180
-
181
175
  ## Contributing
182
176
 
183
- Bug reports and pull requests are welcome on GitHub at https://github.com/ukazap/permisi. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ukazap/permisi/blob/master/CODE_OF_CONDUCT.md).
177
+ For development and how to submit improvements, please refer to the [contribution guide](https://github.com/ukazap/permisi/blob/main/CONTRIBUTING.md).
184
178
 
185
179
  ## License
186
180
 
@@ -188,4 +182,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
188
182
 
189
183
  ## Code of Conduct
190
184
 
191
- Everyone interacting in the Permisi project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ukazap/permisi/blob/master/CODE_OF_CONDUCT.md).
185
+ Everyone interacting in the Permisi project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ukazap/permisi/blob/main/CODE_OF_CONDUCT.md).
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rails/generators"
2
4
  require "rails/generators/migration"
3
5
  require "rails/generators/active_record"
@@ -7,26 +9,24 @@ module Permisi
7
9
  class InstallGenerator < Rails::Generators::Base
8
10
  include Rails::Generators::Migration
9
11
 
10
- source_root File.expand_path('../templates', __FILE__)
12
+ source_root File.expand_path("templates", __dir__)
11
13
 
12
14
  def self.next_migration_number(path)
13
15
  ActiveRecord::Generators::Base.next_migration_number(path)
14
16
  end
15
17
 
16
18
  def create_initializer
17
- template 'initializer.rb', 'config/initializers/permisi.rb'
19
+ template "initializer.rb", "config/initializers/permisi.rb"
18
20
  end
19
21
 
20
22
  def create_migrations
21
- migration_template 'migration.rb', 'db/migrate/create_permisi_tables.rb', migration_version: migration_version
23
+ migration_template "migration.rb", "db/migrate/create_permisi_tables.rb", migration_version: migration_version
22
24
  end
23
25
 
24
26
  private
25
27
 
26
28
  def migration_version
27
- if ActiveRecord.version.version > '5'
28
- "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
29
- end
29
+ "[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]" if ActiveRecord.version.version > "5"
30
30
  end
31
31
  end
32
32
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "permisi"
2
4
 
3
5
  Permisi.init do |config|
data/lib/permisi.rb CHANGED
@@ -1,41 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_model/type"
4
+ require "active_support/hash_with_indifferent_access"
3
5
  require "zeitwerk"
4
- $permisi_loader = Zeitwerk::Loader.for_gem
5
- $permisi_loader.ignore("#{__dir__}/generators")
6
- $permisi_loader.ignore("#{__dir__}/permisi/backend/mongoid.rb") # todo
7
- $permisi_loader.setup
8
6
 
9
7
  module Permisi
8
+ LOADER = Zeitwerk::Loader.for_gem
9
+
10
10
  class << self
11
- def init(&block)
11
+ def init
12
12
  yield config if block_given?
13
13
  end
14
14
 
15
15
  def config
16
- @@config ||= Config.new
16
+ @config ||= Config.new
17
17
  end
18
18
 
19
19
  def actors
20
- __backend.actors
20
+ config.backend.actors
21
21
  end
22
22
 
23
23
  def actor(aka)
24
- __backend.findsert_actor(aka)
24
+ config.backend.findsert_actor(aka)
25
25
  end
26
26
 
27
27
  def roles
28
- __backend.roles
29
- end
30
-
31
- private
32
-
33
- def __backend
34
- if config.backend.nil? || !(config.backend <= Backend::Base)
35
- raise Backend::InvalidBackend
36
- end
37
-
38
- config.backend
28
+ config.backend.roles
39
29
  end
40
30
  end
41
31
  end
32
+
33
+ Permisi::LOADER.ignore("#{__dir__}/generators")
34
+ Permisi::LOADER.ignore("#{__dir__}/permisi/backend/mongoid.rb") # todo
35
+ Permisi::LOADER.setup
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Permisi
2
4
  module Actable
3
5
  def permisi_actor
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Permisi
4
+ module Backend
5
+ class InvalidBackend < StandardError
6
+ def initialize(message = "Please check https://github.com/ukazap/permisi#configuring-backend")
7
+ super
8
+ end
9
+ end
10
+
11
+ module NullBackend
12
+ class << self
13
+ def findsert_actor(_aka)
14
+ raise InvalidBackend
15
+ end
16
+
17
+ def actors
18
+ raise InvalidBackend
19
+ end
20
+
21
+ def roles
22
+ raise InvalidBackend
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,22 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_record"
2
4
 
3
5
  module Permisi
4
- class Backend::ActiveRecord < Backend::Base
5
- class << self
6
- def table_name_prefix
7
- "permisi_"
8
- end
6
+ module Backend
7
+ module ActiveRecord
8
+ class << self
9
+ def table_name_prefix
10
+ "permisi_"
11
+ end
9
12
 
10
- def findsert_actor(aka)
11
- Actor.find_or_create_by(aka: aka)
12
- end
13
+ def findsert_actor(aka)
14
+ Actor.find_or_create_by(aka: aka)
15
+ end
13
16
 
14
- def actors
15
- Actor.all
16
- end
17
+ def actors
18
+ Actor.all
19
+ end
17
20
 
18
- def roles
19
- Role.all
21
+ def roles
22
+ Role.all
23
+ end
20
24
  end
21
25
  end
22
26
  end
@@ -1,15 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Permisi
2
- class Backend::ActiveRecord::Actor < ::ActiveRecord::Base
3
- belongs_to :aka, polymorphic: true
4
- has_many :actor_roles
5
- has_many :roles, through: :actor_roles
4
+ module Backend
5
+ module ActiveRecord
6
+ class Actor < ::ActiveRecord::Base
7
+ belongs_to :aka, polymorphic: true, touch: true
8
+ has_many :actor_roles, dependent: :destroy
9
+ has_many :roles, through: :actor_roles
6
10
 
7
- def has_role?(role_slug)
8
- roles.load.any? { |role| role.slug == role_slug.to_s }
9
- end
11
+ def role?(role_slug)
12
+ roles.load.any? { |role| role.slug == role_slug.to_s }
13
+ end
14
+
15
+ def may?(action_path)
16
+ roles.load.any? { |role| role.allows?(action_path) }
17
+ end
10
18
 
11
- def may?(action_path)
12
- roles.load.any? { |role| role.allows?(action_path) }
19
+ alias may_i? may?
20
+ alias has_role? role?
21
+ end
13
22
  end
14
23
  end
15
24
  end
@@ -1,6 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Permisi
2
- class Backend::ActiveRecord::ActorRole < ::ActiveRecord::Base
3
- belongs_to :actor
4
- belongs_to :role
4
+ module Backend
5
+ module ActiveRecord
6
+ class ActorRole < ::ActiveRecord::Base
7
+ belongs_to :actor, touch: true
8
+ belongs_to :role
9
+
10
+ after_destroy :touch_actor
11
+
12
+ private
13
+
14
+ def touch_actor
15
+ actor.touch
16
+ end
17
+ end
18
+ end
5
19
  end
6
20
  end
@@ -1,27 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Permisi
2
- class Backend::ActiveRecord::Role < ::ActiveRecord::Base
3
- has_many :actor_roles
4
- has_many :actors, through: :actor_roles
5
- has_many :akas, through: :actors
4
+ module Backend
5
+ module ActiveRecord
6
+ class Role < ::ActiveRecord::Base
7
+ has_many :actor_roles, dependent: :destroy
8
+ has_many :actors, through: :actor_roles
9
+ has_many :akas, through: :actors
6
10
 
7
- validates_presence_of :name, :slug
8
- validates_uniqueness_of :name, :slug
11
+ validates_presence_of :name, :slug
12
+ validates_uniqueness_of :name, :slug
9
13
 
10
- after_initialize :set_default_permissions
11
- before_validation :sanitize_permissions
14
+ after_initialize :set_default_permissions
15
+ before_validation :sanitize_attributes
16
+ after_update :touch_actor_roles
12
17
 
13
- serialize :permissions, Permisi::PermissionUtil::Serializer
18
+ serialize :permissions, Permisi::PermissionUtil::Serializer
14
19
 
15
- def allows?(action_path)
16
- Permisi::PermissionUtil.allows?(self.permissions, action_path)
17
- end
20
+ def allows?(action_path)
21
+ Permisi::PermissionUtil.allows?(permissions, action_path)
22
+ end
18
23
 
19
- def set_default_permissions
20
- self.permissions ||= Permisi.config.default_permissions if self.new_record?
21
- end
24
+ private
25
+
26
+ def set_default_permissions
27
+ self.permissions ||= HashWithIndifferentAccess.new if new_record?
28
+ end
29
+
30
+ def sanitize_attributes
31
+ self.name ||= slug.try(:titleize)
32
+ self.permissions = Permisi::PermissionUtil.sanitize_permissions(self.permissions)
33
+ end
22
34
 
23
- def sanitize_permissions
24
- self.permissions = Permisi::PermissionUtil.sanitize_permissions(self.permissions)
35
+ def touch_actor_roles
36
+ actor_roles.each(&:touch)
37
+ end
38
+ end
25
39
  end
26
40
  end
27
41
  end
@@ -1,5 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Permisi
2
- class Backend::Mongoid < Backend::Base
3
- raise "under construction"
4
+ module Backend
5
+ module Mongoid
6
+ raise "under construction"
7
+ end
4
8
  end
5
9
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_support/core_ext/class/attribute_accessors"
2
4
 
3
5
  module Permisi
4
6
  class Config
5
- attr_accessor :backend, :permissions
6
- attr_reader :default_permissions
7
+ attr_reader :permissions, :default_permissions
7
8
 
8
9
  def initialize
9
10
  @permissions = ::HashWithIndifferentAccess.new
@@ -11,15 +12,16 @@ module Permisi
11
12
  end
12
13
 
13
14
  def backend=(chosen_backend)
14
- if chosen_backend.is_a? Symbol
15
- chosen_backend = "::Permisi::Backend::#{chosen_backend.to_s.classify}".constantize
16
- end
17
-
15
+ chosen_backend = "::Permisi::Backend::#{chosen_backend.to_s.classify}".constantize if chosen_backend.is_a? Symbol
18
16
  @backend = chosen_backend
19
17
  rescue NameError
20
18
  raise Backend::InvalidBackend
21
19
  end
22
20
 
21
+ def backend
22
+ @backend || Backend::NullBackend
23
+ end
24
+
23
25
  def permissions=(permissions_hash)
24
26
  permissions_hash = HashWithIndifferentAccess.new(permissions_hash)
25
27
  @default_permissions = PermissionUtil.transform_namespace(permissions_hash)
@@ -1,5 +1,4 @@
1
- require "active_model/type"
2
- require "active_support/hash_with_indifferent_access"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Permisi
5
4
  module PermissionUtil
@@ -7,32 +6,39 @@ module Permisi
7
6
 
8
7
  class << self
9
8
  def allows?(hash, action_path)
10
- return false unless hash.kind_of?(Hash)
9
+ return false unless hash.is_a?(Hash)
11
10
 
12
11
  action_path_arr = action_path.split(".")
13
- (!Permisi.config.default_permissions.dig(*action_path_arr).nil? rescue false) &&
12
+ begin
13
+ !Permisi.config.default_permissions.dig(*action_path_arr).nil?
14
+ rescue StandardError
15
+ false
16
+ end &&
14
17
  hash.dig(*action_path_arr) == true
15
18
  end
16
19
 
17
20
  def transform_namespace(namespace, current_path: nil)
18
21
  HashWithIndifferentAccess.new.tap do |transformed|
19
22
  namespace.each_pair do |key, value|
20
- raise InvalidNamespace,
21
- "`#{[current_path, key].compact.join(".")}` should be an array" unless value.is_a? Array
23
+ unless value.is_a? Array
24
+ raise InvalidNamespace,
25
+ "`#{[current_path, key].compact.join(".")}` should be an array"
26
+ end
22
27
 
23
28
  value.each.with_index do |arr_v, arr_i|
24
- if arr_v.is_a?(Symbol)
29
+ case arr_v
30
+ when Symbol
25
31
  transformed[key] ||= ::HashWithIndifferentAccess.new
26
- if transformed[key].has_key? arr_v
32
+ if transformed[key].key? arr_v
27
33
  raise InvalidNamespace, "duplicate entry: `#{[current_path, key, arr_v].compact.join(".")}`"
28
34
  end
29
35
 
30
36
  transformed[key][arr_v] = false
31
- elsif arr_v.is_a?(Hash)
37
+ when Hash
32
38
  transform_namespace(arr_v,
33
39
  current_path: [current_path, key].compact.join(".")).each_pair do |ts_k, ts_v|
34
40
  transformed[key] ||= ::HashWithIndifferentAccess.new
35
- if transformed[key].has_key? ts_k
41
+ if transformed[key].key? ts_k
36
42
  raise InvalidNamespace, "duplicate entry: `#{[current_path, key, ts_k].compact.join(".")}`"
37
43
  end
38
44
 
@@ -56,13 +62,13 @@ module Permisi
56
62
  def __deeply_sanitize_permissions(permission_hash, template: {})
57
63
  HashWithIndifferentAccess.new.tap do |sanitized|
58
64
  permission_hash.each_pair do |key, value|
59
- next unless template.has_key?(key)
65
+ next unless template.key?(key)
60
66
 
61
- if value.is_a?(Hash)
62
- sanitized[key] = __deeply_sanitize_permissions(value, template: template[key])
63
- else
64
- sanitized[key] = __cast_value_to_boolean(value)
65
- end
67
+ sanitized[key] = if value.is_a?(Hash)
68
+ __deeply_sanitize_permissions(value, template: template[key])
69
+ else
70
+ __cast_value_to_boolean(value)
71
+ end
66
72
  end
67
73
  end
68
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Permisi
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
data/permisi.gemspec CHANGED
@@ -33,9 +33,9 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ["lib"]
35
35
 
36
- spec.add_dependency "activesupport", ">= 3.2.0"
37
- spec.add_dependency "activerecord", ">= 3.2.0"
38
36
  spec.add_dependency "activemodel", ">= 3.2.0"
37
+ spec.add_dependency "activerecord", ">= 3.2.0"
38
+ spec.add_dependency "activesupport", ">= 3.2.0"
39
39
  spec.add_dependency "zeitwerk", ["~> 2.4", ">= 2.4.2"]
40
40
 
41
41
  # For more information and examples about making a new gem, checkout our
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permisi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ukaza Perdana
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-15 00:00:00.000000000 Z
11
+ date: 2021-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.2.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: activemodel
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -82,12 +82,13 @@ executables: []
82
82
  extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
- - ".github/workflows/main.yml"
85
+ - ".github/workflows/ci.yml"
86
86
  - ".gitignore"
87
87
  - ".rspec"
88
88
  - ".rubocop.yml"
89
89
  - CHANGELOG.md
90
90
  - CODE_OF_CONDUCT.md
91
+ - CONTRIBUTING.md
91
92
  - Gemfile
92
93
  - Gemfile.lock
93
94
  - LICENSE.txt
@@ -100,12 +101,11 @@ files:
100
101
  - lib/generators/permisi/templates/migration.rb
101
102
  - lib/permisi.rb
102
103
  - lib/permisi/actable.rb
104
+ - lib/permisi/backend.rb
103
105
  - lib/permisi/backend/active_record.rb
104
106
  - lib/permisi/backend/active_record/actor.rb
105
107
  - lib/permisi/backend/active_record/actor_role.rb
106
108
  - lib/permisi/backend/active_record/role.rb
107
- - lib/permisi/backend/base.rb
108
- - lib/permisi/backend/invalid_backend.rb
109
109
  - lib/permisi/backend/mongoid.rb
110
110
  - lib/permisi/config.rb
111
111
  - lib/permisi/permission_util.rb
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
135
  requirements: []
136
- rubygems_version: 3.2.3
136
+ rubygems_version: 3.1.4
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: Simple and dynamic role-based access control for Rails
@@ -1,18 +0,0 @@
1
- name: Ruby
2
-
3
- on: [push,pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - uses: actions/checkout@v2
10
- - name: Set up Ruby
11
- uses: ruby/setup-ruby@v1
12
- with:
13
- ruby-version: 3.0.0
14
- - name: Run the default task
15
- run: |
16
- gem install bundler -v 2.2.5
17
- bundle install
18
- bundle exec rake
@@ -1,6 +0,0 @@
1
- module Permisi
2
- module Backend
3
- class Base
4
- end
5
- end
6
- end
@@ -1,9 +0,0 @@
1
- module Permisi
2
- module Backend
3
- class InvalidBackend < StandardError
4
- def initialize(message = "Please specify a backend. For details, check https://github.com/ukazap/permisi#configuring-backend")
5
- super
6
- end
7
- end
8
- end
9
- end