cookies raus DB rein

This commit is contained in:
holger.trampe 2021-08-01 12:57:51 +02:00
parent fe07ae0e39
commit 067daa635c
12 changed files with 98 additions and 102 deletions

View File

@ -725,6 +725,5 @@ class AdmImportFlow(TemplateView):
# LINK TO THE NC-INSTANCE # LINK TO THE NC-INSTANCE
context.update({'nclink' : settings.NEXTCLOUD_URL}) context.update({'nclink' : settings.NEXTCLOUD_URL})
context.update({'ncid' : self.request.COOKIES['nc_session_id']}) context.update({'ncid' : self.request.user.profile.nc_sid})
context.update({'nccs' : self.request.COOKIES['csrftoken']})
return context return context

View File

@ -1,3 +1,4 @@
from django.views.decorators.csrf import ensure_csrf_cookie
from cloud.models import DataFile, DataDir from cloud.models import DataFile, DataDir
from django.shortcuts import redirect from django.shortcuts import redirect
from rest_framework.views import APIView from rest_framework.views import APIView
@ -98,6 +99,8 @@ def migrateAgencyUsers(request, pk):
def apilogout(request, uid): def apilogout(request, uid):
print("LOGOUT: " + str(uid)) print("LOGOUT: " + str(uid))
user = User.objects.get(username=uid) user = User.objects.get(username=uid)
user.profile.nc_sid = ""
user.save()
[s.delete() for s in Session.objects.all() if s.get_decoded().get('_auth_user_hash') == user.get_session_auth_hash()] [s.delete() for s in Session.objects.all() if s.get_decoded().get('_auth_user_hash') == user.get_session_auth_hash()]
return JsonResponse({'res' : 'ok'}) return JsonResponse({'res' : 'ok'})
@ -107,6 +110,7 @@ import xmltodict, json, requests
@api_view(['GET'], ) @api_view(['GET'], )
def userChangedInNc(request, uid, sid): def userChangedInNc(request, uid, sid):
user = User.objects.get(username=uid) user = User.objects.get(username=uid)
print("SID: " + sid)
if(user.is_authenticated and getNCLoggedUserBySession(sid) == uid): if(user.is_authenticated and getNCLoggedUserBySession(sid) == uid):
nc_login_headers = {'Authorization' : 'Bearer ' + sid} nc_login_headers = {'Authorization' : 'Bearer ' + sid}
r = requests.get(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/users/" + uid, headers=nc_login_headers) r = requests.get(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/users/" + uid, headers=nc_login_headers)
@ -191,7 +195,7 @@ def NCAddGroup(request):
"id" : newgroupid "id" : newgroupid
} }
headers = { headers = {
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id'] 'Authorization': 'Bearer ' + request.user.profile.nc_sid
} }
r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers) r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers)
return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid}) return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid})
@ -263,7 +267,7 @@ def NCAddGroupFolder(request):
"aid" : str(agency.pk) "aid" : str(agency.pk)
} }
headers = { headers = {
'Authorization': 'Bearer ' + request.COOKIES['nc_session_id'] 'Authorization': 'Bearer ' + request.user.profile.nc_sid
} }
r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/createagf", data=data, headers=headers) r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/createagf", data=data, headers=headers)
print(r.text) print(r.text)
@ -365,13 +369,13 @@ def NCTest(request):
print(request.headers) print(request.headers)
return JsonResponse({'status' : False, 'message': 'AUTH ERROR'}) return JsonResponse({'status' : False, 'message': 'AUTH ERROR'})
# Setting the Users Data for logging
@api_view(['GET'], ) @api_view(['POST'], )
def SetUserData(request): def SetUserData(request):
print("Check login status...") try:
if(request.COOKIES['nc_username'] != None and getNCLoggedUserBySession(request.COOKIES['nc_session_id'])): user = User.objects.get(username=request.POST.get('uid'))
login(request, User.objects.get(username=request.COOKIES['nc_username'])) user.profile.nc_sid = request.POST.get('sid')
else: user.save()
logout(request) return JsonResponse({'message' : 'A user was found in request, sid set!'})
except:
return JsonResponse({'stat' : True}) return JsonResponse({'message' : 'No user is in this request.'})

