Skip to content

Commit 31a0e79

Browse files
authored
feat: Include Feature Flags decoded from the JWT in the payload of a Session (#386)
1 parent b9d89e2 commit 31a0e79

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

lib/workos/session.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def authenticate
5151
role: decoded['role'],
5252
permissions: decoded['permissions'],
5353
entitlements: decoded['entitlements'],
54+
feature_flags: decoded['feature_flags'],
5455
user: session[:user],
5556
impersonator: session[:impersonator],
5657
reason: nil,

spec/lib/workos/session_spec.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
organization_id: 'org_id',
175175
role: 'role',
176176
permissions: ['read'],
177+
feature_flags: nil,
177178
entitlements: nil,
178179
user: 'user',
179180
impersonator: 'impersonator',
@@ -209,6 +210,43 @@
209210
role: 'role',
210211
permissions: ['read'],
211212
entitlements: ['billing'],
213+
feature_flags: nil,
214+
user: 'user',
215+
impersonator: 'impersonator',
216+
reason: nil,
217+
})
218+
end
219+
end
220+
221+
describe 'with feature flags' do
222+
let(:payload) do
223+
{
224+
sid: 'session_id',
225+
org_id: 'org_id',
226+
role: 'role',
227+
permissions: ['read'],
228+
feature_flags: ['new_feature_enabled'],
229+
exp: Time.now.to_i + 3600,
230+
}
231+
end
232+
233+
it 'includes feature flags in the result' do
234+
session = WorkOS::Session.new(
235+
user_management: user_management,
236+
client_id: client_id,
237+
session_data: session_data,
238+
cookie_password: cookie_password,
239+
)
240+
allow_any_instance_of(JWT::Decode).to receive(:verify_signature).and_return(true)
241+
result = session.authenticate
242+
expect(result).to eq({
243+
authenticated: true,
244+
session_id: 'session_id',
245+
organization_id: 'org_id',
246+
role: 'role',
247+
permissions: ['read'],
248+
entitlements: nil,
249+
feature_flags: ['new_feature_enabled'],
212250
user: 'user',
213251
impersonator: 'impersonator',
214252
reason: nil,

0 commit comments

Comments
 (0)