ecm_rbac 1.2.1 → 2.0.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: 5d2fb5aa9df2560e3108782604386f1ef0a4ed1c
4
- data.tar.gz: c83662e5bb3e4a978d8c5a0fb9f04614ba0d38d3
3
+ metadata.gz: 5ed4686cba3dff28833d93e5ab2537f8c99b10a0
4
+ data.tar.gz: ea2edbf2d87f23af58ec62653c6a360f682afc0f
5
5
  SHA512:
6
- metadata.gz: c53db95549cce94c85e00ca64c2975c442be38c82d2988d3497648683bbb8a76cf13769a22de4a8732d18e7aa2bbf6c27d87fd92fd4139cb67074587f3da03b9
7
- data.tar.gz: a2dbd6866250e12f345bbff1f7dbc045b1c35864547e4db28d63dac2924eb1b1cb409c4d9c345daf91d947d2d0c680ada61cbf41637b284ae42840b8522b47fc
6
+ metadata.gz: 11f7cd004056ffb25338cbe0fd69c4399a1bf6fbdb92048b806960e022887d2e9b634b27db5df045a8fffdfd98112ad61138a1a8bcc3c7e4f44ea27cbb3546b2
7
+ data.tar.gz: 8e5582e3436bb0a88153fddffb1cf3cfc62eec56368eab193ad08dd2c6d60b72299fb1b1acb7b1e2c73c84781343d93af8ec8bcd9ac5d3b8367c24d4496ab48b
@@ -1,122 +1,151 @@
1
- require_dependency 'itsf_services'
1
+ # require_dependency 'itsf_services'
2
2
  require_dependency 'active_model/validations/file_readability_validator'
3
3
 
4
- module Ecm::Rbac
5
- class ImportDefaultPermissionsService < ApplicationService
6
- class Result < ApplicationService::Result
7
- attr_accessor :permissions, :roles, :role_permissions
8
- end
9
-
10
- attr_accessor :filename
4
+ module Ecm
5
+ module Rbac
6
+ # Example:
7
+ #
8
+ # # config/rbac.yml:
9
+ # defaults:
10
+ # permissions:
11
+ # - posts/index
12
+ # - posts/show
13
+ # roles:
14
+ # member:
15
+ # - posts/index
16
+ # - posts/show
17
+ #
18
+ # # rails console:
19
+ # Ecm::Rbac::ImportDefaultPermissionsService.call
20
+ # =>
21
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Performing...
22
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Validating input...
23
+ # [Ecm::Rbac::ImportDefaultPermissionsService] => Done
24
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Loaded YAML from /home/johndoe/rails_application/config/rbac.yml
25
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Checking for valid YAML structure
26
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Loaded 2 permissions
27
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Loaded 1 roles
28
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Saved 2 permissions
29
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Saved 1 roles
30
+ # [Ecm::Rbac::ImportDefaultPermissionsService] Saved 2 role permissions
31
+ # [Ecm::Rbac::ImportDefaultPermissionsService] => Done
32
+ #
33
+ class ImportDefaultPermissionsService < ApplicationService
34
+ class Result < ApplicationService::Result
35
+ attr_accessor :permissions, :roles, :role_permissions
36
+ end
11
37
 
12
- validates :filename, file_readability: true
38
+ attr_accessor :filename
13
39
 
14
- def _perform
15
- say 'Validating input' do
16
- unless valid?
17
- say "Inputs are invalid. Errors: #{errors.full_messages.to_sentence}"
18
- say 'Aborted'
19
- return
20
- end
21
- end
40
+ validates :filename, file_readability: true
22
41
 
23
- return unless load_yaml
24
- return unless yaml_structure_valid?
42
+ def _perform
43
+ # say 'Validating input' do
44
+ # unless valid?
45
+ # say "Inputs are invalid. Errors: #{errors.full_messages.to_sentence}"
46
+ # say 'Aborted'
47
+ # return
48
+ # end
49
+ # end
25
50
 
26
- load_permissions
27
- load_roles
51
+ return unless load_yaml
52
+ return unless yaml_structure_valid?
28
53
 
29
- @result.permissions = create_or_update_permissions
30
- @result.roles = create_or_update_roles
31
- @result.role_permissions = create_or_update_role_permissions
32
- end
54
+ load_permissions
55
+ load_roles
33
56
 
