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)