pe_rbac 0.4.0 → 0.5.0

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
  SHA1:
3
- metadata.gz: 3014fbdf37cd61996d946ca5ffc913381c487f43
4
- data.tar.gz: e7843fbae2230eaa7cbdc54c7713a986f5fce735
3
+ metadata.gz: 56e58098a25e422d8137e4efadf5b370379528ae
4
+ data.tar.gz: ae014b2b5aaab17146877eeac905852a8459d81e
5
5
  SHA512:
6
- metadata.gz: 274adf65e4a1070b83a6d7eaa5b488dccfc6ce75beb1017390eb11dcd6ca75708c4f537f2232fcbf7a6ff683c462ec6b9ec83c956ee95a2716c4438c20e416f5
7
- data.tar.gz: 76167510d42307e88eea42dcdd1e3e16d4908ba33373a5579a9068c30a67a37e756f1b51b9db71861e88112e408d8dffd23a791112e2636cd209442bb211c85a
6
+ metadata.gz: e3f574eac122619ffb1d0ee39c4a041762af5c7b9ee14c625051658f5c06fdaa54f73b6f76205bb8c644931e26d46cf704d4ebc70b771fb3c1de9627fcaf2318
7
+ data.tar.gz: b5c016384239f66d858660140d31d46f5d64b8aeab8d3225dbc419c0383314a9a6d5ee190b45593452504854b21050a506295f7c3d6d26da220e1e79b3a9cfc6
data/exe/pe_rbac CHANGED
@@ -171,7 +171,7 @@ Escort::App.create do |app|
171
171
  app.command :reset_password do |command|
172
172
  command.summary "Reset a logon password"
173
173
  command.description "Obtain a reset token and then reset a password"
174
- command.action do |options, arguments|\
174
+ command.action do |options, arguments|
175
175
  # fixme - obtain automatically
176
176
  cmd = :reset_password
177
177
  username = options[:global][:commands][cmd][:options][:username]
@@ -193,4 +193,11 @@ Escort::App.create do |app|
193
193
  end
194
194
  end
195
195
 
196
+ app.command :show_permissions do |command|
197
+ command.summary "Show available permissions"
198
+ command.action do |options, arguments|
199
+ PeRbac::Action::show_permissions()
200
+ end
201
+ end
202
+
196
203
  end
@@ -15,6 +15,9 @@
15
15
 
16
16
  require 'pe_rbac/core'
17
17
  require 'pe_rbac/user'
18
+ require 'pe_rbac/permission'
19
+ require 'json'
20
+
18
21
  module PeRbac
19
22
  module Action
20
23
 
@@ -63,6 +66,10 @@ module PeRbac
63
66
  status
64
67
  end
65
68
 
69
+ def self.show_permissions
70
+ resp = PeRbac::Permission::get_permissions
71
+ puts JSON.pretty_generate(resp)
72
+ end
66
73
 
67
74
  end
68
75
  end
@@ -24,5 +24,34 @@ module PeRbac
24
24
  resp = PeRbac::Core::request(:get, "/types")
25
25
  resp ? JSON.parse(resp.body) : false
26
26
  end
27
+
28
+ # Not all requested permissions may be avaiable per use (change between
29
+ # versions). To mitigate this, requeste the list of all valid permissions
30
+ # and remove any permissions that are not in the list from the final list of
31
+ # permissions to request
32
+ def self.safe_permissions(want_perms)
33
+ safe_perms = []
34
+ valid_perms = Permission::get_permissions()
35
+
36
+ if want_perms
37
+ want_perms.each { |wp|
38
+ valid = false
39
+ valid_perms.each { |vp|
40
+ if wp['object_type'] == vp['object_type']
41
+ vp['actions'].each { |va|
42
+ # scan for valid action inside object permissions
43
+ if wp['action'] == va['name']
44
+ valid = true
45
+ end
46
+ }
47
+ end
48
+ }
49
+ if valid
50
+ safe_perms << wp
51
+ end
52
+ }
53
+ end
54
+ safe_perms
55
+ end
27
56
  end
28
57
  end
data/lib/pe_rbac/role.rb CHANGED
@@ -53,8 +53,10 @@ module PeRbac
53
53
 
54
54
  # https://docs.puppet.com/pe/latest/rbac_roles_v1.html#post-roles
55
55
  def self.create_role(display_name, description=display_name, permissions=[], user_ids=[], group_ids=[])
56
+ safe_perms = Permission::safe_permissions(permissions)
57
+
56
58
  role = {
57
- "permissions" => permissions,
59
+ "permissions" => safe_perms,
58
60
  "user_ids" => Array(user_ids),
59
61
  "group_ids" => Array(group_ids),
60
62
  "display_name" => display_name,
@@ -65,12 +67,13 @@ module PeRbac
65
67
 
66
68
  def self.update_role(display_name, description=nil, permissions=nil, user_ids=nil, group_ids=nil)
67
69
  role_id = get_role_id(display_name)
70
+ safe_perms = Permission::safe_permissions(permissions)
68
71
  status = false
69
72
  if role_id
70
73
  role = get_role(role_id)
71
74
  role['display_name'] = display_name ? display_name : role['display_name']
72
75
  role['description'] = description ? display_name : role['description']
73
- role['permissions'] = permissions ? permissions : role['permissions']
76
+ role['permissions'] = safe_perms ? safe_perms : role['permissions']
74
77
  role['user_ids'] = user_ids ? Array(user_ids) : role['user_ids']
75
78
  role['group_ids'] = group_ids ? Array(group_ids) : role['group_ids']
76
79
 
@@ -79,5 +82,6 @@ module PeRbac
79
82
  end
80
83
  status
81
84
  end
85
+
82
86
  end
83
87
  end
@@ -14,5 +14,5 @@
14
14
  # limitations under the License.
15
15
 
16
16
  module PeRbac
17
- VERSION = "0.4.0"
17
+ VERSION = "0.5.0"
18
18
  end
data/pe_rbac.gemspec CHANGED
@@ -34,4 +34,6 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_runtime_dependency "rest-client", "2.0.0"
36
36
  spec.add_runtime_dependency "escort", "0.4.0"
37
+ spec.add_runtime_dependency "json", "2.0.3"
38
+
37
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pe_rbac
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Geoff Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-14 00:00:00.000000000 Z
11
+ date: 2017-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - '='
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.4.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: json
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '='
172
+ - !ruby/object:Gem::Version
173
+ version: 2.0.3
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '='
179
+ - !ruby/object:Gem::Version
180
+ version: 2.0.3
167
181
  description: Programatically do stuff with Puppet Enterprise RBAC
168
182
  email:
169
183
  - geoff@geoffwilliams.me.uk
@@ -211,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
225
  version: '0'
212
226
  requirements: []
213
227
  rubyforge_project:
214
- rubygems_version: 2.4.5
228
+ rubygems_version: 2.5.2
215
229
  signing_key:
216
230
  specification_version: 4
217
231
  summary: Ruby API for Puppet Enterprise RBAC