Как перенести учетные записи Joomla в мое приложение Rails? - PullRequest
0 голосов
/ 01 апреля 2012

У меня есть веб-сайт 1.5 Joomla, который я планирую переписать как веб-сайт Ruby On Rails. Около 300 зарегистрированных пользователей. Существует ли простой способ переноса учетных записей моих пользователей для создания учетных записей на основе гемов?

Ответы [ 2 ]

3 голосов
/ 03 октября 2012

Я знаю, что это старое, но натолкнулся на это, а потом нашел ответ, так что я пост для других.

Поле пароля в joomla - это md5 пароля и случайно сгенерированной соли плюс двоеточие и случайно сгенерированной соли.

Это будет выглядеть примерно так:

33da105d239879dae4cdaf58557985c:L8QwPXN02cltv0lkGIyD3JRDU0AR5fcA

Так что вернемся к этому ...

1) Запрос БД для имени пользователя (опубликовано пользователем)

user = User.find_by_username(params[:username])

2) Затем разделите пароль и получите второй элемент в массиве:

salt = user.password.split(":")[1]

3) Возьмите пароль (опубликованный пользователем) плюс соль и сравните его с паролем в БД

user.password == Digest::MD5.hexdigest(params[:password] + salt).to_s + ":" + salt

Если у вас правильная комбинация пользователь / пароль, это должно быть правдой ...

1 голос
/ 01 апреля 2012

Я делаю подобную миграцию следующим образом:

  1. Создание пользователей модели устройства с дополнительными полями для хэша старого пароля и соли

  2. Скопировать всех пользователей из старой базы данных в новую (хэш нового пароля будет пустым, поскольку мы не знаем фактический пароль пользователя)

  3. Patch метод аутентификации - когда пользователь пытается войти в систему с учетной записью без нового хэша (это означает, что это старый пользователь) - мы аутентифицируем его по старому алгоритму аутентификации, и если он проходит, мы создаем для его пароля хэш нового прохода (используя devise)

...