Skip to:
Content

#1886 closed defect (fixed)

phpBB Imported User Passwords

Reported by: netweb Owned by:
Milestone: 2.2 Priority: normal
Severity: normal Version: 2.1
Component: Importers Keywords:
Cc: lmoffereins@…

Description

Users imported from phpBB are unable to login using the migrated password.

The behavior exists when trying to login via the bbPress login widget or directly via /wp-admin/

Attachments (3)

1886.patch (3.9 KB) - added by johnjamesjacoby 22 months ago.
1886-2.diff (957 bytes) - added by netweb 22 months ago.
CamelCase.diff (1.4 KB) - added by netweb 22 months ago.

Download all attachments as: .zip

Change History (30)

johnjamesjacoby22 months ago

comment:1 johnjamesjacoby22 months ago

  • Keywords reporter-feedback added

It'd be great if you could test the attached patch. It moves the conversion out of the converter class, and into the global scope.

comment:2 johnjamesjacoby22 months ago

  • Resolution set to fixed
  • Status changed from new to closed

(In [4072]) Converter:

  • Move convert_pass method into global scope, so passwords are converted anywhere.
  • Fixes #1886.

comment:3 netweb22 months ago

Thanks, I will in the morning ~12:00am here at the moment ;)

comment:4 netweb22 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

Nope, still not working for either the widget or /wp-admin areas to login with.

The password (both before and after this patch) is getting converted/stored into _usermeta._bbp_password and as per the import process the password in _users.user_pass is nulled.

comment:5 xiosen22 months ago

  • Keywords needs-patch added; reporter-feedback removed
  • Version changed from 2.0 to 2.1

The variable appears to have been renamed. To fix this change line 1458 in the bbp_user_maybe_convert_pass() function from:

	// Bail if no user password to convert
	$row = $wpdb->get_row( "SELECT * FROM {$wpdb->users} INNER JOIN {$wpdb->usermeta} ON user_id = ID WHERE meta_key = '_bbp_converter_class' AND user_login = '{$username}' LIMIT 1" );
	if ( empty( $row ) || is_wp_error( $row ) )
		return;

To:

	// Bail if no user password to convert
	$row = $wpdb->get_row( "SELECT * FROM {$wpdb->users} INNER JOIN {$wpdb->usermeta} ON user_id = ID WHERE meta_key = '_bbp_class' AND user_login = '{$username}' LIMIT 1" );
	if ( empty( $row ) || is_wp_error( $row ) )
		return;

comment:6 xiosen22 months ago

Found another issue. The next lines in the code (bbpress()->admin->admin_dir) return null because the admin has not been setup yet by the time this code runs. I changed:

	// Convert password
	require_once( bbpress()->admin->admin_dir . 'bbp-converter.php' );
	require_once( bbpress()->admin->admin_dir . 'converters/' . $row->meta_value . '.php' );

To:

	//Setup admin
	require_once( bbpress()->plugin_dir . 'bbp-admin/bbp-admin.php' );

	bbp_admin();

	// Convert password
	require_once( bbpress()->admin->admin_dir . 'bbp-converter.php' );
	require_once( bbpress()->admin->admin_dir . 'converters/' . $row->meta_value . '.php' );

I had the same issue you had but with Invision instead and these changes fixed it.

Last edited 22 months ago by xiosen (previous) (diff)

netweb22 months ago

netweb22 months ago

comment:7 netweb22 months ago

Correct phpBB.php & vBulletin.php class variable/file names CamelCase.diff

comment:8 netweb22 months ago

  • Milestone changed from 2.1 to 2.1.1

comment:9 johnjamesjacoby21 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

(In [4089]) Converter:

  • Tweak bbp_user_maybe_convert_password() with correct meta key.
  • Include missing BBP_Admin() class
  • Fixes #1886 (2.2 branch).
  • Props netweb, xiosen.

comment:10 johnjamesjacoby21 months ago

(In [4090]) Converter:

  • Tweak bbp_user_maybe_convert_pass() with correct meta key.
  • Include missing BBP_Admin() class
  • Fixes #1886 (2.1 branch).
  • Props netweb, xiosen.

comment:11 netweb21 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

http://bbpress.trac.wordpress.org/attachment/ticket/1886/CamelCase.diff Needs to also be committed for users logging in needing a password lookup.

comment:12 johnjamesjacoby21 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

(In [4101]) Converters:

  • Classes are case sensitive when being loaded by the main converter.
  • Fixes #1886.
  • Props netweb.

comment:13 johnjamesjacoby21 months ago

(In [4102]) Converters:

  • Revert whitespace changes in r4101.
  • See #1886.
  • Antiprops netweb.

comment:14 johnjamesjacoby21 months ago

  • Milestone changed from 2.1.1 to 2.1.2
  • Resolution fixed deleted
  • Status changed from closed to reopened

Missed the 2.1.1 release. Moving to 2.1.2.

comment:15 johnjamesjacoby21 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

(In [4119]) Converters:

  • Classes are case sensitive when being loaded by the main converter.
  • Fixes #1886.
  • For 2.1 branch.
  • Props netweb.

comment:16 netweb21 months ago

  • Keywords needs-patch removed
  • Milestone changed from 2.1.2 to 2.1.3

Tried & Tested, adding to 2.1.3

comment:17 Offereins19 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

Browsing Trunk I can't find how this/my problem is solved (using 2.1.2 on 3.4.2). After a succesfull conversion from phpBB, my users want to login. After entering their login en password, hitting submit leads them through the wp-login.php page where they get bumped with a number of Undefined index: var_name messages - concerning the first four lines of BBP_Converter_Base::setup_globals() - concluding with a notice that the database connection failed. That is about the $this->opdb = new wpdb([...]) line.

Hooking in the bbp_login_form_login action just before bbp_user_maybe_convert_pass does, gets rid of the problem, using the following code:

function workaround_bbp_login(){
	// Setup fields as {name} => {value}
	$fields = array( 
		'_bbp_converter_rows'      => 0,
		'_bbp_converter_db_user'   => 'xxxx',
		'_bbp_converter_db_pass'   => 'xxxx',
		'_bbp_converter_db_name'   => 'xxxx',
		'_bbp_converter_db_server' => 'xxxx',
		'_bbp_converter_db_prefix' => 'xxxx'
		);

	// Set $_POST fields
	foreach ( $fields as $name => $value )
		if ( !isset( $_POST[$name] ) )
			$_POST[$name] = $value;
}

Where 'xxxx' represents actual values so the DB connection doesn't fail.

A better solution could be found in the answer to this question: Do we really need an extra database connection with $this->opdb = new wpdb([...]), while we only create an instance of this class to use the callback_pass method for the password authentication? Me thinks not.

comment:18 johnjamesjacoby19 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

Try the 2.1 branch of code; it's not fixed in a public release yet. The code in /trunk and /branches/2.1/ is fixed.

Reopen if it's still not working after switching to either of those versions.

comment:19 Offereins19 months ago

  • Cc lmoffereins@… added
  • Resolution fixed deleted
  • Status changed from closed to reopened

I'm sorry, but no. Neither /trunk nor /branches/2.1/ has solved the problem. My issue may well be another problem than this tickets', though it concerns the same files.

The errors for two identical situations (user, roles, plugins etc.):

Branches 2.1 4163

Notice: Trying to get property of non-object in {domain}/wp-content/plugins/bbpress/bbp-includes/bbp-user-functions.php on line 1466

Warning: require_once(bbp-converter.php) [function.require-once]: failed to open stream: No such file or directory in {domain}/wp-content/plugins/bbpress/bbp-includes/bbp-user-functions.php on line 1466

Fatal error: require_once() [function.require]: Failed opening required 'bbp-converter.php' (include_path='.:/usr/share/pear') in {domain}/wp-content/plugins/bbpress/bbp-includes/bbp-user-functions.php on line 1466

Trunk 2.1 4241

Notice: Undefined index: _bbp_converter_rows in {domain}/wp-content/plugins/bbpress/bbp-admin/bbp-converter.php on line 592

Notice: Undefined index: _bbp_converter_db_user in {domain}/wp-content/plugins/bbpress/bbp-admin/bbp-converter.php on line 593

Notice: Undefined index: _bbp_converter_db_pass in {domain}/wp-content/plugins/bbpress/bbp-admin/bbp-converter.php on line 593

Notice: Undefined index: _bbp_converter_db_name in {domain}/wp-content/plugins/bbpress/bbp-admin/bbp-converter.php on line 593

Notice: Undefined index: _bbp_converter_db_server in {domain}/wp-content/plugins/bbpress/bbp-admin/bbp-converter.php on line 593

Warning: mysql_connect() [function.mysql-connect]: Access denied for user '{user}'@'localhost' (using password: NO) in {domain}/wp-includes/wp-db.php on line 1038

Who's out there for the rescue?

comment:20 follow-up: netweb19 months ago

You will need to run the import wizard again with the updated version of bbPress you are using.

comment:21 in reply to: ↑ 20 johnjamesjacoby18 months ago

  • Milestone changed from 2.1.3 to 2.2

Related: #1969.

comment:22 netweb18 months ago

  • Milestone changed from 2.3 to 2.2

Have tested this again just now and is working fine for phpBB imported users.

Pretty sure this ticket can now be closed, the issue with @Offereins above is that you need to do a clean import for this to work, you could not import with 2.1.2 and then patch with /trunk or 2.1x branch and have users successfully login.

comment:23 johnjamesjacoby18 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

Great. Closing as fixed.

comment:24 Ruuttu13 months ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

I'm sorry to say there are still problems.

I imported a bunch of users with bbPress 2.3-rc1 and confirmed that I was able to login to them. Then, when I deleted those users and imported some more, they wouldn't allow logging in anymore. Same error with "Undefined index: _bbp_converter_rows" and so on and database connection failed.

comment:25 netweb13 months ago

@Ruuttu

I am not sure what you are trying to achieve in the way you are going about importing the users, why not just import them in one single import?

The error "Undefined index: _bbp_converter_rows" you state 'same error', did you have this error previously?

comment:26 Ruuttu13 months ago

I meant the "same error" Offereins was describing before. I can imagine use cases where you'd need to import users several times. In my case I'm developing a custom importer and testing it is really frustrating as I'm forced to re-install the entire WordPress instance after each import.

comment:27 netweb13 months ago

  • Resolution set to fixed
  • Status changed from reopened to closed

I'm closing this ticket as writing a custom importer for bbPress has nothing to do with this phpBB ticket.

If you are having troubles writing a custom importer for bbPress please create a new ticket.

Note: See TracTickets for help on using tickets.