Плагин Регистрации-легковесной проверки

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Планируется в первую очередь для учеников ВКШ.

Ответственен за авторизацию и контроль запуска-выполнения программы.

Авторизация существует в двух вариантах: дома и в дисплейном классе. Можно делать два разных плагина, а можно попытаться объединить.

Для дома. Есть кнопка входа. Это означает, что при инсталляции вместе с dll инсталлируется специальный файл в парке PascalABC.NET, ответственный за домашнее использование. При нажатии на кнопку входа возникает окно входа, где пользователь вводит свои логин-пароль. Если его нет в БД, то вход отвергается, и PascalABC.NET работает как обычно. Если вход осуществлен, то запоминается логин и пароль и при последующем запуске PascalABC.NET вход осуществляется автоматически.

В дисплейном классе кнопка входа отображается только если PascalABC.NET запущен из папки со специальным файлом-маркером. При этом если он находится в папке на диске P, то вход в аккаунт данного школьника осуществляется автоматически.

Если вход тем или иным способом осуществлен, то каждый запуск программы контролируется. На сервер отсылается информация об ученике, маркер времени, папка и имя запущенной программы и возможно текст программы. Может, информация о версии PABC. Возможно, это стоит делать только для папок с маркером автопроверки.

Кроме этого, к программам, запущенным из папки со специальным файлом-маркером, автоматически подключается модуль LightPT и модуль Tasks из текущей папки (последний - слабое место - его код открыт, и он перекомпилируется при первом использовании. К тому же, при изменении версии паскаля наличие файла pcu в папке катастрофично. Может, генерацию PCU надо будет отключать)

После подключения модуля LightPT проверяющая часть проверяет правильность выполнения после запуска и отсылает на сервер информацию о том, как выполнена программа или об ошибках.

Проблема: фактически при запуске программы информация на сервер посылается дважды - о факте запуска программы из плагина и о факте решения задания из модуля LightPT. Как это синхронизировать-объединить - пока непонятно.