warrant 2.2.0 → 3.0.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: b2de57e7f6362b34f03718a734f921659060d75eb720068cb4b891dfd0b54040
4
- data.tar.gz: d410a14ae055941fd09cfc8476d6faf9d228f39596e5b6414b58a38520cf50ac
3
+ metadata.gz: 8782e5ba0cc2c866761a7c4d906eebe324202b9ea12a14f50b0f250c62483c20
4
+ data.tar.gz: cfe03ef0070f0e60d8c88f1a8e636c93eb7265d5a367e6f1d99cb787a2e0aff3
5
5
  SHA512:
6
- metadata.gz: ebd8297df53e8f8e2baa67bd602587344ef8ad2ffcc1db03a8e247a3a4cf2e41f55dd90916dd93196398a21a39a726ec8d4871cb3cd7f3f3c14ba9e6dd27ca14
7
- data.tar.gz: 3e6b64ac8e89d4282f235190d9873045d608ce2a1eea4f4adbf0bf95924fbe2046321340d05b73c65eeffbfcd5c9d702ebdfed238af56cceb11aaa943b463ec3
6
+ metadata.gz: 7e7a48c244de2fa3a9e402682c3775f84e429e1330404dc1b06281dd5c689379cb974e47c6fc0fc0b8175d52edbaea34e893946c3bcbec029d7d579201e05ffc
7
+ data.tar.gz: 966d6a67910a9d001f26a592fc226813b9d82acd61b2cb684c84fff8adc9e1b63e50970c366c217022f5bf5a57316d977f1d0736930c038a9af79171f99dd2f1
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class Feature
5
+ OBJECT_TYPE = "feature"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :feature_id
@@ -134,7 +136,7 @@ module Warrant
134
136
  # @param tenant_id [String] The tenant_id of the tenant you want to assign a feature to.
135
137
  # @param feature_id [String] The feature_id of the feature you want to assign to a tenant.
136
138
  #
137
- # @return [Feature] assigned feature
139
+ # @return [Warrant] warrant assigning feature to tenant
138
140
  #
139
141
  # @raise [Warrant::DuplicateRecordError]
140
142
  # @raise [Warrant::InternalError]
@@ -142,15 +144,7 @@ module Warrant
142
144
  # @raise [Warrant::NotFoundError]
143
145
  # @raise [Warrant::UnauthorizedError]
144
146
  def self.assign_to_tenant(tenant_id, feature_id)
145
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/features/#{feature_id}"))
146
-
147
- case res
148
- when Net::HTTPSuccess
149
- feature = JSON.parse(res.body)
150
- Feature.new(feature['featureId'])
151
- else
152
- APIOperations.raise_error(res)
153
- end
147
+ Warrant.create({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: Tenant::OBJECT_TYPE, object_id: tenant_id })
154
148
  end
155
149
 
156
150
  # Remove a feature from a tenant
@@ -166,14 +160,7 @@ module Warrant
166
160
  # @raise [Warrant::UnauthorizedError]
167
161
  # @raise [Warrant::WarrantError]
168
162
  def self.remove_from_tenant(tenant_id, feature_id)
169
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/features/#{feature_id}"))
170
-
171
- case res
172
- when Net::HTTPSuccess
173
- return
174
- else
175
- APIOperations.raise_error(res)
176
- end
163
+ Warrant.delete({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: Tenant::OBJECT_TYPE, object_id: tenant_id })
177
164
  end
178
165
 
179
166
  # List features for user
@@ -204,7 +191,7 @@ module Warrant
204
191
  # @param user_id [String] The user_id of the user you want to assign a feature to.
205
192
  # @param feature_id [String] The feature_id of the feature you want to assign to a user.
206
193
  #
207
- # @return [Feature] assigned feature
194
+ # @return [Warrant] warrant assigning feature to user
208
195
  #
209
196
  # @raise [Warrant::DuplicateRecordError]
210
197
  # @raise [Warrant::InternalError]
@@ -212,15 +199,7 @@ module Warrant
212
199
  # @raise [Warrant::NotFoundError]
213
200
  # @raise [Warrant::UnauthorizedError]
214
201
  def self.assign_to_user(user_id, feature_id)
