86 lines
2.4 KiB
Python
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"
|
|
}
|