oso-cloud 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
  SHA256:
3
- metadata.gz: ae0bc3e70a6d9ea8aeb9f6f02af64afa1ca65099ea036d75d2a611bed86e3f83
4
- data.tar.gz: d46f670990a2ffff708c3a72d54f9bed2da6602e8699d3ffab3108d18750851a
3
+ metadata.gz: 7358c36375c04ca97c57ca8f326b49f1610b3a256aed07550a61a0f8208484aa
4
+ data.tar.gz: bf8823521cd89afe363c7a1241f7642c8badf49dc57a0a785330d129b963fe68
5
5
  SHA512:
6
- metadata.gz: 118581772825e045e4f1237a43d8d8077fef30c2f8118d9886ab5d3bbfdbdfa1de383216b2426520a0aee0e0b61239a0153c177cac48de874b4832fac87b50a3
7
- data.tar.gz: 6a66ab888f95a43e64ae69e3d8e9c378077da17d5dd580185b25b77371c532bb2ec169df9cdd6781cf0f43b11a68ded664d26ed9efff0d877f9019e75967a2aa
6
+ metadata.gz: f7a1a6b6167562bb18fa9be85995a7e14384bc551d5ae0da3201f61aa8ece1c77ad7e1eaba9c47107feb2e7f8a92619cf92d386ce82525df601118f3744b47c2
7
+ data.tar.gz: '09d05422cfd5af07383c358d734e64a52a8508653c4719b6501c393c7ca52a85c68b26a973efbfca7a1ab5c172c1f01bd4418f8eec6906fabc0ee31bb2bde26a'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oso-cloud (0.4.0)
4
+ oso-cloud (0.5.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/oso/client.rb CHANGED
@@ -27,6 +27,40 @@ module Oso
27
27
  allowed
28
28
  end
29
29
 
30
+ def authorize_resources(actor, action, resources)
31
+ return [] if resources.nil?
32
+ return [] if resources.empty?
33
+
34
+ key = lambda do |type, id|
35
+ "#{type}:#{id}"
36
+ end
37
+
38
+ resources_extracted = resources.map { |r| extract_typed_id(r) }
39
+ actor_typed_id = extract_typed_id actor
40
+ result = POST('authorize_resources', {
41
+ actor_type: actor_typed_id.type, actor_id: actor_typed_id.id,
42
+ action: action,
43
+ resources: resources_extracted
44
+ })
45
+
46
+ return [] if result['results'].empty?
47
+
48
+ results_lookup = Hash.new
49
+ result['results'].each do |r|
50
+ k = key.call(r['type'], r['id'])
51
+ if results_lookup[k] == nil
52
+ results_lookup[k] = true
53
+ end
54
+ end
55
+
56
+ results = resources.select do |r|
57
+ e = extract_typed_id(r)
58
+ exists = results_lookup[key.call(e.type, e.id)]
59
+ exists
60
+ end
61
+ results
62
+ end
63
+
30
64
  def list(actor, action, resource_type)
31
65
  actor_typed_id = extract_typed_id actor
32
66
  result = POST('list', {
@@ -37,6 +71,17 @@ module Oso
37
71
  results = result['results']
38
72
  results
39
73
  end
74
+
75
+ def actions(actor, resource)
76
+ actor_typed_id = extract_typed_id actor
77
+ resource_typed_id = extract_typed_id resource
78
+ result = POST('actions', {
79
+ actor_type: actor_typed_id.type, actor_id: actor_typed_id.id,
80
+ resource_type: resource_typed_id.type, resource_id: resource_typed_id.id,
81
+ })
82
+ results = result['results']
83
+ results
84
+ end
40
85
 
41
86
  def tell(predicate, *args)
42
87
  typed_args = args.map { |a| extract_typed_id a}
data/lib/oso/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Oso
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.5.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oso-cloud
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
  - Oso Security, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-18 00:00:00.000000000 Z
11
+ date: 2022-05-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest