Skip to content

Commit 30118bd

Browse files
committed
Adding Account to Wrapper and README Updated
1 parent 4a84fd2 commit 30118bd

17 files changed

+263
-324
lines changed

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,24 @@ Then, install the pipeline and frontend dependencies:
3131
npm install
3232
```
3333

34+
### Config
35+
3436
You must create `config.py` in the top-level directory with the appropriate credentials for the application to run. See `config.sample.py` for an example.
3537

38+
#### Add OIDC Config
39+
Reach out to an RTP to get OIDC credentials that will allow you to develop locally behind OIDC auth
40+
```
41+
# OIDC Config
42+
OIDC_ISSUER = "https://sso.csh.rit.edu/auth/realms/csh"
43+
OIDC_CLIENT_CONFIG = {
44+
'client_id': '',
45+
'client_secret': '',
46+
'post_logout_redirect_uris': ['http://0.0.0.0:6969/logout']
47+
}
48+
```
49+
50+
### Run
51+
3652
Once you have all of the dependencies installed, simply run:
3753

3854
```

conditional/__init__.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def database_processor(logger, log_method, event_dict): # pylint: disable=unuse
8484

8585
logger = structlog.get_logger()
8686

87-
from conditional.util.auth import get_username
87+
from conditional.util.auth import get_user
8888

8989
from conditional.blueprints.dashboard import dashboard_bp # pylint: disable=ungrouped-imports
9090
from conditional.blueprints.attendance import attendance_bp
@@ -138,15 +138,14 @@ def logout():
138138
@app.errorhandler(404)
139139
@app.errorhandler(500)
140140
@auth.oidc_auth
141-
@get_username
142-
def route_errors(error, username=None):
141+
@get_user
142+
def route_errors(error, user_dict=None):
143143
data = dict()
144144

145145
# Handle the case where the header isn't present
146-
if username is not None:
147-
member = ldap_get_member(username)
148-
data['username'] = member.uid
149-
data['name'] = member.cn
146+
if user_dict['username'] is not None:
147+
data['username'] = user_dict['account'].uid
148+
data['name'] = user_dict['account'].cn
150149
else:
151150
data['username'] = "unknown"
152151
data['name'] = "Unknown"

conditional/blueprints/attendance.py

Lines changed: 42 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from conditional.models.models import MemberHouseMeetingAttendance
1616
from conditional.models.models import MemberSeminarAttendance
1717
from conditional.models.models import TechnicalSeminar
18-
from conditional.util.auth import get_username
18+
from conditional.util.auth import get_user
1919
from conditional.util.flask import render_template
2020
from conditional.util.ldap import ldap_get_active_members
2121
from conditional.util.ldap import ldap_get_current_students
@@ -150,29 +150,27 @@ def display_attendance_ts():
150150

151151
@attendance_bp.route('/attendance_hm')
152152
@auth.oidc_auth
153-
@get_username
154-
def display_attendance_hm(username=None):
153+
@get_user
154+
def display_attendance_hm(user_dict=None):
155155
log = logger.new(request=request)
156156
log.info('Display House Meeting Attendance Page')
157157

158-
account = ldap_get_member(username)
159-
if not ldap_is_eval_director(account):
158+
if not ldap_is_eval_director(user_dict['account']):
160159
return redirect("/dashboard")
161160

162161
return render_template('attendance_hm.html',
163-
username=username,
162+
username=user_dict['username'],
164163
date=datetime.now().strftime("%Y-%m-%d"),
165164
members=get_non_alumni_non_coop(internal=True))
166165

167166

168167
@attendance_bp.route('/attendance/submit/cm', methods=['POST'])
169168
@auth.oidc_auth
170-
@get_username
171-
def submit_committee_attendance(username=None):
169+
@get_user
170+
def submit_committee_attendance(user_dict=None):
172171
log = logger.new(request=request)
173172

174-
account = ldap_get_member(username)
175-
approved = ldap_is_eboard(account)
173+
approved = ldap_is_eboard(user_dict['account'])
176174
post_data = request.get_json()
177175

178176
committee = post_data['committee']
@@ -203,13 +201,12 @@ def submit_committee_attendance(username=None):
203201

204202
@attendance_bp.route('/attendance/submit/ts', methods=['POST'])
205203
@auth.oidc_auth
206-
@get_username
207-
def submit_seminar_attendance(username=None):
204+
@get_user
205+
def submit_seminar_attendance(user_dict=None):
208206
log = logger.new(request=request)
209207
log.info('Submit Technical Seminar Attendance')
210208

211-
account = ldap_get_member(username)
212-
approved = ldap_is_eboard(account)
209+
approved = ldap_is_eboard(user_dict['account'])
213210

214211
post_data = request.get_json()
215212

@@ -239,15 +236,14 @@ def submit_seminar_attendance(username=None):
239236