34
- private
57
+ @result.permissions = create_or_update_permissions
58
+ @result.roles = create_or_update_roles
59
+ @result.role_permissions = create_or_update_role_permissions
60
+ end
35
61
 
36
- def filename
37
- @filename ||= Ecm::Rbac.default_permissions_filename.call
38
- end
62
+ private
39
63
 
40
- def create_or_update_permissions
41
- permissions = @permissions.collect do |permission_identifier|
42
- Ecm::Rbac::Permission.where(identifier: permission_identifier).first_or_initialize.tap do |permission|
43
- permission.save!
44
- end
64
+ def filename
65
+ @filename ||= Ecm::Rbac.default_permissions_filename.call
45
66
  end
46
- say "Saved #{permissions.count} permissions"
47
- permissions
48
- end
49
67
 
50
- def create_or_update_roles
51
- roles = @roles.collect do |role_identifier, permissions|
52
- Ecm::Rbac::Role.where(identifier: role_identifier).first_or_initialize.tap do |role|
53
- role.save!
68
+ def create_or_update_permissions
69
+ permissions = @permissions.collect do |permission_identifier|
70
+ Ecm::Rbac::Permission.where(identifier: permission_identifier).first_or_initialize.tap do |permission|
71
+ permission.save!
72
+ end
54
73
  end
74
+ say "Saved #{permissions.count} permissions"
75
+ permissions
55
76
  end
56
- say "Saved #{roles.count} roles"
57
- roles
58
- end
59
77
 
60
- def create_or_update_role_permissions
61
- role_permissions = @roles.collect do |role_identifier, permissions|
62
- role = Ecm::Rbac::Role.where(identifier: role_identifier).first
63
- (permissions ||[]).collect do |permission_identifier|
64
- permission = Ecm::Rbac::Permission.where(identifier: permission_identifier).first
65
-
66
- Ecm::Rbac::RolePermission.where(role_id: role, permission_id: permission).first_or_initialize.tap do |role_permission|
67
- role_permission.save!
78
+ def create_or_update_roles
79
+ roles = @roles.collect do |role_identifier, permissions|
80
+ Ecm::Rbac::Role.where(identifier: role_identifier).first_or_initialize.tap do |role|
81
+ role.save!
68
82
  end
69
83
  end
70
- end.flatten
71
- say "Saved #{role_permissions.count} role permissions"
72
- role_permissions
73
- end
74
-
75
- def load_permissions
76
- @permissions = @yaml[:defaults][:permissions] || []
77
- say "Loaded #{@permissions.size} permissions"
78
- end
84
+ say "Saved #{roles.count} roles"
85
+ roles
86
+ end
79
87
 
80
- def load_roles
81
- @roles = @yaml[:defaults][:roles] || []
82
- say "Loaded #{@roles.size} roles"
83
- end
88
+ def create_or_update_role_permissions
89
+ role_permissions = @roles.collect do |role_identifier, permissions|
90
+ role = Ecm::Rbac::Role.where(identifier: role_identifier).first
91
+ (permissions ||[]).collect do |permission_identifier|
92
+ permission = Ecm::Rbac::Permission.where(identifier: permission_identifier).first
84
93
 
85
- def load_yaml
86
- yaml = YAML.load_file(filename)
87
- if yaml
88
- say "Loaded YAML from #{filename}"
89
- @yaml = yaml.with_indifferent_access
90
- else
91
- say "Could not load YAML from #{filename}"
92
- @yaml = yaml
94
+ Ecm::Rbac::RolePermission.where(role_id: role, permission_id: permission).first_or_initialize.tap do |role_permission|
95
+ role_permission.save!
96
+ end
97
+ end
98
+ end.flatten
99
+ say "Saved #{role_permissions.count} role permissions"
100
+ role_permissions
93
101
  end
94
- end
95
102
 
96
- def yaml_structure_valid?
97
- say "Checking for valid YAML structure"
98
- unless @yaml.is_a?(Hash)
99
- add_error_and_say(:yaml_file, "Expected file content of #{filename} to parse to a Hash, but was #{@yaml.class}")
100
- return false
103
+ def load_permissions
104
+ @permissions = @yaml[:defaults][:permissions] || []
105
+ say "Loaded #{@permissions.size} permissions"
101
106
  end
