2026-01-26 10:30:49 -05:00

86 lines
2.4 KiB
Python

import graphene
import graphql_jwt
from graphene import String, Boolean, List
class TokenAuthMutation(graphene.Mutation):
"""Mutation to obtain JWT token."""
class Arguments:
username = String(required=True)
password = String(required=True)
token = String()
success = Boolean()
errors = List(String)
message = String()
@staticmethod
def mutate(root, info, username, password):
try:
result = graphql_jwt.ObtainJSONWebToken.mutate(root, info, username=username, password=password)
return {
'token': result.token,
'success': True,
'errors': [],
'message': "Token obtained successfully"
}
except Exception as e:
return {
'token': None,
'success': False,
'errors': [str(e)],
'message': "Failed to obtain token"
}
class VerifyTokenMutation(graphene.Mutation):
"""Mutation to verify JWT token."""
class Arguments:
token = String(required=True)
success = Boolean()
errors = List(String)
message = String()
@staticmethod
def mutate(root, info, token):
try:
graphql_jwt.Verify.mutate(root, info, token=token)
return {
'success': True,
'errors': [],
'message': "Token verified successfully"
}
except Exception as e:
return {
'success': False,
'errors': [str(e)],
'message': "Token verification failed"
}
class RefreshTokenMutation(graphene.Mutation):
"""Mutation to refresh JWT token."""
class Arguments:
token = String(required=True)
token = String()
success = Boolean()
errors = List(String)
message = String()
@staticmethod
def mutate(root, info, token):
try:
result = graphql_jwt.Refresh.mutate(root, info, token=token)
return {
'token': result.token,
'success': True,
'errors': [],
'message': "Token refreshed successfully"
}
except Exception as e:
return {
'token': None,
'success': False,
'errors': [str(e)],
'message': "Token refresh failed"
}