Mercurial: как разрешить удаленным пользователям менять свой пароль?
Я настроил хранилище Mercurial на своем веб-сервере, используя Apache и hgweb. Я понимаю, как создавать новые учетные записи пользователей с помощью htdigest, но я хотел бы знать, как разрешить удаленным пользователям изменять свой пароль. В идеале я бы создал их учетную запись с временным паролем, а затем отправил бы им электронное письмо с предложением изменить его. Пользователи должны иметь возможность менять свой собственный пароль, а не пароль других пользователей (в противном случае я бы просто предоставил им учетную запись оболочки).
Можно ли это сделать? Если так, то как?
1 ответ
Htdigest - это файл конфигурации пользователя Apache, и в принципе управление им выходит за рамки самой Mercurial.
Чтобы предоставить форму смены пароля, вам нужно написать собственный скрипт, который манипулирует файлом htdigest. Это не должно быть слишком сложно. Насколько я понимаю, каждая строка этого файла имеет формат:
user:realm:MD5(user:realm:pass)
Пример кода для генерации MD5-части этого формата можно найти здесь:
http://httpd.apache.org/docs/trunk/misc/password_encryptions.html
Возможно, вы сможете найти несколько готовых сценариев, которые делают это, но, к сожалению, я не смог быстро их найти. Я думаю, что также возможно настроить Apache для подключения к уже существующей базе данных, которая хранит пароли в этом формате, и обрабатывать управление паролями через это.
В качестве альтернативы я бы рекомендовал рассмотреть пакеты серверов репозитория, такие как RhodeCode или SCM-Manager, которые имеют встроенную поддержку для таких задач управления.