audiences 1.2.1 → 1.2.2

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
  SHA256:
3
- metadata.gz: bd34ee00e56f72a0ea41a829b12ac9ddbc491380c0ae693ccaab7eba2de4dda1
4
- data.tar.gz: cb81d224d20d2ce709cafa5b25d6f3d36b006f5ff5d694fd12f03b37e60f3692
3
+ metadata.gz: 60a415497f4cea4f99f5581c92559b60e137f5cf54b3d57267cbd3ead22a72d0
4
+ data.tar.gz: 1039307cacefbf390c9cfd94d7eb6a31dc4c9ed1ed27290429c3a5045f1a9b86
5
5
  SHA512:
6
- metadata.gz: d14d0e9bdc98f4cbf166330a48f7e70ae236fafe3556034b37b4fea18a61c9b3dd2b8f9e4ea99028413ad6caaf399eb821ea4999285f8402a190b2ab03f476a4
7
- data.tar.gz: 898d631afc7d53bd7941f58dc89cc2bc351ae071fbe2739c5a778255328bdf702a92770fb5a47420d88d59fcb62741233aeebf924b8a09dba13e540c43601894
6
+ metadata.gz: 1a45b7985d7c8e8ee3a8d0c224b254a61a599af150947f3f6b6ebc06eea0157415f9a1e50e21e33dc6121cd7421759c2107d5d70b61f57e4055b0d2d73523541
7
+ data.tar.gz: 91bcdc28abc2a07481a5f3f7b77ad8a7f3765c140e4afc2e248e856333537b2502a91ea7f8243f1a02ceb8857e3c6487bbc00667f82ce1616e32a817cda3fc11
@@ -44,7 +44,7 @@ module Audiences
44
44
  params.permit(
45
45
  :match_all,
46
46
  criteria: [groups: {}],
47
- extra_users: [:externalId, :displayName, { photos: %i[type value] }]
47
+ extra_users: Audiences.config.resources[:Users].attributes
48
48
  ).to_h.symbolize_keys
49
49
  end
50
50
  end
@@ -6,7 +6,7 @@ module Audiences
6
6
  resources = Audiences::Scim.resource(params[:scim_path].to_sym)
7
7
  .query(filter: params[:filter])
8
8
 
9
- render json: resources
9
+ render json: resources, except: %w[schemas meta]
10
10
  end
11
11
  end
12
12
  end
data/docs/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Unreleased
2
2
 
3
+ # Version 1.2.2 (2024-08-21)
4
+
5
+ - Permit configured resource attributes [#375](https://github.com/powerhome/audiences/pull/375)
6
+
3
7
  # Version 1.2.1 (2024-08-06)
4
8
 
5
9
  - Fix audiences URL helpers [#372](https://github.com/powerhome/audiences/pull/372)
data/docs/README.md CHANGED
@@ -103,12 +103,12 @@ See a working example in our dummy app:
103
103
 
104
104
  ### SCIM Resource Attributes
105
105
 
106
- Configure which attributes are requested from the SCIM backend for each resource type. `Audiences` requires at least `id` and `displayName`, and also requests `photos` and `externalId` for users by default. To request additional attributes:
106
+ Configure which attributes are requested from the SCIM backend for each resource type. `Audiences` includes `id`, `externalId`, and `displayName` by default in every resource type. It also requests `photos.type` and `photos.value` for users by default. To request additional attributes:
107
107
 
108
108
  ```ruby
109
109
  Audiences.configure do |config|
110
- config.resource :Users, attributes: "id,externalId,displayName,photos,name"
111
- config.resource :Groups, attributes: "id,displayName,mfaRequired"
110
+ config.resource :Users, attributes: ["name" => %w[givenName familyName formatted]]
111
+ config.resource :Groups, attributes: %w[mfaRequired]
112
112
  end
113
113
  ```
114
114
 
@@ -46,7 +46,7 @@ module Audiences
46
46
  # @see `resource`.
47
47
  #
48
48
  config_accessor :resources do
49
- { Users: Scim::Resource.new(type: :Users, attributes: "id,externalId,displayName,photos") }
49
+ { Users: Scim::Resource.new(type: :Users, attributes: ["photos" => %w[type value]]) }
50
50
  end
51
51
 
52
52
  #
@@ -55,8 +55,8 @@ module Audiences
55
55
  # @param type [Symbol] the resource type in plural, as in scim (i.e.: :Users)
56
56
  # @param attributes [String] the list of attributes to fetch for the resource (i.e.: "id,externalId,displayName")
57
57
  # @see [Audiences::Scim::Resource]
58
- def config.resource(type:, **kwargs)
59
- config.resources[type] = Scim::Resource.new(type: type, **kwargs)
58
+ def config.resource(type, **kwargs)
59
+ resources[type] = Scim::Resource.new(type: type, **kwargs)
60
60
  end
61
61
 
62
62
  #
@@ -3,16 +3,31 @@
3
3
  module Audiences
4
4
  module Scim
5
5
  class Resource
6
- attr_accessor :options, :type
6
+ attr_accessor :options, :type, :attributes
7
7
 
8
- def initialize(type:, attributes: "id,externalId,displayName", **options)
8
+ def initialize(type:, attributes: [], **options)
9
9
  @type = type
10
10
  @options = options
11
- @options[:attributes] = attributes
11
+ @attributes = ["id", "externalId", "displayName", *attributes]
12
12
  end
13
13
 
14
14
  def query(**options)
15
- ResourcesQuery.new(Scim.client, resource: self, **@options, **options)
15
+ ResourcesQuery.new(Scim.client, resource: self,
16
+ attributes: scim_attributes,
17
+ **@options, **options)
18
+ end
19
+
20
+ def scim_attributes
21
+ @attributes.reduce([]) do |attrs, attr|
22
+ case attr
23
+ when Hash
24
+ attrs + attr.map do |key, nested_attrs|
25
+ nested_attrs.map { "#{key}.#{_1}" }
26
+ end
27
+ else
28
+ attrs + [attr]
29
+ end
30
+ end.join(",")
16
31
  end
17
32
  end
18
33
  end
@@ -12,9 +12,9 @@ module Audiences
12
12
  Client.new(**Audiences.config.scim)
13
13
  end
14
14
 
15
- def resource(type, **options)
15
+ def resource(type)
16
16
  Audiences.config.resources.fetch(type) do
17
- Resource.new(type: type, **options)
17
+ Resource.new(type: type)
18
18
  end
19
19
  end
20
20
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Audiences
4
- VERSION = "1.2.1"
4
+ VERSION = "1.2.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: audiences
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Palhares
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-06 00:00:00.000000000 Z
11
+ date: 2024-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails