Skip to content

Commit 002de68

Browse files
authored
#1631 any user with teacher role can enable courses (#1665)
* #1631 any user with teacher role can enable courses * Changing the check to teacher enrollment
1 parent 85f2c37 commit 002de68

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

assets/config/lti_config_template.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"public_jwk": {},
3838
"description": "MyLA automatically generated configuration",
3939
"custom_fields": {
40+
"canvas_course_roles": "$Canvas.membership.roles",
4041
"user_username": "$User.username",
4142
"canvas_user_id": "$Canvas.user.id",
4243
"canvas_course_id": "$Canvas.course.id",

dashboard/lti_new.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
TA = 'http://purl.imsglobal.org/vocab/lis/v2/membership/Instructor#TeachingAssistant'
3232
COURSE_MEMBERSHIP = 'http://purl.imsglobal.org/vocab/lis/v2/membership'
3333
DUMMY_CACHE = 'DummyCache'
34+
CANVAS_TEACHER_ROLE = 'TeacherEnrollment'
3435

3536
# do not require deployment ids if LTI_CONFIG_DISABLE_DEPLOYMENT_ID_VALIDATION is true
3637
class ExtendedDjangoMessageLaunch(DjangoMessageLaunch):
@@ -182,9 +183,9 @@ def get_cache_config():
182183
# Checking if user only has Instructor role in a course to enable MyLA in courses.
183184
# A TA could be an instructor in an course section so his role will be both TA and Instructor.
184185
# we don't want TA to enable the MyLA data extraction step.
185-
def check_if_instructor(roles, username, course_id):
186+
def check_if_instructor(roles, canvas_course_roles, username, course_id):
186187
user_membership_roles = set([role for role in roles if role.find(COURSE_MEMBERSHIP) == 0])
187-
if user_membership_roles and INSTRUCTOR in user_membership_roles:
188+
if user_membership_roles and CANVAS_TEACHER_ROLE in [role.strip() for role in canvas_course_roles.split(",")]:
188189
logger.info(f'user {username} is Instructor in the course {course_id}')
189190
return True
190191
return False
@@ -224,6 +225,7 @@ def extract_launch_variables_for_tool_use(request, message_launch):
224225
username = custom_params['user_username']
225226
course_id = custom_params['canvas_course_id']
226227
canvas_user_id = custom_params['canvas_user_id']
228+
canvas_course_roles = custom_params.get('canvas_course_roles', '')
227229
time_zone = custom_params.get('person_address_timezone',
228230
settings.TIME_ZONE).strip()
229231

@@ -257,7 +259,7 @@ def extract_launch_variables_for_tool_use(request, message_launch):
257259

258260
user_obj.backend = 'django.contrib.auth.backends.ModelBackend'
259261
django.contrib.auth.login(request, user_obj)
260-
is_instructor = check_if_instructor(roles, username, course_id)
262+
is_instructor = check_if_instructor(roles, canvas_course_roles, username, course_id)
261263

262264
try:
263265
Course.objects.get(canvas_id=course_id)

0 commit comments

Comments
 (0)