ez-permissions 0.4.3 → 0.6.1

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
  SHA256:
3
- metadata.gz: f220c1b6b47d2c4ec04c717591243c0256a5870f5802005a38a4c451104ea574
4
- data.tar.gz: 68dba463fa3ece4365ee47c3443ea859aac01b010b001c67a6419e61e910efdc
3
+ metadata.gz: 5514714fbd59dcc2567a76cf7170c88ba2493ad654aa232ee464b386d7d73ca9
4
+ data.tar.gz: 988f18fad5072711f3699cbd78386647822745975314ef57bb6ab4848ea66cf6
5
5
  SHA512:
6
- metadata.gz: 23f50653976ef276868f2c4bb0bcce1fd71582b424da461345138cb04bcc25c8cd75cdda2b5b66a2474536f3474535f5fa7780f5ae3618d4407b3e020f3dc14a
7
- data.tar.gz: ba64376d6c05184036cdb550ed39229485105af12f95f78132756893131bbf4a9fa7eeb2c67d865659c2ea10ad1fee53be01397652ddf0f237cd7ab51a689c82
6
+ metadata.gz: 547ec67bb10c87d4d4b6c04258d1491afaa8cd1f4c85b17403502d82b29fc7574b2f96c2327d12064be5dd0385cc6cfc4395b635a9c88bba2cb7a5f97d33d91a
7
+ data.tar.gz: a24ca354fd87426c2fee1aa94b660e410886288218dcb29dfe4439e68735a7b582ea2c2627d54c6d74ee1fa9efdc7d64eb26efeb489af409bb46f960168e5e1d
data/README.md CHANGED
@@ -31,7 +31,7 @@ Configuration interface allows you to change default behavior
31
31
  ```ruby
32
32
  Ez::Permissions.configure do |config|
33
33
  # If in generated migrations you changed table names, please configure them here:
34
- config.permission_table_name = 'my_permissions'
34
+ config.permissions_table_name = 'my_permissions'
35
35
  config.roles_table_name = 'my_roles'
36
36
  config.models_roles_table_name = 'my_model_roles'
37
37
  config.permissions_roles_table_name = 'my_permissions_roles'
@@ -146,6 +146,10 @@ Permissions.includes_role?(user, :admin)
146
146
  # Check if user includes scoped role
147
147
  project = Project.first
148
148
  Permissions.includes_role?(user, :manager, scoped: project)
149
+
150
+ # List users with particular role in particular scope
151
+ project = Project.first
152
+ Permissions.list_by_role(:manager, scoped: project)
149
153
  ```
150
154
 
151
155
  ### Permissions
@@ -7,16 +7,16 @@ module Ez
7
7
  def self.included(base)
8
8
  base.has_many :assigned_roles,
9
9
  class_name: 'Ez::Permissions::ModelRole',
10
- as: :model
10
+ as: :model
11
11
 
12
12
  base.has_many :roles,
13
13
  -> { distinct },
14
- through: :assigned_roles,
14
+ through: :assigned_roles,
15
15
  class_name: 'Ez::Permissions::Role'
16
16
 
17
17
  base.has_many :permissions,
18
18
  -> { distinct },
19
- through: :roles,
19
+ through: :roles,
20
20
  class_name: 'Ez::Permissions::Permission'
21
21
  end
22
22
  # rubocop:enable Metrics/MethodLength
@@ -53,9 +53,9 @@ module Ez
53
53
  permission_ids = Ez::Permissions::PermissionRole.where(role_id: role_ids).pluck(:permission_id)
54
54
 
55
55
  Ez::Permissions::Permission.where(
56
- id: permission_ids,
56
+ id: permission_ids,
57
57
  resource: resource,
58
- action: actions.map(&:to_s)
58
+ action: actions.map(&:to_s)
59
59
  )
60
60
  end
61
61
 
@@ -8,8 +8,8 @@ module Ez
8
8
  role = Ez::Permissions::API.get_role!(role_name)
9
9
 
10
10
  Ez::Permissions::ModelRole.find_or_create_by!(
11
- role: role,
12
- model: model,
11
+ role: role,
12
+ model: model,
13
13
  scoped: scoped
14
14
  )
15
15
  end
@@ -26,12 +26,21 @@ module Ez
26
26
  model_role(role, model, scoped) ? true : false
27
27
  end
28
28
 
29
+ def list_by_role(role_name, scoped: nil)
30
+ role = Ez::Permissions::API.get_role!(role_name)
31
+
32
+ Ez::Permissions::ModelRole.where(
33
+ role: role,
34
+ scoped: scoped
35
+ ).map(&:model)
36
+ end
37
+
29
38
  private
30
39
 
31
40
  def model_role(role, model, scoped)