102
107
 
103
- unless @yaml.has_key?(:defaults)
104
- add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:].")
105
- return false
108
+ def load_roles
109
+ @roles = @yaml[:defaults][:roles] || []
110
+ say "Loaded #{@roles.size} roles"
106
111
  end
107
112
 
108
- unless @yaml[:defaults].has_key?(:roles)
109
- add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:][roles:].")
110
- return false
113
+ def load_yaml
114
+ yaml = YAML.load_file(filename)
115
+ if yaml
116
+ say "Loaded YAML from #{filename}"
117
+ @yaml = yaml.with_indifferent_access
118
+ else
119
+ say "Could not load YAML from #{filename}"
120
+ @yaml = yaml
121
+ end
111
122
  end
112
123
 
124
+ def yaml_structure_valid?
125
+ say "Checking for valid YAML structure"
126
+ unless @yaml.is_a?(Hash)
127
+ add_error_and_say(:yaml_file, "Expected file content of #{filename} to parse to a Hash, but was #{@yaml.class}")
128
+ return false
129
+ end
130
+
131
+ unless @yaml.has_key?(:defaults)
132
+ add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:].")
133
+ return false
134
+ end
135
+
136
+ unless @yaml[:defaults].has_key?(:roles)
137
+ add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:][roles:].")
138
+ return false
139
+ end
113
140
 
114
- unless @yaml[:defaults].has_key?(:permissions)
115
- add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:][permissions:].")
116
- return false
117
- end
118
141
 
119
- return true
142
+ unless @yaml[:defaults].has_key?(:permissions)
143
+ add_error_and_say(:yaml_file, "Expected yaml in #{filename} to have the key [defaults:][permissions:].")
144
+ return false
145
+ end
146
+
147
+ return true
148
+ end
120
149
  end
121
150
  end
122
151
  end
@@ -1,6 +1,10 @@
1
1
  Rails.configuration.to_prepare do
2
- puts "Including Model::Ecm::Rbac::UserConcern in #{Ecm::Rbac.user_class_name}"
3
- Ecm::Rbac.user_class_name.constantize.class_eval do
4
- include Model::Ecm::Rbac::UserConcern
2
+ begin
3
+ puts "Including Model::Ecm::Rbac::UserConcern in #{Ecm::Rbac.user_class_name}"
4
+ Ecm::Rbac.user_class_name.constantize.class_eval do
5
+ include Model::Ecm::Rbac::UserConcern
6
+ end
7
+ rescue NameError => e
8
+ "Could not include Model::Ecm::Rbac::UserConcern into #{Ecm::Rbac.user_class_name}. Error: #{e.message}"
5
9
  end
6
10
  end
@@ -10,7 +10,7 @@ module Ecm
10
10
 
11
11
  mattr_accessor(:user_class_name) { 'User' }
12
12
 
13
- mattr_accessor(:default_permissions_filename) { -> { Rails.root.join('config', 'permissions', 'default.yml') } }
13
+ mattr_accessor(:default_permissions_filename) { -> { Rails.root.join('config', 'rbac.yml') } }
14
14
 
15
15
  def self.user_class
16
16
  user_class_name.constantize
@@ -1,5 +1,5 @@
1
1
  module Ecm
2
2
  module Rbac
3
- VERSION = '1.2.1'.freeze
3
+ VERSION = '2.0.0'.freeze
4
4
  end
5
5
  end
@@ -8,7 +8,7 @@ Ecm::Rbac.configure do |config|
8
8
  # Set the path of your default permissions file that will be used by
9
9
  # Ecm::Rbac::ImportDefaultPermissionsService
10
10
  #
11
- # default: config.default_permissions_filename = -> { Rails.root.join('config', 'permissions', 'default.yml') }
11
+ # default: config.default_permissions_filename = -> { Rails.root.join('config', 'rbac.yml') }
12
12
  #
13
- config.default_permissions_filename = -> { Rails.root.join('config', 'permissions', 'default.yml') }
13
+ config.default_permissions_filename = -> { Rails.root.join('config', 'rbac.yml') }
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecm_rbac
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-24 00:00:00.000000000 Z
11
+ date: 2018-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails