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.
34 lines
1.5 KiB
Python
34 lines
1.5 KiB
Python
from osinacore.models import *
|
|
from .serializers import *
|
|
from rest_framework.decorators import api_view
|
|
from .utils import *
|
|
import calendar
|
|
from django.contrib.auth.hashers import check_password
|
|
from datetime import datetime
|
|
import datetime as datetime2
|
|
|
|
|
|
@api_view(['POST'])
|
|
def login_user(request):
|
|
try:
|
|
username = request.data.get('username')
|
|
password = request.data.get('password')
|
|
if(not password or not username):
|
|
raise ValueError("Missing fields")
|
|
user = User.objects.get(username=username)
|
|
serial = LoginSerializer(user)
|
|
passwordValid = check_password(password, serial.data['password'])
|
|
if passwordValid and StaffProfile.objects.filter(user=user):
|
|
future = datetime.utcnow() + datetime2.timedelta(days=183)
|
|
futuretime = calendar.timegm(future.timetuple())
|
|
encoded_jwt = jwt.encode({"username": username, "exp": futuretime, "is_superuser": serial.data['is_superuser'], "userid":serial.instance.id}, "ibiye4700", algorithm="HS256")
|
|
return successRes(msg={"token": encoded_jwt,"first_name":user.first_name,"last_name":user.last_name,"email":user.email, "id":user.id})
|
|
else:
|
|
raise ValueError("Incorrect password!")
|
|
except User.DoesNotExist:
|
|
return errorRes(msg="User doesn't exist!")
|
|
except ValueError as err:
|
|
return errorRes(msg=str(err))
|
|
except Exception as e:
|
|
print(e)
|
|
return errorRes(msg=str(e)) |