Замена логинов подгружаемых пользователей

Замена логинов подгружаемых пользователей

от Александр Фомин -
Количество ответов: 8

Добрый день, moodle-знающим и -познающим!


В организации вводят новую политику учетных записей. Пользовательская база студентов (около 11 тыс. уч.записей) подгружается посредством плагина аутентификации мульти-ldap.
При замене логина в базе организации в moodle после синхронизации создается новая учетная запись, а нужно чтобы произошла замена существующей, так как оценки, роли в курсах, сообщения и прочие настройки должны остаться без изменений для пользователя.
Как провести замену логинов пользователей в системе на новые логины, которые будут приняты?
Возможно кто-то сталкивался с необходимостью массовой замены логинов из синхронизированной БД


Во вложении пример 2-х четных записей, которые должны быть одной - старой с изменением логина на новый.

Приложение Старая-новая уч.запись (пример).png
В ответ на Александр Фомин

Re: Замена логинов подгружаемых пользователей

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Могу точно сказать за active directory. Если у вас другой ldap, то скорее всего так же, но могут быть нюансы.

Moodle синхронизируется с active directory именно опираясь на то, что вы вводите в поле логин. То есть разные логины - разные учетки. Порядок логина такой - сначала по samaccountname ищется dn пользователя, потом для проверки пароля делается подключение с найденным dn и введенным паролем. То есть, если не нашелся dn, то и логин не удастся.

Пока не очень ясно, как у вас будет внедряться новая политика учетных записей - постепенно, или резко и т.п. Поэтому не ясно, нужна ли вам в течение некоторого времени возможность входить под обоими логинами, или нет; одни и те же это пользователи в ldap или разные и т.п.

Если переход будет постепенный, но пользователь в ldap будет один и тот же, а старый логин будут сохраняться в отдельном атрибуте, то можно допилить плагин, чтобы он искал пользователя сначала по одному логину, потом по другому, и обновлял логин при необходимости.

Если пользователи ldap разные, но переключение будет одномоментным, то можно составить таблицу сопоставления учетных записей, и на основе этой таблицы одним sql-запросом сделать замену логинов в бд moodle.

В общем поподробнее расскажите, что и как у вас

В ответ на Vadim Dvorovenko

Re: Замена логинов подгружаемых пользователей

от Александр Фомин -
Благодарю за ответ.
Да, синхронизация с AD.
Как выяснилось внедрение новой политики будет постепенное, вопрос о массовой замене username отпадает. Возможности входить под двумя логинами не предполагается, необходима именно замена логина существующего пользователя с прогрессом в СДО на идентичный логин измененный в AD.

Необходимость смены логинов появилась из-за проблемы с преемственностью, чтобы логин не был привязан к учебной группе и уровню квалификации, придумали новый формат, который несет информацию только о самом студенте.
Ранее было:
например, студент закончил бакалавриат, поступил на магистратуру - создавалась новая учетная запись магистра. Студент учится на 2-х направлениях - имеет 2 учетные записи. 
Сейчас:
любой студент имеющий отношение к университету имеет 1 учетную запись с единым прогрессом обучения.

По такому принципу, вновь прибывшие получают уже новые логины - с ними проблем нет, т.к. нет прогресса; студенты кто меняет группу, фамилию, уровень квалификации будут постепенно переходить на новый формат логинов.
То есть последним нужно подменять username в СДО, таких немного.
Временное отключение синхронизации с ldap, замена в сдо логинов некоторых пользователей на идентичные в AD и последующее включение синхронизации решило бы проблему. Время от времени просто "подменяли" бы логины и учетка бы продолжала существовать одна с тем же фактическим пользователем. Но вот в чем вопрос, как изменить логин у пользователя, который аутентифицируется по ldap?

В ответ на Александр Фомин

Re: Замена логинов подгружаемых пользователей

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
Смена логина
Вариант 1. Напрямую sql-запросом к базе в таблицу mdl_user
Вариант 2. В этой форме. Поменять метод аутентификации на ручная регистрация, сохранить. Поменять логин, сохранить. Поменять метод регистрации обратно на ldap, сохранить.

Подскажите, а этот плагин multi-ldap, он из стандартной поставки moodle или из репозитория, или под вашу организацию кто-то разрабатывал? Что-то не могу его поиском найти.
В ответ на Vadim Dvorovenko

Re: Замена логинов подгружаемых пользователей

от Александр Фомин -

"Вариант 2. В этой форме. Поменять метод аутентификации на ручная регистрация, сохранить. Поменять логин, сохранить. Поменять метод регистрации обратно на ldap, сохранить."

Действительно, через пользовательский интерфейс решение на поверхности лежало, почему не догадались самив думах

"Подскажите, а этот плагин multi-ldap, он из стандартной поставки moodle или из репозитория, или под вашу организацию кто-то разрабатывал? Что-то не могу его поиском найти."

Именно этот сайт поддерживается "Открытыми технологиями", думаю это их доработка плагина ldap.

В результате, смена логина позволяет подменить "чистого" пользователя с новым логином на старого пользователя с прогрессом . Но остаются те, кто учится на 2-х направлениях например, и уже имеет две учетные записи со своими прогрессами.

Можете что-нибудь сказать вот об этом плагине Admin tools: Merge user accounts? https://moodle.org/plugins/tool_mergeusers

В ответ на Александр Фомин

Re: Замена логинов подгружаемых пользователей

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
Хотел сам вам посоветовать этот плагин, но забыл как он называется. Когда из-за раздвоений при переименовании учетки в ldap появлялась вторая запись, объединял через этот плагин. Работает хорошо.
В ответ на Vadim Dvorovenko

Re: Замена логинов подгружаемых пользователей

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода
Если сайт на поддержке открытых технологий, вы можете задавать вопросы им. В отличие от этого форума, они вам гарантированно дадут какой-то ответ.
Если плагин их разработки, возможно плагин уже решает проблему переименований учеток в AD, нужно только уточнить как. Если нет, возможно они его доработают.
Идея доработки достаточно простая - кроме логина у каждой учетки в AD есть guid, его можно сохранять в поле id_number, и сверять учетки в том числе и по нему, если сверка по логину не сработала. Я использовал подобную логику когда-то при интеграции с другой системой.
В ответ на Vadim Dvorovenko

Re: Замена логинов подгружаемых пользователей

от Александр Фомин -
Конечно, обсуждение данного вопроса ведется с тех.поддержкой ОТ. Плагин на данный момент не решает такой задачи, разумеется они могут разработать утилиту и доработать плагин, но меня интересовало также мнение и варианты вне договорного отношения. И не зря, например способ "вручную" изменение логина, подсказали именно вы.
Склоняюсь к использованию плагина Admin tools: Merge user accounts, благодарю за отзыв, помог в принятии решения об использовании.
В ответ на Александр Фомин

Re: Замена логинов подгружаемых пользователей

от Александр Мчедлишвили -

Не знаком пока с плагинами. Пока что использую ручную регистрацию через CSV.

Нашел, что можно менять логины через импорт CSV файла.

Для этого в столбце "username" пишется новый логин, а в столбце "oldusername" пишется действующий логин. 

Приложение 2.jpg