From 5c2aaab457561cf76149e0746ae057c75c856905 Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Sun, 1 Aug 2021 13:26:12 +0200 Subject: [PATCH] import und login verbessert --- adm/templates/adm/adm_import_flow.html | 1 + api/views.py | 50 ++++++++++++++------------ digitaleagentur/utils.py | 10 ++++-- users/views.py | 4 ++- 4 files changed, 39 insertions(+), 26 deletions(-) diff --git a/adm/templates/adm/adm_import_flow.html b/adm/templates/adm/adm_import_flow.html index 4a41034..74b9efc 100644 --- a/adm/templates/adm/adm_import_flow.html +++ b/adm/templates/adm/adm_import_flow.html @@ -25,6 +25,7 @@ $(document).ready(function(){ // FIRST CALL GROUPS, When Groups finished User will call by Groups createAgencyGroups(groupids[0]); + //DEV //addGroupFolder(); //addDirs(dirids[0]); diff --git a/api/views.py b/api/views.py index 9319027..378e18c 100644 --- a/api/views.py +++ b/api/views.py @@ -182,27 +182,29 @@ def NCAddGroup(request): "groupid" : newgroupid } r = requests.post(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/groups", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) - try: - r_status = json.loads(r.text) - if(r_status['ocs']['meta']['statuscode'] == 100): - # Group created, save new group id in Django - aggroup.nc_name = newgroupid - aggroup.save() + + r_status = json.loads(r.text) + if(r_status['ocs']['meta']['statuscode'] == 100): + # Group created, save new group id in Django + aggroup.nc_name = newgroupid + aggroup.save() - # Group created, set display name in NC - data = { - "name": aggroup.agencygroupname, - "id" : newgroupid - } - headers = { - 'Authorization': 'Bearer ' + request.user.profile.nc_sid - } - r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers) - return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid}) - else: - return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' (ID '+aggroup.group.name+') konnte nicht erzeugt werden. Bitte manuell prüfen'}) - except: - return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' (ID '+aggroup.group.name+') konnte nicht erzeugt werden. Bitte manuell prüfen' + r.text}) + # Group created, set display name in NC + data = { + "name": aggroup.agencygroupname, + "id" : newgroupid + } + headers = { + 'Accept' : 'application/json', + 'Access-Control-Allow-Headers' : 'OCS-APIRequest', + 'OCS-APIRequest' : 'true' + } + r = requests.post(settings.NEXTCLOUD_URL + "apps/agency/regr", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) + return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' erzeugt - ID: ' + newgroupid}) + else: + return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' (ID '+aggroup.group.name+') konnte nicht erzeugt werden. Bitte manuell prüfen'}) + #except: + # return JsonResponse({'status' : True, 'message': 'Gruppe ' + aggroup.agencygroupname + ' (ID '+aggroup.group.name+') konnte nicht erzeugt werden. Bitte manuell prüfen' + r.text}) return JsonResponse({"status" : "NO AUTH"}) @@ -267,9 +269,11 @@ def NCAddGroupFolder(request): "aid" : str(agency.pk) } headers = { - 'Authorization': 'Bearer ' + request.user.profile.nc_sid + 'Accept' : 'application/json', + 'Access-Control-Allow-Headers' : 'OCS-APIRequest', + 'OCS-APIRequest' : 'true' } - 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, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) print(r.text) return JsonResponse({'status' : True, 'message': 'Gruppenordner angelegt!'}) @@ -366,7 +370,7 @@ def NCAddDirs(request): @api_view(['GET'], ) def NCTest(request): - print(request.headers) + #print(request.headers) return JsonResponse({'status' : False, 'message': 'AUTH ERROR'}) # Setting the Users Data for logging diff --git a/digitaleagentur/utils.py b/digitaleagentur/utils.py index 7cef61b..29eb9b0 100644 --- a/digitaleagentur/utils.py +++ b/digitaleagentur/utils.py @@ -124,8 +124,14 @@ def getNCLoggedUserBySession(sid): r = requests.get(settings.NEXTCLOUD_URL + "ocs/v2.php/apps/user_status/api/v1/user_status", headers=nc_login_headers) xpars = xmltodict.parse(r.text) js = json.dumps(xpars) - final_json = json.loads(js) - return final_json['ocs']['data']['userId'] + + try: + final_json = json.loads(js) + return final_json['ocs']['data']['userId'] + except: + return redirect('users-dashboard') + + diff --git a/users/views.py b/users/views.py index c977036..e1bf39a 100644 --- a/users/views.py +++ b/users/views.py @@ -85,11 +85,13 @@ from django.views.generic import TemplateView # Entry-Point for NC def ncLogin(request, uid): logout(request) + print(uid) user = User.objects.get(username=uid) if(getNCLoggedUserBySession(user.profile.nc_sid) == uid): login(request, user) return redirect('users-dashboard') - 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."}) + return redirect('nclog', uid=uid) + #return render(request, 'users/nclog.html',{'error' : "Bereite daten vor..."}) def getICSFile(request, ag): if 'HTTP_AUTHORIZATION' in request.META: