user_login differs in WPMU and BBPress
I don’t know if this is a bug or if it is working as intended, but I figured I’d document it.
Explanation of bbpress registration/login
When a user registers in bbpress the user_login field in the database is case sensitive. If you register with the name Tom, Tom is put in the database. When a user logs in however, it is not case sensitive. So Tom can log in as tom, TOM, tOM, ToM… you get the point. Now this doesn’t seem like it would pose any problems. But…
Explanation of WPMU registration/login
WordPress MU and I’d guess WordPress do things differently. You may run into problems with an integrated site because of this ‘bug’. When a user registers through WPMU the user_login field in the database is converted to all lowercase. If you register with the name Joe, joe is put in the database. This is different from how bbpress does things. So if Bob registers through bbpress with a capital in his login the user_login is set to Bob, but in WPMU if Bob registers with a capital in his login the user_login is set to bob. Just like bbpress, WPMU’s login is not case sensitive. So Joe can login as joe, JOE, jOE, JoE.
The problem occurs if a user registers with a capital letter in bbpress and then tries to login through WPMU. WPMU converts the input in the login field to lower case BEFORE it queries the database. So WPMU checks for user_login with all lowercase letters, but there may be capitals, so the login can fail.
Here’s a step by step explanation
1) Fred registers in bbpress with the name Fred
2) user_login is set as Fred
3) Fred attempts to login to through WPMU using Fred (capitals)
4) WPMU converts Fred to fred BEFORE the database is queried.
5) According to WPMU fred (lowercase) does not exist.
6) Login fails
To fix this I set bbpress to match WPMU’s functionality. To do so I edited the bb_new_user function in the pluggable.php file. I simply added the following line before the database query.
$user_login = strtolower($user_login);
Now when a user registers through bbpress his user_login is set to all lowercase letters.
What I’d like to do is make a plugin that replaces the bb_new_user function with a new one that makes this change so I don’t have to edit a core file, but I’m not that savvy yet.
While this really isn’t a bbpress bug it would be nice if bbpress and WPMU did things the the same so that integration was easier.
- You must be logged in to reply to this topic.