Skip to content

Commit 7541a47

Browse files
author
Siddhant Agarwal
authored
Add token revocation methods (#46)
1 parent 8243d9a commit 7541a47

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

lib/stream-chat/client.rb

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require 'open-uri'
55
require 'faraday'
66
require 'jwt'
7+
require 'time'
78
require 'stream-chat/channel'
89
require 'stream-chat/errors'
910
require 'stream-chat/version'
@@ -45,9 +46,10 @@ def initialize(api_key = '', api_secret = '', timeout = 6.0, **options)
4546
end
4647
end
4748

48-
def create_token(user_id, exp = nil)
49+
def create_token(user_id, exp = nil, iat = nil)
4950
payload = { user_id: user_id }
5051
payload['exp'] = exp unless exp.nil?
52+
payload['iat'] = iat unless iat.nil?
5153
JWT.encode(payload, @api_secret, 'HS256')
5254
end
5355

@@ -283,6 +285,30 @@ def get_export_channel_status(task_id)
283285
get("export_channels/#{task_id}")
284286
end
285287

288+
def revoke_tokens(before)
289+
before = before.rfc3339 if before.instance_of?(DateTime)
290+
update_app_settings({ 'revoke_tokens_issued_before' => before })
291+
end
292+
293+
def revoke_user_token(user_id, before)
294+
revoke_users_token([user_id], before)
295+
end
296+
297+
def revoke_users_token(user_ids, before)
298+
before = before.rfc3339 if before.instance_of?(DateTime)
299+
300+
updates = []
301+
user_ids.each do |user_id|
302+
updates.push({
303+
'id' => user_id,
304+
'set' => {
305+
'revoke_tokens_issued_before' => before
306+
}
307+
})
308+
end
309+
update_users_partial(updates)
310+
end
311+
286312
def put(relative_url, params: nil, data: nil)
287313
make_http_request(:put, relative_url, params: params, data: data)
288314
end

0 commit comments

Comments
 (0)