32
41
  Ez::Permissions::ModelRole.find_by(
33
- role: role,
34
- model: model,
42
+ role: role,
43
+ model: model,
35
44
  scoped: scoped
36
45
  )
37
46
  end
@@ -28,7 +28,7 @@ module Ez
28
28
  permission = get_permission!(action, resource)
29
29
 
30
30
  Ez::Permissions::PermissionRole.find_by(
31
- role: role,
31
+ role: role,
32
32
  permission: permission
33
33
  )&.delete
34
34
  end
@@ -37,7 +37,7 @@ module Ez
37
37
 
38
38
  def grant_single_permission(role, permission)
39
39
  Ez::Permissions::PermissionRole.find_or_create_by!(
40
- role: role,
40
+ role: role,
41
41
  permission: permission
42
42
  )
43
43
  end
@@ -52,7 +52,7 @@ module Ez
52
52
  def message(txt, level = 'WARN')
53
53
  return if Ez::Permissions.config.mute_stdout
54
54
 
55
- STDOUT.puts("[#{level}] Ez::Permissions: #{txt}")
55
+ $stdout.puts("[#{level}] Ez::Permissions: #{txt}")
56
56
  end
57
57
 
58
58
  def seed_to_db(resource)
@@ -62,7 +62,7 @@ module Ez
62
62
  resource.actions.each do |action|
63
63
  Ez::Permissions::Permission.where(
64
64
  resource: resource.name,
65
- action: action
65
+ action: action
66
66
  ).first_or_create!
67
67
  end
68
68
  end
@@ -5,13 +5,14 @@ module Ez
5
5
  class Resource
6
6
  ACTIONS = %i[create read update delete].freeze
7
7
 
8
- attr_reader :name, :model, :actions, :group
8
+ attr_reader :name, :model, :actions, :group, :label
9
9
 
10
10
  def initialize(name, options = {})
11
11
  @name = name
12
12
  @model = options.fetch(:model, nil)
13
13
  @actions = process_actions(options.fetch(:actions, []))
14
14
  @group = options.fetch(:group, :others)
15
+ @label = options.fetch(:label, name.to_s.humanize)
15
16
  end
16
17
 
17
18
  def <=>(other)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ez
4
4
  module Permissions
5
- VERSION = '0.4.3'
5
+ VERSION = '0.6.1'
6
6
  end
7
7
  end
@@ -8,7 +8,7 @@ module Ez
8
8
  "# frozen_string_literal: true
9
9
 
10
10
  Ez::Permissions.configure do |config|
11
- # config.permission_table_name = 'ez_permissions_permissions'
11
+ # config.permissions_table_name = 'ez_permissions_permissions'
12
12
  # config.roles_table_name = 'ez_permissions_roles'
13
13
  # config.models_roles_table_name = 'ez_permissions_model_roles'
14
14
  # config.permissions_roles_table_name = 'ez_permissions_permissions_roles'
@@ -7,7 +7,7 @@ namespace :ez do
7
7
  Ez::Permissions::Permission.find_each do |permission|
8
8
  next if Ez::Permissions::DSL.resource_action?(permission.resource, permission.action)
9
9
 
10
- STDOUT.puts '[WARNING] Ez::Permissions:'\
10
+ $stdout.puts '[WARNING] Ez::Permissions:'\
11
11
  "Permission##{permission.id} [#{permission.resource} -> #{permission.action}] is redundant"
12
12
  end
13
13
  end
@@ -17,7 +17,7 @@ namespace :ez do
17
17
  next if Ez::Permissions::DSL.resource_action?(permission.resource, permission.action)
18
18
 
19
19
  permission.destroy
20
- STDOUT.puts '[WARNING] Ez::Permissions:'\
20
+ $stdout.puts '[WARNING] Ez::Permissions:'\
21
21
  "Permission##{permission.id} [#{permission.resource} -> #{permission.action}] is removed"
22
22
  end
23
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ez-permissions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volodya Sveredyuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-20 00:00:00.000000000 Z
11
+ date: 2021-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ez-core
@@ -148,14 +148,14 @@ dependencies:
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: 1.3.6
151
+ version: '1.4'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: 1.3.6
158
+ version: '1.4'
159
159
  description: Easy permissions engine for Rails app.
160
160
  email:
161
161
  - sveredyuk@gmail.com
@@ -201,14 +201,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
201
  requirements:
202
202
  - - ">="
203
203
  - !ruby/object:Gem::Version
204
- version: '0'
204
+ version: 2.5.0
205
205
  required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - ">="
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  requirements: []
211
- rubygems_version: 3.0.3
211
+ rubygems_version: 3.1.6
212
212
  signing_key:
213
213
  specification_version: 4
214
214
  summary: Easy permissions engine for Rails app.