aserto-rails 0.20.2 → 0.30.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 +4 -4
- data/README.md +34 -0
- data/VERSION +1 -1
- data/lib/aserto/rails/controller_additions.rb +21 -0
- data/lib/aserto/rails/controller_resource.rb +16 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db5e72e6292b71ced35b0f37998cc46901356c44dfce224981a1196a0d978f0f
|
4
|
+
data.tar.gz: 72a97cb5107d799c1087636838d283b60ddd1092fcff6c9c06c5fe4cca9fe3ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30f24678897474717e27bc9120ce84a5535472efede444fa0054c48b403fd3ba3a4501f60824da2a126e560f94c245bbbda0b8a47bd34184f8d8cfa9358d9905
|
7
|
+
data.tar.gz: abd7814fc2cb926ed1e0f1e99b57f550e91c3cdc54f1b8b6ac0629cc67529d5c223e7647a432614ca82590bedf1550c91c313650e3c55fdee3587910b010ac18
|
data/README.md
CHANGED
@@ -138,6 +138,8 @@ end
|
|
138
138
|
|
139
139
|
## Controller helpers
|
140
140
|
|
141
|
+
### aserto_authorize!
|
142
|
+
|
141
143
|
The `aserto_authorize!` method in the controller will raise an exception if the user is not able to perform the given action.
|
142
144
|
|
143
145
|
```ruby
|
@@ -167,6 +169,38 @@ class PostsController < ApplicationController
|
|
167
169
|
end
|
168
170
|
```
|
169
171
|
|
172
|
+
### check!
|
173
|
+
|
174
|
+
The `check!` method in the controller will raise an exception if the user is not able to perform the given action.
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
def show
|
178
|
+
# only users in the "evil_genius" group are allowed to get this resource
|
179
|
+
check!(object_id: "evil_genius", object_type: "group", relation: "member")
|
180
|
+
@post = Post.find(params[:id])
|
181
|
+
end
|
182
|
+
```
|
183
|
+
|
184
|
+
Setting this for every action can be tedious, therefore the `aserto_check_resource` method is provided to
|
185
|
+
automatically authorize all actions in a RESTful style resource controller.
|
186
|
+
It will use a before action to load the resource into an instance variable and authorize it for every action.
|
187
|
+
|
188
|
+
```ruby
|
189
|
+
class PostsController < ApplicationController
|
190
|
+
aserto_authorize_resource
|
191
|
+
# aserto_check_resource only: %i[show], params: { object_id: "evil_genius", object_type: "group", relation: "member" }
|
192
|
+
# aserto_check_resource except: %i[index], params: { object_id: "evil_genius", object_type: "group", relation: "member" }
|
193
|
+
|
194
|
+
def show
|
195
|
+
# getting a single post authorized
|
196
|
+
end
|
197
|
+
|
198
|
+
def index
|
199
|
+
# getting all posts is authorized
|
200
|
+
end
|
201
|
+
end
|
202
|
+
```
|
203
|
+
|
170
204
|
## Check Permissions
|
171
205
|
|
172
206
|
The current user's permissions can then be checked using the `allowed?`, `visible?` and `enabled?` methods in views and controllers.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.30.0
|
@@ -8,6 +8,10 @@ module Aserto
|
|
8
8
|
aserto_resource_class.add_before_action(self, :authorize_resource, *args)
|
9
9
|
end
|
10
10
|
|
11
|
+
def aserto_check_resource(*args)
|
12
|
+
aserto_resource_class.add_before_action(self, :check_resource, *args)
|
13
|
+
end
|
14
|
+
|
11
15
|
def aserto_resource_class
|
12
16
|
ControllerResource
|
13
17
|
end
|
@@ -38,6 +42,23 @@ module Aserto
|
|
38
42
|
raise Aserto::AccessDenied unless Aserto::AuthClient.new(request).is
|
39
43
|
end
|
40
44
|
|
45
|
+
#
|
46
|
+
# Authorization call based on check relation
|
47
|
+
#
|
48
|
+
# @param [String] object_id
|
49
|
+
# @param [String] object_type
|
50
|
+
# @param [String] relation
|
51
|
+
#
|
52
|
+
# @return [nil]
|
53
|
+
#
|
54
|
+
# @raise Aserto::AccessDenied
|
55
|
+
#
|
56
|
+
def check!(object_id:, object_type:, relation:)
|
57
|
+
raise Aserto::AccessDenied unless Aserto::AuthClient.new(request).check(
|
58
|
+
object_id: object_id, object_type: object_type, relation: relation
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
41
62
|
private
|
42
63
|
|
43
64
|
def augment_request!(action, path, resource)
|
@@ -10,6 +10,22 @@ module Aserto
|
|
10
10
|
@name = args.first
|
11
11
|
end
|
12
12
|
|
13
|
+
#
|
14
|
+
# Authorization call based on check relation
|
15
|
+
#
|
16
|
+
# @param [String] object_id
|
17
|
+
# @param [String] object_type
|
18
|
+
# @param [String] relation
|
19
|
+
#
|
20
|
+
# @return [nil]
|
21
|
+
#
|
22
|
+
# @raise Aserto::AccessDenied
|
23
|
+
#
|
24
|
+
def check_resource
|
25
|
+
client = Aserto::AuthClient.new(@controller.request)
|
26
|
+
raise Aserto::AccessDenied unless client.check(**(@options[:params] || {}))
|
27
|
+
end
|
28
|
+
|
13
29
|
def authorize_resource
|
14
30
|
raise Aserto::AccessDenied unless Aserto::AuthClient.new(@controller.request).is
|
15
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aserto-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.30.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aserto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aserto
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.30.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.30.1
|
27
27
|
description: Aserto authorization library for Ruby and Ruby on Rails
|
28
28
|
email:
|
29
29
|
- aserto@aserto.com
|