240237
@attendance_bp.route('/attendance/submit/hm', methods=['POST'])
241238
@auth.oidc_auth
242-
@get_username
243-
def submit_house_attendance(username=None):
239+
@get_user
240+
def submit_house_attendance(user_dict=None):
244241
log = logger.new(request=request)
245242
log.info('Submit House Meeting Attendance')
246243

247244
# status: Attended | Excused | Absent
248245

249-
account = ldap_get_member(username)
250-
if not ldap_is_eval_director(account):
246+
if not ldap_is_eval_director(user_dict['account']):
251247
return "must be evals", 403
252248

253249
post_data = request.get_json()
@@ -290,12 +286,11 @@ def submit_house_attendance(username=None):
290286

291287
@attendance_bp.route('/attendance/alter/hm/<uid>/<hid>', methods=['GET'])
292288
@auth.oidc_auth
293-
@get_username
294-
def alter_house_attendance(uid, hid, username=None):
289+
@get_user
290+
def alter_house_attendance(uid, hid, user_dict=None):
295291
log = logger.new(request=request)
296292

297-
account = ldap_get_member(username)
298-
if not ldap_is_eval_director(account):
293+
if not ldap_is_eval_director(user_dict['account']):
299294
return "must be evals", 403
300295

301296
if not uid.isdigit():
@@ -321,12 +316,11 @@ def alter_house_attendance(uid, hid, username=None):
321316

322317
@attendance_bp.route('/attendance/alter/hm/<uid>/<hid>', methods=['POST'])
323318
@auth.oidc_auth
324-
@get_username
325-
def alter_house_excuse(uid, hid, username=None):
319+
@get_user
320+
def alter_house_excuse(uid, hid, user_dict=None):
326321
log = logger.new(request=request)
327322

328-
account = ldap_get_member(username)
329-
if not ldap_is_eval_director(account):
323+
if not ldap_is_eval_director(user_dict['account']):
330324
return "must be eval director", 403
331325

332326
post_data = request.get_json()
@@ -359,8 +353,8 @@ def alter_house_excuse(uid, hid, username=None):
359353

360354
@attendance_bp.route('/attendance/history', methods=['GET'])
361355
@auth.oidc_auth
362-
@get_username
363-
def attendance_history(username=None):
356+
@get_user
357+
def attendance_history(user_dict=None):
364358

