From 3396851e39977cd51d973e953ab9972c864092e6 Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:04:44 +0200 Subject: [PATCH 1/7] Fixed the authentification, if both l2p and moodle rooms are assigned to a course --- l2pauth.py | 12 +++++++++++- server.py | 6 ++++++ template_helper.py | 12 ++++++++---- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/l2pauth.py b/l2pauth.py index 39c0ebf..91dcffd 100644 --- a/l2pauth.py +++ b/l2pauth.py @@ -48,6 +48,15 @@ def start_rwthauth(): session['oauthscope'] = 'rwth' return redirect(code['verification_url']+'?q=verify&d='+code['user_code']) +@app.route('/internal/moodleauth') +def start_moodlel2pauth(): + if 'L2P_APIKEY' not in config: + return render_template("500.html"), 500 + code = oauthget('code', scope='moodle.rwth l2p2013.rwth') + session['oauthcode'] = code['device_code'] + session['oauthscope'] = 'l2pandmoodle' + return redirect(code['verification_url']+'?q=verify&d='+code['user_code']) + @app.before_request def finish_oauth(): if 'L2P_APIKEY' not in config: @@ -61,11 +70,12 @@ def finish_oauth(): if session['oauthscope'] not in ['l2p', 'rwth', 'moodle']: return session['rwthintern'] = True - if session['oauthscope'] == 'l2p': + if session['oauthscope'] == 'l2p' or session['oauthscope'] == 'l2pandmoodle': session['l2p_courses'] = [] for course in l2pget('viewAllCourseInfo', token['access_token'])['dataSet']: session['l2p_courses'].append(course['uniqueid']) elif session['oauthscope'] == 'moodle': + if session['oauthscope'] == 'moodle' or session['oauthscope'] == 'l2pandmoodle': data = moodleget('getmyenrolledcourses', token['access_token']) if data and data.get('Data'): session['moodle_courses'] = [] diff --git a/server.py b/server.py index 44be9b9..6f5d472 100644 --- a/server.py +++ b/server.py @@ -329,6 +329,12 @@ def lecture(id, course=None, courseid=None): #pylint: disable=unused-argument,to mode, text = permdescr(perms) if mode == 'rwth': flash(text+'. Hier authorisieren.', category='player') + elif mode == 'l2pandmoodle': + if 'l2p_courses' in session or 'moodle_courses' in session: + flash(text+'. Du bist kein Teilnehmer des L2P oder Moodle-Kurses! \ + Kurse aktualisieren.', category='player') + else: + flash(text+'. Hier authorisieren.', category='player') elif mode == 'l2p': if 'l2p_courses' in session: flash(text+'. Du bist kein Teilnehmer des L2P-Kurses! \ diff --git a/template_helper.py b/template_helper.py index 281352d..85e75b7 100644 --- a/template_helper.py +++ b/template_helper.py @@ -89,16 +89,16 @@ def checkperm(perms, username=None, password=None): #pylint: disable=too-many-br for perm in perms: if perm['type'] == 'public': return True - elif perm['type'] == 'password': + if perm['type'] == 'password': if perm['param1'] == username and perm['param2'] == password: return True - elif perm['type'] == 'l2p': + if perm['type'] == 'l2p': if perm['param1'] in session.get('l2p_courses', []): return True - elif perm['type'] == 'moodle': + if perm['type'] == 'moodle': if perm['param1'] in session.get('moodle_courses', []): return True - elif perm['type'] == 'rwth': + if perm['type'] == 'rwth': if session.get('rwthintern', False): return True if 'X-Real-IP' not in request.headers: @@ -141,7 +141,11 @@ def permdescr(perms): #pylint: disable=too-many-branches,too-many-return-stateme return 'fsmpi', 'Nur für Fachschaftler verfügbar' if l2p_courses: if password: + if moodle_courses: + return 'l2pandmoodle', 'Nur für Teilnehmer der Veranstaltung und Nutzer mit Passwort verfügbar' return 'l2p', 'Nur für Teilnehmer der Veranstaltung und Nutzer mit Passwort verfügbar' + if moodle_courses: + return 'l2pandmoodle', 'Nur für Teilnehmer der Veranstaltung verfügbar' return 'l2p', 'Nur für Teilnehmer der Veranstaltung verfügbar' if moodle_courses: if password: -- GitLab From 3fa59bac8ff22b6b72294d512cfd96c3b865b43e Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:14:38 +0200 Subject: [PATCH 2/7] forgot to remove old line --- l2pauth.py | 1 - 1 file changed, 1 deletion(-) diff --git a/l2pauth.py b/l2pauth.py index 91dcffd..4c7a913 100644 --- a/l2pauth.py +++ b/l2pauth.py @@ -74,7 +74,6 @@ def finish_oauth(): session['l2p_courses'] = [] for course in l2pget('viewAllCourseInfo', token['access_token'])['dataSet']: session['l2p_courses'].append(course['uniqueid']) - elif session['oauthscope'] == 'moodle': if session['oauthscope'] == 'moodle' or session['oauthscope'] == 'l2pandmoodle': data = moodleget('getmyenrolledcourses', token['access_token']) if data and data.get('Data'): -- GitLab From fbf3b864702c5167aece29a849f3a3f6bb4d3bfb Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:26:24 +0200 Subject: [PATCH 3/7] Forgot to check in moodle courses --- template_helper.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/template_helper.py b/template_helper.py index 85e75b7..fd5a951 100644 --- a/template_helper.py +++ b/template_helper.py @@ -149,7 +149,11 @@ def permdescr(perms): #pylint: disable=too-many-branches,too-many-return-stateme return 'l2p', 'Nur für Teilnehmer der Veranstaltung verfügbar' if moodle_courses: if password: + if l2p_courses: + return 'l2pandmoodle', 'Nur für Teilnehmer der Veranstaltung und Nutzer mit Passwort verfügbar' return 'moodle', 'Nur für Teilnehmer der Veranstaltung und Nutzer mit Passwort verfügbar' + if l2p_courses: + return 'l2pandmoodle', 'Nur für Teilnehmer der Veranstaltung verfügbar' return 'moodle', 'Nur für Teilnehmer der Veranstaltung verfügbar' if password: return 'password', 'Nur für Nutzer mit Passwort verfügbar' -- GitLab From 4a795fb3f3d18b7e81d7a6607ed07b09df2d17e4 Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:41:39 +0200 Subject: [PATCH 4/7] forgot to change url --- l2pauth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l2pauth.py b/l2pauth.py index 4c7a913..b2a5cac 100644 --- a/l2pauth.py +++ b/l2pauth.py @@ -48,7 +48,7 @@ def start_rwthauth(): session['oauthscope'] = 'rwth' return redirect(code['verification_url']+'?q=verify&d='+code['user_code']) -@app.route('/internal/moodleauth') +@app.route('/internal/moodlel2pauth') def start_moodlel2pauth(): if 'L2P_APIKEY' not in config: return render_template("500.html"), 500 -- GitLab From 0c714433f8fd2473b59e8780ded3a9882d9db27e Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:45:26 +0200 Subject: [PATCH 5/7] this is the last thing i forgot i swear --- l2pauth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/l2pauth.py b/l2pauth.py index b2a5cac..a643c82 100644 --- a/l2pauth.py +++ b/l2pauth.py @@ -67,7 +67,7 @@ def finish_oauth(): if token.get('status') != 'ok': return del session['oauthcode'] - if session['oauthscope'] not in ['l2p', 'rwth', 'moodle']: + if session['oauthscope'] not in ['l2p', 'rwth', 'moodle', 'l2pandmoodle']: return session['rwthintern'] = True if session['oauthscope'] == 'l2p' or session['oauthscope'] == 'l2pandmoodle': -- GitLab From 47e8faa0b49cbe5728dd21baa10c827bce2b3c2f Mon Sep 17 00:00:00 2001 From: Roman Sebastian Karwacik Date: Mon, 20 Jul 2020 12:58:25 +0200 Subject: [PATCH 6/7] display icon --- templates/macros.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/macros.html b/templates/macros.html index bf28145..c442d9d 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -377,7 +377,7 @@ $('#embedcodebtn').popover( {% if permdescription[0] == 'l2p' %} {% set permlogos = '' %} {% endif %} - {% if permdescription[0] == 'moodle' %} + {% if permdescription[0] == 'moodle' or permdescription[0] == 'l2pandmoodle' %} {% set permlogos = '' %} {% endif %} {% if permdescription[0] == 'rwth' %} -- GitLab From e47d03d5cc75f0a74aa601e1959cb459b4acf62b Mon Sep 17 00:00:00 2001 From: Roman Karwacik Date: Mon, 20 Jul 2020 13:07:17 +0200 Subject: [PATCH 7/7] Unnecessary logic change --- template_helper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/template_helper.py b/template_helper.py index fd5a951..663fead 100644 --- a/template_helper.py +++ b/template_helper.py @@ -89,16 +89,16 @@ def checkperm(perms, username=None, password=None): #pylint: disable=too-many-br for perm in perms: if perm['type'] == 'public': return True - if perm['type'] == 'password': + elif perm['type'] == 'password': if perm['param1'] == username and perm['param2'] == password: return True - if perm['type'] == 'l2p': + elif perm['type'] == 'l2p': if perm['param1'] in session.get('l2p_courses', []): return True - if perm['type'] == 'moodle': + elif perm['type'] == 'moodle': if perm['param1'] in session.get('moodle_courses', []): return True - if perm['type'] == 'rwth': + elif perm['type'] == 'rwth': if session.get('rwthintern', False): return True if 'X-Real-IP' not in request.headers: -- GitLab