Add command to revoke tokens

Signed-off-by: Cristian Vargas <cristian@swapps.co>
This commit is contained in:
Cristian Vargas 2018-07-03 23:14:51 -05:00 committed by Ryan Petrello
parent be1422d021
commit 093c29e315
No known key found for this signature in database
GPG Key ID: F2AA5F2122351777

View File

@ -0,0 +1,34 @@
# Django
from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User
from django.core.exceptions import ObjectDoesNotExist
# AWX
from awx.main.models.oauth import OAuth2AccessToken
from oauth2_provider.models import RefreshToken
def revoke_tokens(token_list):
for token in token_list:
token.revoke()
class Command(BaseCommand):
"""Command that revokes OAuth2 tokens and refresh tokens."""
help='Revokes OAuth2 tokens and refresh tokens.'
def add_arguments(self, parser):
parser.add_argument('--user', dest='user', type=str)
parser.add_argument('--revoke_refresh', dest='revoke_refresh', action='store_true')
def handle(self, *args, **options):
if not options['user']:
if options['revoke_refresh']:
revoke_tokens(RefreshToken.objects.all())
revoke_tokens(OAuth2AccessToken.objects.all())
else:
try:
user = User.objects.get(username=options['user'])
except ObjectDoesNotExist:
raise CommandError('The user does not exist.')
if options['revoke_refresh']:
revoke_tokens(RefreshToken.objects.filter(user=user))
revoke_tokens(user.main_oauth2accesstoken.filter(user=user))