85 lines
3.0 KiB
JavaScript
85 lines
3.0 KiB
JavaScript
/**
|
|
* In-memory storage of verification photo data.
|
|
*
|
|
* This can be passed to multiple steps in the workflow
|
|
* to persist image data in-memory before it is submitted
|
|
* to the server.
|
|
*
|
|
*/
|
|
var edx = edx || {};
|
|
|
|
(function($, Backbone) {
|
|
'use strict';
|
|
|
|
edx.verify_student = edx.verify_student || {};
|
|
|
|
edx.verify_student.VerificationModel = Backbone.Model.extend({
|
|
|
|
defaults: {
|
|
// If provided, change the user's full name when submitting photos.
|
|
fullName: null,
|
|
|
|
// Image data for the user's face photo.
|
|
faceImage: '',
|
|
|
|
// Image data for the user's ID photo.
|
|
// In the case of an in-course reverification, we won't
|
|
// need to send this because we'll send the ID photo that
|
|
// the user submitted with the initial verification attempt.
|
|
identificationImage: null,
|
|
|
|
// If the verification attempt is associated with a checkpoint
|
|
// in a course, we send the the course and checkpoint location.
|
|
courseKey: null,
|
|
checkpoint: null
|
|
},
|
|
|
|
sync: function(method, model) {
|
|
var headers = {'X-CSRFToken': $.cookie('csrftoken')},
|
|
data = {};
|
|
|
|
data.face_image = model.get('faceImage');
|
|
|
|
// The ID photo is optional, since in-course reverification
|
|
// re-uses the image from the initial verification attempt.
|
|
if (model.has('identificationImage')) {
|
|
data.photo_id_image = model.get('identificationImage');
|
|
}
|
|
|
|
// Full name is an optional parameter; if not provided,
|
|
// it won't be changed.
|
|
if (model.has('fullName')) {
|
|
data.full_name = model.get('fullName');
|
|
|
|
// Track the user's decision to change the name on their account
|
|
window.analytics.track('edx.bi.user.full_name.changed', {
|
|
category: 'verification'
|
|
});
|
|
}
|
|
|
|
// If the user entered the verification flow from a checkpoint
|
|
// in a course, we need to send the course and checkpoint
|
|
// location to associate the attempt with the checkpoint.
|
|
if (model.has('courseKey') && model.has('checkpoint')) {
|
|
data.course_key = model.get('courseKey');
|
|
data.checkpoint = model.get('checkpoint');
|
|
}
|
|
|
|
// Submit the request to the server,
|
|
// triggering events on success and error.
|
|
$.ajax({
|
|
url: '/verify_student/submit-photos/',
|
|
type: 'POST',
|
|
data: data,
|
|
headers: headers,
|
|
success: function(response) {
|
|
model.trigger('sync', response.url);
|
|
},
|
|
error: function(error) {
|
|
model.trigger('error', error);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}(jQuery, Backbone));
|