Cannot login to dev instance with imported user

I’ve just imported my first user from IPB to my local Discourse 2.0.0.beta2 and also went on to import the previous passwords using @michaeld’s discourse-migratepassword.

Everything seems to be working fine, the user is in the database and I’ve verified, that the password check in discourse-migratepassword succeeds.

What’s not working is saving the user after setting the raw password. User.save returns false, makes confirm_password? to fail and produces this output on the log.

I, [2018-02-01T14:31:42.198999 #58525]  INFO -- : Started POST "/session" for ::1 at 2018-02-01 14:31:42 +0100
I, [2018-02-01T14:31:42.303772 #58525]  INFO -- : Processing by SessionController#create as */*
I, [2018-02-01T14:31:42.305979 #58525]  INFO -- :   Parameters: {"login"=>"Florian", "password"=>"[FILTERED]"}
D, [2018-02-01T14:31:42.314922 #58525] DEBUG -- :   User Load (2.3ms)  SELECT  "users".* FROM "users" WHERE "users"."username_lower" = 'florian' LIMIT 1
D, [2018-02-01T14:31:42.379916 #58525] DEBUG -- :    (1.0ms)  SELECT "user_custom_fields"."name", "user_custom_fields"."value" FROM "user_custom_fields" WHERE "user_custom_fields"."user_id" = 1 ORDER BY id asc
D, [2018-02-01T14:31:42.383404 #58525] DEBUG -- :    (0.6ms)  BEGIN
D, [2018-02-01T14:31:42.400523 #58525] DEBUG -- :   UserEmail Load (2.0ms)  SELECT  "user_emails".* FROM "user_emails" WHERE "user_emails"."user_id" = 1 AND "user_emails"."primary" = 't' LIMIT 1
D, [2018-02-01T14:31:42.427949 #58525] DEBUG -- :   UserEmail Exists (2.8ms)  SELECT  1 AS one FROM "user_emails" WHERE "user_emails"."email" = 'address@domain.invalid' AND ("user_emails"."id" != 1) LIMIT 1
D, [2018-02-01T14:31:42.433311 #58525] DEBUG -- :   UserEmail Exists (1.5ms)  SELECT  1 AS one FROM "user_emails" WHERE "user_emails"."primary" = 't' AND ("user_emails"."id" != 1) AND "user_emails"."user_id" = 1 LIMIT 1
D, [2018-02-01T14:31:42.437460 #58525] DEBUG -- :    (1.1ms)  ROLLBACK
I, [2018-02-01T14:31:42.442319 #58525]  INFO -- : Completed 200 OK in 134ms (Views: 0.2ms | ActiveRecord: 25.3ms)

It’s my first encounter with Ruby and Rails/ActiveRecord. It would be great if someone could make sense out of my description :slight_smile:

Thanks!
—Florian

The plugin works great, so the number one reason for login issues is usually password related:

6 Likes

Thanks a lot — exactly the reason why it wasn’t working!

2 Likes

The plugin now features the setting migratepassword_allow_insecure_passwords which enables you to work around this issue.

4 Likes

Thanks for adding that setting.

Ideally the plugin would prompt the user to change the password when an insecure password is detected.

5 Likes

Yeah, allowing the login but setting the login redirect to /my/preferences/account?needs_password_reset would probably solve the problem.

1 Like