365359
def get_meeting_attendees(meeting_id):
366360
attendees = [ldap_get_member(a.uid).displayName for a in
@@ -388,8 +382,7 @@ def get_seminar_attendees(meeting_id):
388382

389383
log = logger.new(request=request)
390384

391-
account = ldap_get_member(username)
392-
if not ldap_is_eboard(account):
385+
if not ldap_is_eboard(user_dict['account']):
393386
return jsonify({"success": False, "error": "Not EBoard"}), 403
394387

395388

@@ -437,7 +430,7 @@ def get_seminar_attendees(meeting_id):
437430
else:
438431
total_pages = (int(len(all_cm) / 10))
439432
return render_template('attendance_history.html',
440-
username=username,
433+
username=user_dict['username'],
441434
history=all_meetings,
442435
pending_cm=pend_cm,
443436
pending_ts=pend_ts,
@@ -447,13 +440,12 @@ def get_seminar_attendees(meeting_id):
447440

448441
@attendance_bp.route('/attendance/alter/cm/<cid>', methods=['POST'])
449442
@auth.oidc_auth
450-
@get_username
451-
def alter_committee_attendance(cid, username=None):
443+
@get_user
444+
def alter_committee_attendance(cid, user_dict=None):
452445
log = logger.new(request=request)
453446
log.info('Edit Committee Meeting Attendance')
454447

455-
account = ldap_get_member(username)
456-
if not ldap_is_eboard(account):
448+
if not ldap_is_eboard(user_dict['account']):
457449
return jsonify({"success": False, "error": "Not EBoard"}), 403
458450

459451
post_data = request.get_json()
@@ -480,13 +472,12 @@ def alter_committee_attendance(cid, username=None):
480472

481473
@attendance_bp.route('/attendance/alter/ts/<sid>', methods=['POST'])
482474
@auth.oidc_auth
483-
@get_username
484-
def alter_seminar_attendance(sid, username=None):
475+
@get_user
476+
def alter_seminar_attendance(sid, user_dict=None):
485477
log = logger.new(request=request)
486478
log.info('Edit Technical Seminar Attendance')
487479

488-
account = ldap_get_member(username)
489-
if not ldap_is_eboard(account):
480+
if not ldap_is_eboard(user_dict['account']):
490481
return jsonify({"success": False, "error": "Not EBoard"}), 403
491482

492483
post_data = request.get_json()
@@ -513,8 +504,8 @@ def alter_seminar_attendance(sid, username=None):
513504

514505
@attendance_bp.route('/attendance/ts/<sid>', methods=['GET', 'DELETE'])
515506
@auth.oidc_auth
516-
@get_username
517-
def get_cm_attendees(sid, username=None):
507+
@get_user
508+
def get_cm_attendees(sid, user_dict=None):
518509
if request.method == 'GET':
519510
attendees = [{"value": a.uid,
520511
"display": ldap_get_member(a.uid).displayName
@@ -533,8 +524,7 @@ def get_cm_attendees(sid, username=None):
533524
log = logger.new(request=request)
534525
log.info('Delete Technical Seminar {}'.format(sid))
535526

536-
account = ldap_get_member(username)
537-
if not ldap_is_eboard(account):
527+
if not ldap_is_eboard(user_dict['account']):
538528
return jsonify({"success": False, "error": "Not EBoard"}), 403
539529

540530
FreshmanSeminarAttendance.query.filter(
@@ -552,8 +542,8 @@ def get_cm_attendees(sid, username=None):
552542

553543
@attendance_bp.route('/attendance/cm/<cid>', methods=['GET', 'DELETE'])
554544
@auth.oidc_auth
555-
@get_username
556-
def get_ts_attendees(cid, username=None):
545+
@get_user
546+
def get_ts_attendees(cid, user_dict=None):
557547
if request.method == 'GET':
558548
attendees = [{"value": a.uid,
559549
"display": ldap_get_member(a.uid).displayName
@@ -572,8 +562,7 @@ def get_ts_attendees(cid, username=None):
572562
log = logger.new(request=request)
573563
log.info('Delete Committee Meeting {}'.format(cid))
574564

575-
account = ldap_get_member(username)
576-
if not ldap_is_eboard(account):
565+
if not ldap_is_eboard(user_dict['account']):
577566
return jsonify({"success": False, "error": "Not EBoard"}), 403
578567

579568
FreshmanCommitteeAttendance.query.filter(
@@ -591,13 +580,12 @@ def get_ts_attendees(cid, username=None):
591580

592581
@attendance_bp.route('/attendance/cm/<cid>/approve', methods=['POST'])
593582
@auth.oidc_auth
594-
@get_username
595-
def approve_cm(cid, username=None):
583+
@get_user
584+
def approve_cm(cid, user_dict=None):
596585
log = logger.new(request=request)
597586
log.info('Approve Committee Meeting {} Attendance'.format(cid))
598587

599-
account = ldap_get_member(username)
600-
if not ldap_is_eboard(account):
588+
if not ldap_is_eboard(user_dict['account']):
601589
return jsonify({"success": False, "error": "Not EBoard"}), 403
602590

603591
CommitteeMeeting.query.filter(
@@ -610,13 +598,12 @@ def approve_cm(cid, username=None):
610598

611599
@attendance_bp.route('/attendance/ts/<sid>/approve', methods=['POST'])
612600
@auth.oidc_auth
613-
@get_username
614-
def approve_ts(sid, username=None):
601+
@get_user
602+
def approve_ts(sid, user_dict=None):
615603
log = logger.new(request=request)
616604
log.info('Approve Technical Seminar {} Attendance'.format(sid))
617605

618-
account = ldap_get_member(username)
619-
if not ldap_is_eboard(account):
606+
if not ldap_is_eboard(user_dict['account']):
620607
return jsonify({"success": False, "error": "Not EBoard"}), 403
621608

622609
TechnicalSeminar.query.filter(

conditional/blueprints/cache_management.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from flask import Blueprint, request, redirect
66

77
from conditional import auth
8-
from conditional.util.auth import get_username
8+
from conditional.util.auth import get_user
99
from conditional.util.ldap import _ldap_is_member_of_directorship
1010
from conditional.util.ldap import ldap_get_active_members
1111
from conditional.util.ldap import ldap_get_current_students
@@ -24,10 +24,9 @@
2424

2525
@cache_bp.route('/restart')
2626
@auth.oidc_auth
27-
@get_username
28-
def restart_app(username=None):
29-
account = ldap_get_member(username)
30-
if not ldap_is_rtp(account):
27+
@get_user
28+
def restart_app(user_dict=None):
29+
if not ldap_is_rtp(user_dict['account']):
3130
return redirect("/dashboard")
3231

3332
log = logger.new(request=request)
@@ -38,11 +37,9 @@ def restart_app(username=None):
3837

3938
@cache_bp.route('/clearcache')
4039
@auth.oidc_auth
41-
@get_username
42-
def clear_cache(username=None):
43-
account = ldap_get_member(username)
44-
45-
if not ldap_is_eval_director(account) and not ldap_is_rtp(account):
40+
@get_user
41+
def clear_cache(user_dict=None):
42+
if not ldap_is_eval_director(user_dict['account']) and not ldap_is_rtp(user_dict['account']):
4643
return redirect("/dashboard")
4744

4845
log = logger.new(request=request)

0 commit comments

Comments
 (0)