Log in student

    POST parameters (JSON):
        student:
            profile id of the student

def login_student(request):
    """
    Log in student

    POST parameters (JSON):
        student:
            profile id of the student
    """
    if not get_config('proso_user', 'allow_login_students', default=False):
        return render_json(request, {
            'error': _('Log in as student is not allowed.'),
            'error_type': 'login_student_not_allowed'
        }, template='class_create_student.html', help_text=login_student.__doc__, status=403)

    if request.method == 'GET':
        return render(request, 'class_login_student.html', {}, help_text=login_student.__doc__)
    elif request.method == 'POST':
        if not request.user.is_authenticated() or not hasattr(request.user, "userprofile"):
            return render_json(request, {
                'error': _('User is not logged in.'),
                'error_type': 'user_unauthorized'
            }, template='class_create_student.html', status=401)
        data = json_body(request.body.decode("utf-8"))
        try:
            student = User.objects.get(userprofile=data.get('student'),
                                       userprofile__classes__owner=request.user.userprofile)
        except User.DoesNotExist:
            return render_json(request, {
                'error': _('Student not found'),
                'error_type': 'student_not_found'
            }, template='class_login_student.html', status=401)
        if not student.is_active:
            return render_json(request, {
                'error': _('The account has not been activated.'),
                'error_type': 'account_not_activated'
            }, template='class_login_student.html', status=401)
        student.backend = 'django.contrib.auth.backends.ModelBackend'
        login(request, student)
        request.method = "GET"
        return profile(request)
    else:
        return HttpResponseBadRequest("method %s is not allowed".format(request.method))