View File

@ -215,10 +215,6 @@ LOGIN_URL = 'login'
#LOGIN_URL = NEXTCLOUD_URL #LOGIN_URL = NEXTCLOUD_URL
STATIC_URL = '/static/' STATIC_URL = '/static/'
SESSION_COOKIE_DOMAIN = "digitale-agentur.com"
#SESSION_COOKIE_DOMAIN = "localhost"
''' '''
SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) + '/..' SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) + '/..'

View File

@ -110,19 +110,6 @@ def checkAbsenceWorkdayCollideDelete(absence):
''' '''
import xmltodict, json, requests import xmltodict, json, requests
import urllib.request as urllib2
from django.contrib.auth import login, logout
'''
def ncLogin(request, uid):
#try:
logout(request)
useridFromServer = getNCLoggedUserBySession(request.COOKIES['nc_session_id'])
if(uid == urllib2.unquote(request.COOKIES['nc_username']) and useridFromServer == uid):
login(request, User.objects.get(username=urllib2.unquote(request.COOKIES['nc_username'])))
return redirect('users-dashboard')
#return redirect('login')
#return redirect('users-dashboard')
'''
''' '''
getNCLoggedUserBySession getNCLoggedUserBySession

View File

@ -250,13 +250,13 @@ def StandardAdd(request, id=False):
possibleFilesByVisible = [] possibleFilesByVisible = []
# NC FILE # NC FILE
# Data for the new User # Data for the new User
if(request.user.is_authenticated and getNCLoggedUserBySession(request.COOKIES['nc_session_id'])): if(request.user.is_authenticated and getNCLoggedUserBySession(request.user.profile.nc_sid)):
data_nc = { data_nc = {
"Depth" : 0 "Depth" : 0
} }
nc_login_headers = {'Authorization' : 'Bearer ' + request.COOKIES['nc_session_id']} nc_login_headers = {'Authorization' : 'Bearer ' + request.user.profile.nc_sid}
r = requests.request("PROPFIND", settings.NEXTCLOUD_URL + "remote.php/dav/files/" + request.user.username + "/Agenturdaten_1/", headers=nc_login_headers, data=data_nc) r = requests.request("PROPFIND", settings.NEXTCLOUD_URL + "remote.php/dav/files/" + request.user.username + "/Agenturdaten_1/", headers=nc_login_headers, data=data_nc)
print(r.text) print(r.text)

View File

@ -215,7 +215,7 @@ class Profile(models.Model):
phonemobile = models.CharField(max_length=60, blank=True) phonemobile = models.CharField(max_length=60, blank=True)
phone_public = models.BooleanField(default=False) phone_public = models.BooleanField(default=False)
#nc_sid = models.CharField(max_length=200, blank=True) nc_sid = models.CharField(max_length=200, blank=True)
# Wenn die Funktion gelöscht wird, wird die FUNC auf NULL gesetzt # Wenn die Funktion gelöscht wird, wird die FUNC auf NULL gesetzt
func = models.ForeignKey("AgencyJob", blank=True, null=True, default=None, on_delete=models.SET_NULL) func = models.ForeignKey("AgencyJob", blank=True, null=True, default=None, on_delete=models.SET_NULL)

View File

