Этот пост будет кратким — благодаря стараниям Олега в Byteflow теперь присутствует сервер OpenID. Клёво. :-)
P.S.А ещё byteflow — второй по тегу django на ohloh.net, после самой джанги. :-)
Хорошие новости - я порядочно переделал механизм работы с опенидом в
блоге. Правда, сами внутренности openidconsumer почти не подверглись
издевательствам, изменения прошли в основном в коде работы с пользователем. Но
зато для пользователей поменялось всё порядочно.
Во-первых, теперь после попытки логина с неизвестным блогу OpenID’ом теперь не
покажет две непонятные формы “введите логин/пароль”, а молча залогинит - создав
по пути нового пользователя. Правда, может выкинуть на старую страничку - если
вдруг система sreg отдаст email, уже существующий в базе (если она не отдаст
email, то всё пойдёт по первому сценарию без привлечения пользователя к процессу).
Во-вторых, теперь в профиле есть ссылочка на список ассоциированных с
пользователем OpenID’ов, где их можно удалять и добавлять новые.
Так что жизнь становится легче и удобнее с каждым часом. :D Велкам! ;-)
Что-то меня прям пробило на код. :-) 4 месяца ничего не трогал, а за последние два дня прям сделал выше всяких норм. :-) В общем, OpenID работает. Причём он привязан к собственной джанговой системе аутентификации.
При логине с новым опенидом предлагается либо создать нового пользователя, либо привязать этот опенид к существующему пользователю (только введя пароль, иначе никак :)). К одному пользователю, что естественно и удобно, может быть привязано несколько OpenID’шных аккаунтов.
При том же первом логине сервер просит у провайдера опенида никнейм и мыло пользователя, а если не отдаёт - пытается угадать его (ну, угадывание достаточно тупое - он просто берёт первую часть имени домена опенида, сделано это как воркэраунд для ЖЖ, которая не отдаёт ни под каким видом ничего).
P.S.Сама поддержка OpenID - это django-openidconsumer Саймона Виллисона с патчем Benoit’а Chesneau (ух, затрудняюсь это на русском написать ;))
P.P.S.Если будут замечены глюки или баги, просьба отписать в комментариях или создать новый тикет в траке.