2025-03-24 14:34:56 +01:00

60 lines
2.1 KiB
Python

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect
from yaml import serialize
from api.serializer import MyTokenObtainPairSerializer
from api.views import MyTokenObtainPairView
import medinf.settings
import logging
import medinf.ldap_backend
def navlogin(request):
log = logging.getLogger("medinf")
logout(request)
error = ""
if request.POST:
username = request.POST.get("username", "?")
password = request.POST.get("password", "?")
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return redirect(medinf.settings.LOGIN_REDIRECT_URL)
else:
log.info("Inactive user {} tried to login".format(username))
error = "Ihre Benutzerkennung wurde deaktiviert."
else:
log.info("Login failed for {}".format(username))
error = "Benutzername oder Kennwort falsch."
context = {"error": error}
return render(request, "index.html", context)
################ New REST Token Auth #########################################
from rest_framework_simplejwt.tokens import RefreshToken
from rest_framework.views import APIView
from rest_framework.response import Response
from django.contrib.auth import authenticate
class AuthenticateView(APIView):
def post(self, request):
username = request.data.get("username")
password = request.data.get("password")
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user) #login the user in the backend
# refresh = RefreshToken.for_user(user)
serializer = MyTokenObtainPairSerializer(data={"username":username, "password":password})
serializer.is_valid(raise_exception=True)
token = serializer.validated_data
return Response(token)
return Response({"error": "Invalid credentials"}, status=400)