You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
from django.http import JsonResponse
|
|
import jwt
|
|
from jwt.exceptions import ExpiredSignatureError, InvalidSignatureError
|
|
|
|
def successRes(msg):
|
|
return JsonResponse({'status':200, 'data': msg})
|
|
|
|
|
|
def errorRes(msg="", default=False, status=400):
|
|
if default:
|
|
return JsonResponse({'status':status, 'msg': 'Server error'})
|
|
else:
|
|
return JsonResponse({'status':status, 'msg': msg})
|
|
|
|
|
|
def validateData(data, req):
|
|
values = [None]*len(data)
|
|
for i in range(len(data)):
|
|
var = req.data.get(data[i])
|
|
if var:
|
|
if type(var) is not int and type(var) is not list:
|
|
values[i]= f"'{req.data.get(data[i])}'"
|
|
else:
|
|
values[i]= req.data.get(data[i])
|
|
else:
|
|
values[i] = "NULL"
|
|
return values
|
|
|
|
class TokenError(Exception):
|
|
pass
|
|
|
|
|
|
def verify(token, superadmin=False):
|
|
try:
|
|
if not token:
|
|
raise Exception("No token provided")
|
|
tokenIsValid = jwt.decode(token, 'ibiye4700', algorithms=["HS256"], options={"verify_signature": True, "require": ["exp"]})
|
|
if(superadmin):
|
|
if(tokenIsValid["is_superuser"]):
|
|
return tokenIsValid
|
|
else:
|
|
return Exception("You don't have access to this resource")
|
|
else:
|
|
return tokenIsValid
|
|
except ExpiredSignatureError:
|
|
raise TokenError("Login token has expired. Please login again.")
|
|
except InvalidSignatureError:
|
|
raise TokenError("token is invalid")
|
|
except Exception as err:
|
|
raise TokenError(str(err)) |