|
12 | 12 | from common.djangoapps.edxmako.shortcuts import render_to_response |
13 | 13 | from opaque_keys import InvalidKeyError |
14 | 14 | from opaque_keys.edx.keys import CourseKey, UsageKey |
| 15 | +from openedx_events.learning.data import LtiProviderLaunchData, LtiProviderLaunchParamsData, UserData, UserPersonalData |
| 16 | +from openedx_events.learning.signals import LTI_PROVIDER_LAUNCH_SUCCESS |
15 | 17 |
|
16 | 18 | from common.djangoapps.util.views import add_p3p_header |
17 | 19 | from lms.djangoapps.lti_provider.models import LtiConsumer |
@@ -107,6 +109,34 @@ def lti_launch(request, course_id, usage_id): |
107 | 109 | # used earlier to verify the oauth signature. |
108 | 110 | store_outcome_parameters(params, request.user, lti_consumer) |
109 | 111 |
|
| 112 | + # Make a copy of params for the event signal, and remove sensitive oauth parameters. |
| 113 | + launch_params = params.copy() |
| 114 | + for key in launch_params: |
| 115 | + if key.startswith('oauth_'): |
| 116 | + launch_params.pop(key) |
| 117 | + |
| 118 | + LTI_PROVIDER_LAUNCH_SUCCESS.send_event( |
| 119 | + launch_data=LtiProviderLaunchData( |
| 120 | + user=UserData( |
| 121 | + pii=UserPersonalData( |
| 122 | + username=request.user.username, |
| 123 | + email=request.user.email, |
| 124 | + name=request.user.profile.name, |
| 125 | + ), |
| 126 | + id=request.user.id, |
| 127 | + is_active=request.user.is_active, |
| 128 | + ), |
| 129 | + course_key=launch_params.pop("course_key"), |
| 130 | + usage_key=launch_params.pop("usage_key"), |
| 131 | + launch_params=LtiProviderLaunchParamsData( |
| 132 | + roles=launch_params.pop("roles"), |
| 133 | + context_id=launch_params.pop("context_id"), |
| 134 | + user_id=launch_params.pop("user_id"), |
| 135 | + extra_data={key: str(val) for key, val in launch_params.items()}, |
| 136 | + ), |
| 137 | + ) |
| 138 | + ) |
| 139 | + |
110 | 140 | return render_courseware(request, params['usage_key']) |
111 | 141 |
|
112 | 142 |
|
|
0 commit comments