|
4 | 4 | require 'open-uri' |
5 | 5 | require 'faraday' |
6 | 6 | require 'jwt' |
| 7 | +require 'time' |
7 | 8 | require 'stream-chat/channel' |
8 | 9 | require 'stream-chat/errors' |
9 | 10 | require 'stream-chat/version' |
@@ -45,9 +46,10 @@ def initialize(api_key = '', api_secret = '', timeout = 6.0, **options) |
45 | 46 | end |
46 | 47 | end |
47 | 48 |
|
48 | | - def create_token(user_id, exp = nil) |
| 49 | + def create_token(user_id, exp = nil, iat = nil) |
49 | 50 | payload = { user_id: user_id } |
50 | 51 | payload['exp'] = exp unless exp.nil? |
| 52 | + payload['iat'] = iat unless iat.nil? |
51 | 53 | JWT.encode(payload, @api_secret, 'HS256') |
52 | 54 | end |
53 | 55 |
|
@@ -283,6 +285,30 @@ def get_export_channel_status(task_id) |
283 | 285 | get("export_channels/#{task_id}") |
284 | 286 | end |
285 | 287 |
|
| 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 | + |
286 | 312 | def put(relative_url, params: nil, data: nil) |
287 | 313 | make_http_request(:put, relative_url, params: params, data: data) |
288 | 314 | end |
|
0 commit comments