|
1 | 1 | import json |
| 2 | +import datetime |
2 | 3 | from types import TracebackType |
3 | 4 | from typing import Optional, Type |
4 | 5 | from urllib.parse import urlparse |
@@ -448,6 +449,40 @@ async def list_roles(self): |
448 | 449 | """ |
449 | 450 | return await self.get("custom_role") |
450 | 451 |
|
| 452 | + async def revoke_tokens(self, before): |
| 453 | + """ |
| 454 | + Revokes tokens for an application |
| 455 | + :param before: date before which the tokens are to be revoked, pass None to reset |
| 456 | + """ |
| 457 | + if isinstance(before, datetime.datetime): |
| 458 | + before = before.isoformat() |
| 459 | + |
| 460 | + await self.update_app_settings({"revoke_tokens_issued_before": before}) |
| 461 | + |
| 462 | + async def revoke_user_token(self, user_id, before): |
| 463 | + """ |
| 464 | + Revokes token for a user |
| 465 | + :param user_id: user_id of user for which the token needs to be revoked |
| 466 | + :param before: date before which the tokens are to be revoked, , pass None to reset |
| 467 | + """ |
| 468 | + await self.revoke_users_token([user_id], before) |
| 469 | + |
| 470 | + async def revoke_users_token(self, user_ids, before): |
| 471 | + """ |
| 472 | + Revokes tokens for given users |
| 473 | + :param user_ids: user_ids for user for whom the token needs to be revoked |
| 474 | + :param before: date before which the tokens are to be revoked, pass None to reset |
| 475 | + """ |
| 476 | + if isinstance(before, datetime.datetime): |
| 477 | + before = before.isoformat() |
| 478 | + |
| 479 | + updates = [] |
| 480 | + for user_id in user_ids: |
| 481 | + updates.append( |
| 482 | + {"id": user_id, "set": {"revoke_tokens_issued_before": before}} |
| 483 | + ) |
| 484 | + await self.update_users_partial(updates) |
| 485 | + |
451 | 486 | async def close(self): |
452 | 487 | await self.session.close() |
453 | 488 |
|
|
0 commit comments