@ -1,56 +1,14 @@
{% extends "users/publicbase.html" %} {% load static %}
<!-- CRISPY --> <html>
{% load crispy_forms_tags %} <body>
{% block content %} <h4>Sie werden gleich zur neuen Login-Seite der Digitalen Agentur weitergeleitet. Sollte dies nicht gehen, klicken Sie auf folgenden Link:</h4>
<style type="text/css"> <a href="https://cloud.digitale-agentur.com/">https://cloud.digitale-agentur.com/</a>
#logincard { </body>
width: 25%; </html>
margin-top: 7%; <script src="{%static 'users/js/jquery.js' %}" type="text/javascript"></script>
} <script>
</style>
<div class="card mx-auto" id="logincard">
<div class="card-body">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group" >
<legend class="border-bottom mb-4" style="text-align: center;">
<i class="fas fa-laptop"></i>
<h3>Digitale Agentur Login</h3>
</legend>
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert" id="message_{{forloop.counter}}">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
{% endfor %}
{% endif %}
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button type="submit" class="btn btn-primary">Anmelden</button>
<small class="text-muted ml-2">
<a href="{% url 'password-reset' %}" class="">Passwort vergessen?</a><br />
</small>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted ml-2">
<a href="mailto:support@digitale-agentur.com" class="">Probleme beim anmelden?</a>
</small>
<small class="text-muted">
<a class="ml-2" href="{% url 'register' %}">Agentur registrieren</a>
</small>
</div>
</div>
</div>
<script type="text/javascript">
$("label[for*='username']").html("E-Mail-Adresse*");
$(document).ready(function(){ $(document).ready(function(){
localStorage.clear(); //window.location.replace("https://cloud.digitale-agentur.com/external/1");
//localStorage.clear();
}) })
</script> </script>
{% endblock content %}

View File

@ -1,8 +0,0 @@
{% load static %}
<script src="{%static 'users/js/jquery.js' %}" type="text/javascript"></script>
<script>
$(document).ready(function(){
window.location.replace("http://cloud.digitale-agentur.com/external/1");
localStorage.clear();
})
</script>

View File

@ -0,0 +1,56 @@
{% extends "users/publicbase.html" %}
<!-- CRISPY -->
{% load crispy_forms_tags %}
{% block content %}
<style type="text/css">
#logincard {
width: 25%;
margin-top: 7%;
}
</style>
<div class="card mx-auto" id="logincard">
<div class="card-body">
<form method="POST">
{% csrf_token %}
<fieldset class="form-group" >
<legend class="border-bottom mb-4" style="text-align: center;">
<i class="fas fa-laptop"></i>
<h3>Digitale Agentur Login</h3>
</legend>
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert" id="message_{{forloop.counter}}">
{{ message }}
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
{% endfor %}
{% endif %}
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button type="submit" class="btn btn-primary">Anmelden</button>
<small class="text-muted ml-2">
<a href="{% url 'password-reset' %}" class="">Passwort vergessen?</a><br />
</small>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted ml-2">
<a href="mailto:support@digitale-agentur.com" class="">Probleme beim anmelden?</a>
</small>
<small class="text-muted">
<a class="ml-2" href="{% url 'register' %}">Agentur registrieren</a>
</small>
</div>
</div>
</div>
<script type="text/javascript">
$("label[for*='username']").html("E-Mail-Adresse*");
$(document).ready(function(){
localStorage.clear();
})
</script>
{% endblock content %}

View File

@ -0,0 +1 @@
<h3>{{error}}</h3>

View File

@ -80,13 +80,16 @@ import xmltodict, json
import urllib.request as urllib2 import urllib.request as urllib2
from django.contrib.auth import login, logout from django.contrib.auth import login, logout
from django.core.mail import send_mail from django.core.mail import send_mail
from django.views.generic import TemplateView
# Entry-Point for NC
def ncLogin(request, uid): def ncLogin(request, uid):
#logout(request) logout(request)
#if(uid == urllib2.unquote(request.COOKIES['nc_username']) and getNCLoggedUserBySession(request.COOKIES['nc_session_id'])): user = User.objects.get(username=uid)
# login(request, User.objects.get(username=urllib2.unquote(request.COOKIES['nc_username']))) if(getNCLoggedUserBySession(user.profile.nc_sid) == uid):
# return redirect('users-dashboard') login(request, user)
#return redirect('login') return redirect('users-dashboard')
return JsonResponse({}) return render(request, 'users/nclog.html',{'error' : "Die Daten der Digitalen Agentur stehen aktuell nicht zur Verfügung. Bitte loggen Sie sich aus und wieder ein. Sollten Sie diese Meldung weiterhin sehen, wenden Sie sich an den Support."})
def getICSFile(request, ag): def getICSFile(request, ag):
if 'HTTP_AUTHORIZATION' in request.META: if 'HTTP_AUTHORIZATION' in request.META: