Migrei uma grande quantidade de conteúdo do bbPress para a minha instalação do Discourse. Consigo ver todas as postagens, usuários e afins. Mas meus usuários não conseguem fazer login usando os dados de “senha antiga” do meu site WordPress. Instalei o plugin, e ele aparece na seção de plugins da minha área administrativa. Marquei todas as opções disponíveis.
Ainda assim: ninguém consegue fazer login!
Também não faço ideia de onde aplicar o código fornecido no README do plugin:
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save
Além disso, não entendo exatamente o que significa “hashes de senha alternativos” mencionado no README.
@michaeld, você poderia dar mais orientações sobre como usar o plugin?
Nossa, depois de mais alguns testes, descobri que na verdade funcionou. O problema era uma senha alterada quando eu testei Desculpe! Obrigado pelo ótimo plugin! Tornou minha vida muito mais fácil!
Oi, estou com problemas para fazer isso funcionar. Criei um campo personalizado chamado import_pass e instalei o plugin. Executei o script de importação novamente no meu banco de dados SMF, mas sem sucesso; ninguém consegue fazer login depois disso. No campo personalizado, consigo ver apenas um “-” em vez de algum hash.
Como outros usuários já apontaram antes, não tenho certeza do que fazer com isso:
user = User.find_by(username: 'user')
user.custom_fields['import_pass'] = '5f4dcc3b5aa765d61d8327deb882cf99'
user.save
Agradeço qualquer orientação. Esse código deve ir no arquivo do script de importação smf2.rb ou o quê?
Isso não vai funcionar. Mas não há necessidade de instalar o plugin durante a importação ou de criar um campo personalizado manualmente. Isso já deve ser tratado pelo script SMF2. Então, algo mais está acontecendo.
O código está lá como um exemplo para autores de scripts. Ele já está no script SMF2.
Obrigado. Isso é ótimo. Então você quer dizer que, se eu remover o campo personalizado criado manualmente e apenas manter o plugin ativado, ele deve funcionar sozinho e capturar os hashes de senha quando necessário.
Existe algum log que possamos verificar para entender por que o plugin não está fazendo o que deveria?
O plugin se encarrega de interpretar e utilizar os campos personalizados que foram definidos pelo importador. Se os campos personalizados estiverem vazios ou ausentes, então o problema não é do plugin, mas sim do importador.
Você deve instalar o plugin na instância que está realmente executando o fórum migrado.
Tivemos casos em que o plugin causou problemas quando instalado em uma instância que estava executando o script de migração, então recomendamos não instalá-lo lá.
Não consigo testar agora porque a exportação de hashes de senha deles é um serviço pago para clientes, mas só queria saber se alguém já tentou antes de eu seguir por esse caminho.
Parece que as senhas deles são hashificadas usando bcrypt com 10 rodadas de salt.
Migramos um fórum para o Discourse há vários anos usando o plugin migratepassword. Existe alguma maneira de verificar quantos dos nossos usuários ainda estão usando os hashes de senha legados do nosso antigo fórum?
Tecnicamente, um usuário não está “usando” o hash de senha legado.
Quando um usuário faz login pela primeira vez após uma migração e a senha não corresponde à senha do Discourse (que inicialmente será uma sequência aleatória de caracteres), o plugin executa sua função.
ele verifica se a senha inserida corresponde aos campos personalizados import_pass usando todos os métodos de hash que conhece;
se encontrar uma correspondência, ele salva a senha no usuário e, em seguida, remove o campo personalizado import_pass.
Portanto, após alguns anos, apenas os usuários que não “usaram” a senha migrada para fazer login ainda terão o campo personalizado import_pass.
a) eles nunca fizeram login (você pode verificar isso pela data da última visualização);
b) eles não usaram a senha migrada, mas fizeram login usando e-mail, um método de autenticação diferente ou redefiniram sua senha.
Acabei de perceber que a situação b pode introduzir um problema de segurança. Se um usuário não se lembrar de sua senha e a alterar ou se usar outro método de autenticação, o hash de senha migrado ainda estará lá e poderá ser usado junto com a nova senha. Acabei de enviar uma atualização para o plugin para que ele limpe o campo personalizado import_pass em todo login bem-sucedido.
Assim, daqui para frente, o campo personalizado import_pass estará presente apenas para usuários que nunca fizeram login.