215
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/features/#{feature_id}"))
216
-
217
- case res
218
- when Net::HTTPSuccess
219
- feature = JSON.parse(res.body)
220
- Feature.new(feature['featureId'])
221
- else
222
- APIOperations.raise_error(res)
223
- end
202
+ Warrant.create({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
224
203
  end
225
204
 
226
205
  # Remove a feature from a user
@@ -236,14 +215,7 @@ module Warrant
236
215
  # @raise [Warrant::UnauthorizedError]
237
216
  # @raise [Warrant::WarrantError]
238
217
  def self.remove_from_user(user_id, feature_id)
239
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/features/#{feature_id}"))
240
-
241
- case res
242
- when Net::HTTPSuccess
243
- return
244
- else
245
- APIOperations.raise_error(res)
246
- end
218
+ Warrant.delete({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
247
219
  end
248
220
 
249
221
  # List features for pricing tier
@@ -274,7 +246,7 @@ module Warrant
274
246
  # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to assign a feature to.
275
247
  # @param feature_id [String] The feature_id of the feature you want to assign to a pricing tier.
276
248
  #
277
- # @return [Feature] assigned pricing tier
249
+ # @return [Warrant] warrant assigning feature to pricing tier
278
250
  #
279
251
  # @raise [Warrant::DuplicateRecordError]
280
252
  # @raise [Warrant::InternalError]
@@ -282,15 +254,7 @@ module Warrant
282
254
  # @raise [Warrant::NotFoundError]
283
255
  # @raise [Warrant::UnauthorizedError]
284
256
  def self.assign_to_pricing_tier(pricing_tier_id, feature_id)
285
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers/#{pricing_tier_id}/features/#{feature_id}"))
286
-
287
- case res
288
- when Net::HTTPSuccess
289
- feature = JSON.parse(res.body)
290
- Feature.new(feature['featureId'])
291
- else
292
- APIOperations.raise_error(res)
293
- end
257
+ Warrant.create({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id })
294
258
  end
295
259
 
296
260
  # Remove a feature from a pricing tier
@@ -306,14 +270,7 @@ module Warrant
306
270
  # @raise [Warrant::UnauthorizedError]
307
271
  # @raise [Warrant::WarrantError]
308
272
  def self.remove_from_pricing_tier(pricing_tier_id, feature_id)
309
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/pricing-tiers/#{pricing_tier_id}/features/#{feature_id}"))
310
-
311
- case res
312
- when Net::HTTPSuccess
313
- return
314
- else
315
- APIOperations.raise_error(res)
316
- end
273
+ Warrant.delete({ object_type: Feature::OBJECT_TYPE, object_id: feature_id }, "member", { object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id })
317
274
  end
318
275
 
319
276
  def warrant_object_type
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class Permission
5
+ OBJECT_TYPE = "permission"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :permission_id, :name, :description
@@ -186,7 +188,7 @@ module Warrant
186
188
  # @param role_id [String] The role_id of the role you want to assign a permission to.
187
189
  # @param permission_id [String] The permission_id of the permission you want to assign to a role.
188
190
  #
189
- # @return [Permission] assigned permission
191
+ # @return [Warrant] warrant assigning permission to role
190
192
  #
191
193
  # @raise [Warrant::DuplicateRecordError]
192
194
  # @raise [Warrant::InternalError]
@@ -195,15 +197,7 @@ module Warrant
195
197
  # @raise [Warrant::NotFoundError]
196
198
  # @raise [Warrant::UnauthorizedError]
197
199
  def self.assign_to_role(role_id, permission_id)
198
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}/permissions/#{permission_id}"))
199
-
200
- case res
201
- when Net::HTTPSuccess
202
- permission = JSON.parse(res.body)
203
- Permission.new(permission['permissionId'], permission['name'], permission['description'])
204
- else
205
- APIOperations.raise_error(res)
206
- end
200
+ Warrant.create({ object_type: Permission::OBJECT_TYPE, object_id: permission_id }, "member", { object_type: Role::OBJECT_TYPE, object_id: role_id })
207
201
  end
208
202
 
209
203
  # Remove a permission from a role
@@ -219,14 +213,7 @@ module Warrant
219
213
  # @raise [Warrant::UnauthorizedError]
220
214
  # @raise [Warrant::WarrantError]
221
215
  def self.remove_from_role(role_id, permission_id)
222
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/roles/#{role_id}/permissions/#{permission_id}"))
223
-
224
- case res
225
- when Net::HTTPSuccess
226
- return
227
- else
228
- APIOperations.raise_error(res)
229
- end
216
+ Warrant.delete({ object_type: Permission::OBJECT_TYPE, object_id: permission_id }, "member", { object_type: Role::OBJECT_TYPE, object_id: role_id })
230
217
  end
231
218
 
232
219
  # List permissions for a user
@@ -257,7 +244,7 @@ module Warrant
257
244
  # @param user_id [String] The user_id of the user you want to assign a permission to.
258
245
  # @param permission_id [String] The permission_id of the permission you want to assign to a user.
259
246
  #
260
- # @return [Permission] assigned permission
247
+ # @return [Warrant] warrant assigning permission to user
261
248
  #
262
249
  # @raise [Warrant::DuplicateRecordError]
263
250
  # @raise [Warrant::InternalError]
@@ -266,15 +253,7 @@ module Warrant
266
253
  # @raise [Warrant::NotFoundError]
267
254
  # @raise [Warrant::UnauthorizedError]
268
255
  def self.assign_to_user(user_id, permission_id)
269
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/permissions/#{permission_id}"))
270
-
271
- case res
272
- when Net::HTTPSuccess
273
- permission = JSON.parse(res.body)
274
- Permission.new(permission['permissionId'], permission['name'], permission['description'])
275
- else
276
- APIOperations.raise_error(res)
277
- end
256
+ Warrant.create({ object_type: Permission::OBJECT_TYPE, object_id: permission_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
278
257
  end
279
258
 
280
259
  # Remove a permission from a user
@@ -290,14 +269,7 @@ module Warrant
290
269
  # @raise [Warrant::UnauthorizedError]
291
270
  # @raise [Warrant::WarrantError]
292
271
  def self.remove_from_user(user_id, permission_id)
293
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/permissions/#{permission_id}"))
294
-
295
- case res
296
- when Net::HTTPSuccess
297
- return
298
- else
299
- APIOperations.raise_error(res)
300
- end
272
+ Warrant.delete({ object_type: Permission::OBJECT_TYPE, object_id: permission_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
301
273
  end
302
274
 
303
275
  def warrant_object_type
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class PricingTier
5
+ OBJECT_TYPE = "pricing-tier"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :pricing_tier_id
@@ -135,7 +137,7 @@ module Warrant
135
137
  # @param tenant_id [String] The tenant_id of the tenant you want to assign a pricing tier to.
136
138
  # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to assign to a tenant.
137
139
  #
138
- # @return [PricingTier] assigned pricing tier
140
+ # @return [Warrant] warrant assigning pricing tier to tenant
139
141
  #
140
142
  # @raise [Warrant::DuplicateRecordError]
141
143
  # @raise [Warrant::InternalError]
@@ -143,15 +145,7 @@ module Warrant
143
145
  # @raise [Warrant::NotFoundError]
144
146
  # @raise [Warrant::UnauthorizedError]
145
147
  def self.assign_to_tenant(tenant_id, pricing_tier_id)
146
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/pricing-tiers/#{pricing_tier_id}"))
147
-
148
- case res
149
- when Net::HTTPSuccess
150
- pricing_tier = JSON.parse(res.body)
151
- PricingTier.new(pricing_tier['pricingTierId'])
152
- else
153
- APIOperations.raise_error(res)
154
- end
148
+ Warrant.create({ object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id }, "member", { object_type: Tenant::OBJECT_TYPE, object_id: tenant_id })
155
149
  end
156
150
 
157
151
  # Remove a pricing tier from a tenant
@@ -167,14 +161,7 @@ module Warrant
167
161
  # @raise [Warrant::UnauthorizedError]
168
162
  # @raise [Warrant::WarrantError]
169
163
  def self.remove_from_tenant(tenant_id, pricing_tier_id)
170
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/pricing-tiers/#{pricing_tier_id}"))
171
-
172
- case res
173
- when Net::HTTPSuccess
174
- return
175
- else
176
- APIOperations.raise_error(res)
177
- end
164
+ Warrant.delete({ object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id }, "member", { object_type: Tenant::OBJECT_TYPE, object_id: tenant_id })
178
165
  end
179
166
 
180
167
  # List pricing tiers for user
@@ -205,7 +192,7 @@ module Warrant
205
192
  # @param user_id [String] The user_id of the user you want to assign a pricing tier to.
206
193
  # @param pricing_tier_id [String] The pricing_tier_id of the pricing tier you want to assign to a user.
207
194
  #
208
- # @return [PricingTier] assigned pricing tier
195
+ # @return [Warrant] warrant assigning pricing tier to user
209
196
  #
210
197
  # @raise [Warrant::DuplicateRecordError]
211
198
  # @raise [Warrant::InternalError]
@@ -213,15 +200,7 @@ module Warrant
213
200
  # @raise [Warrant::NotFoundError]
214
201
  # @raise [Warrant::UnauthorizedError]
215
202
  def self.assign_to_user(user_id, pricing_tier_id)
216
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/pricing-tiers/#{pricing_tier_id}"))
217
-
218
- case res
219
- when Net::HTTPSuccess
220
- pricing_tier = JSON.parse(res.body)
221
- PricingTier.new(pricing_tier['pricingTierId'])
222
- else
223
- APIOperations.raise_error(res)
224
- end
203
+ Warrant.create({ object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
225
204
  end
226
205
 
227
206
  # Remove a pricing tier from a user
@@ -237,14 +216,7 @@ module Warrant
237
216
  # @raise [Warrant::UnauthorizedError]
238
217
  # @raise [Warrant::WarrantError]
239
218
  def self.remove_from_user(user_id, pricing_tier_id)
240
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/pricing-tiers/#{pricing_tier_id}"))
241
-
242
- case res
243
- when Net::HTTPSuccess
244
- return
245
- else
246
- APIOperations.raise_error(res)
247
- end
219
+ Warrant.delete({ object_type: PricingTier::OBJECT_TYPE, object_id: pricing_tier_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
248
220
  end
249
221
 
250
222
  # List features for a pricing tier
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class Role
5
+ OBJECT_TYPE = "role"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :role_id, :name, :description
@@ -186,7 +188,7 @@ module Warrant
186
188
  # @param user_id [String] The user_id of the user you want to assign a role to.
187
189
  # @param role_id [String] The role_id of the role you want to assign to a user.
188
190
  #
189
- # @return [Role] assigned role
191
+ # @return [Warrant] warrant assigning role to user
190
192
  #
191
193
  # @raise [Warrant::DuplicateRecordError]
192
194
  # @raise [Warrant::InternalError]
@@ -195,15 +197,7 @@ module Warrant
195
197
  # @raise [Warrant::NotFoundError]
196
198
  # @raise [Warrant::UnauthorizedError]
197
199
  def self.assign_to_user(user_id, role_id)
198
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/roles/#{role_id}"))
199
-
200
- case res
201
- when Net::HTTPSuccess
202
- role = JSON.parse(res.body)
203
- Role.new(role['roleId'], role['name'], role['description'])
204
- else
205
- APIOperations.raise_error(res)
206
- end
200
+ Warrant.create({ object_type: Role::OBJECT_TYPE, object_id: role_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
207
201
  end
208
202
 
209
203
  # Remove a role from a user
@@ -220,14 +214,7 @@ module Warrant
220
214
  # @raise [Warrant::UnauthorizedError]
221
215
  # @raise [Warrant::WarrantError]
222
216
  def self.remove_from_user(user_id, role_id)
223
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/users/#{user_id}/roles/#{role_id}"))
224
-
225
- case res
226
- when Net::HTTPSuccess
227
- return
228
- else
229
- APIOperations.raise_error(res)
230
- end
217
+ Warrant.delete({ object_type: Role::OBJECT_TYPE, object_id: role_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
231
218
  end
232
219
 
233
220
  # List assigned permissions for the role
@@ -33,6 +33,7 @@ module Warrant
33
33
  # @param redirect_url [String] URL to redirect to once self-service session is created
34
34
  # @option params [String] :user_id Id of the user to create a session for.
35
35
  # @option params [String] :tenant_id Id of the tenant to create a session for
36
+ # @option params [String] :self_service_strategy Determines whether a self-service token can be used for managing user roles and permissions (`rbac`) or managing fine-grained user access to a particular object (`fgac`)
36
37
  # @option params [Integer] :ttl Number of seconds a session should live for. By default session tokens live for 24 hours and self service tokens live for 30 minutes.
37
38
  #
38
39
  # @return [String] URL to the self service dashboard
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class Tenant
5
+ OBJECT_TYPE = "tenant"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :tenant_id, :name, :created_at
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Warrant
4
4
  class User
5
+ OBJECT_TYPE = "user"
6
+
5
7
  include Warrant::WarrantObject
6
8
 
7
9
  attr_reader :user_id, :email, :created_at
@@ -358,16 +360,7 @@ module Warrant
358
360
  # @raise [Warrant::NotFoundError]
359
361
  # @raise [Warrant::UnauthorizedError]
360
362
  def self.assign_to_tenant(tenant_id, user_id)
361
- res = APIOperations.post(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/users/#{user_id}"))
362
-
363
- case res
364
- when Net::HTTPSuccess
365
- res_json = JSON.parse(res.body)
366
- subject = Subject.new(res_json['subject']['objectType'], res_json['subject']['objectId'], res_json['subject']['relation'])
367
- Warrant.new(res_json['objectType'], res_json['objectId'], res_json['relation'], subject)
368
- else
369
- APIOperations.raise_error(res)
370
- end
363
+ Warrant.create({ object_type: Tenant::OBJECT_TYPE, object_id: tenant_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
371
364
  end
372
365
 
373
366
  # Remove a user from a tenant
@@ -382,14 +375,7 @@ module Warrant
382
375
  # @raise [Warrant::UnauthorizedError]
383
376
  # @raise [Warrant::WarrantError]
384
377
  def self.remove_from_tenant(tenant_id, user_id)
385
- res = APIOperations.delete(URI.parse("#{::Warrant.config.api_base}/v1/tenants/#{tenant_id}/users/#{user_id}"))
386
-
387
- case res
388
- when Net::HTTPSuccess
389
- return
390
- else
391
- APIOperations.raise_error(res)
392
- end
378
+ Warrant.delete({ object_type: Tenant::OBJECT_TYPE, object_id: tenant_id }, "member", { object_type: User::OBJECT_TYPE, object_id: user_id })
393
379
  end
394
380
 
395
381
  # List all tenants for a user
@@ -16,9 +16,9 @@ module Warrant
16
16
 
17
17
  # Create a new warrant that associates an object (object_type and object_id) to a subject via a relation.
18
18
  #
19
- # @param object [WarrantObject] Object to check in the access check. Object must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`). The object type must be one of your system's existing object type.
19
+ # @param object [WarrantObject | Hash] Object to check in the access check. Object must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`). The object type must be one of your system's existing object type.
20
20
  # @param relation [String] The relation to check for this object to subject association. The relation must be valid as per the object type definition.
21
- # @param subject [WarrantObject] Subject to check in the access check. Subject must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`).
21
+ # @param subject [WarrantObject | Hash] Subject to check in the access check. Subject must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`).
22
22
  # @param context [Hash] - Object containing key-value pairs that specifies the context the warrant should be created for. (optional)
23
23
  #
24
24
  # @return [Warrant] created warrant
@@ -32,12 +32,12 @@ module Warrant
32
32
  # @raise [Warrant::WarrantError]
33
33
  def self.create(object, relation, subject, context = nil)
34
34
  params = {
35
- object_type: object.warrant_object_type.to_s,
36
- object_id: object.warrant_object_id.to_s,
35
+ object_type: object.respond_to?(:warrant_object_type) ? object.warrant_object_type.to_s : object[:object_type],
36
+ object_id: object.respond_to?(:warrant_object_id) ? object.warrant_object_id.to_s : object[:object_id],
37
37
  relation: relation,
38
38
  subject: {
39
- object_type: subject.warrant_object_type.to_s,
40
- object_id: subject.warrant_object_id.to_s
39
+ object_type: subject.respond_to?(:warrant_object_type) ? subject.warrant_object_type.to_s : subject[:object_type],
40
+ object_id: subject.respond_to?(:warrant_object_id) ? subject.warrant_object_id.to_s : subject[:object_id]
41
41
  },
42
42
  context: context
43
43
  }
@@ -55,9 +55,9 @@ module Warrant
55
55
 
56
56
  # Deletes a warrant specified by the combination of object_type, object_id, relation, and subject.
57
57
  #
58
- # @param object [WarrantObject] Object to check in the access check. Object must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`). The object type must be one of your system's existing object type.
58
+ # @param object [WarrantObject | Hash] Object to check in the access check. Object must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`). The object type must be one of your system's existing object type.
59
59
  # @param relation [String] The relation to check for this object to subject association. The relation must be valid as per the object type definition.
60
- # @param subject [WarrantObject] Subject to check in the access check. Subject must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`).
60
+ # @param subject [WarrantObject | Hash] Subject to check in the access check. Subject must include WarrantObject module and implements its methods (`warrant_object_type` and `warrant_object_id`).
61
61
  # @param context [Hash] - Object containing key-value pairs that specifies the context the warrant should be deleted in. (optional)
62
62
  #
63
63
  # @return [nil] if delete was successful
@@ -69,12 +69,12 @@ module Warrant
69
69
  # @raise [Warrant::WarrantError]
70
70
  def self.delete(object, relation, subject, context = nil)
71
71
  params = {
72
- object_type: object.warrant_object_type.to_s,
73
- object_id: object.warrant_object_id.to_s,
72
+ object_type: object.respond_to?(:warrant_object_type) ? object.warrant_object_type.to_s : object[:object_type],
73
+ object_id: object.respond_to?(:warrant_object_id) ? object.warrant_object_id.to_s : object[:object_id],
74
74
  relation: relation,
75
75
  subject: {
76
- object_type: subject.warrant_object_type.to_s,
77
- object_id: subject.warrant_object_id.to_s
76
+ object_type: subject.respond_to?(:warrant_object_type) ? subject.warrant_object_type.to_s : subject[:object_type],
77
+ object_id: subject.respond_to?(:warrant_object_id) ? subject.warrant_object_id.to_s : subject[:object_id]
78
78
  },
79
79
  context: context
80
80
  }
@@ -344,11 +344,11 @@ module Warrant
344
344
  def self.user_has_permission?(params = {})
345
345
  return is_authorized?(
346
346
  warrants: [{
347
- object_type: "permission",
347
+ object_type: Permission::OBJECT_TYPE,
348
348
  object_id: params[:permission_id],
349
349
  relation: "member",
350
350
  subject: {
351
- object_type: "user",
351
+ object_type: User::OBJECT_TYPE,
352
352
  object_id: params[:user_id]
353
353
  },
354
354
  context: params[:context]
@@ -377,7 +377,7 @@ module Warrant
377
377
  def self.has_feature?(params = {})
378
378
  return is_authorized?(
379
379
  warrants: [{
380
- object_type: "feature",
380
+ object_type: Feature::OBJECT_TYPE,
381
381
  object_id: params[:feature_id],
382
382
  relation: "member",
383
383
  subject: {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Warrant
4
- VERSION = "2.2.0"
4
+ VERSION = "3.0.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warrant
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Warrant
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-27 00:00:00.000000000 Z
11
+ date: 2023-03-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby library for the Warrant API at https://warrant.dev.
14
14
  email: hello@warrant.dev
@@ -50,7 +50,7 @@ metadata:
50
50
  source_code_uri: https://github.com/warrant-dev/warrant-ruby
51
51
  changelog_uri: https://github.com/warrant-dev/warrant-ruby/CHANGELOG.md
52
52
  documentation_uri: https://docs.warrant.dev/
53
- post_install_message:
53
+ post_install_message:
54
54
  rdoc_options: []
55
55
  require_paths:
56
56
  - lib
@@ -65,8 +65,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  requirements: []
68
- rubygems_version: 3.2.33
69
- signing_key:
68
+ rubygems_version: 3.2.32
69
+ signing_key:
70
70
  specification_version: 4
71
71
  summary: Warrant Ruby Library
72
72
  test_files: []