With MySQL views of course!
A view is a table created on the fly from a sql statement.
The idea is to replace our target application users table by a view, mirroring your users table with this app attended fields.
Here the Bugzilla 3.0 profiles table schema:

Oh and let’s remember than login is e-mail address!
Now, we have 2 type of fields:
- those already in our own users table, like the login (the e-mail actually for Bugzilla), the realname or the password
- the new fields
First, we add these news fields in our own users table:
ALTER TABLE utilisateurs ADD `bugzilla_disabledtext` mediumtext; ... ALTER TABLE utilisateurs ADD `bugzilla_disable_mail` tinyint(4) NOT NULL DEFAULT '0',
Note than we prepend the fields to avoid future conflicts with other apps.
Then, rename (delete isn’t a good idea if you’ve to rebuild your view) the target app users table:
ALTER TABLE profiles RENAME profiles_dist
Now, we can create the view:
CREATE ALGORITHM=UNDEFINED VIEW profiles AS select `espacewin`.`utilisateurs`.`user_id` AS `userid`,`espacewin`.`utilisateurs`.`email` AS `login_name`,`espacewin`.`utilisateurs`.`user_password` AS `cryptpassword`,`espacewin`.`utilisateurs`.`bugzilla_disabledtext` AS `disabledtext`,`espacewin`.`utilisateurs`.`bugzilla_mybugslink` AS `mybugslink`,`espacewin`.`utilisateurs`.`bugzilla_extern_id` AS `extern_id`,`espacewin`.`utilisateurs`.`bugzilla_disable_mail` AS `disable_mail`,`espacewin`.`utilisateurs`.`username` AS `realname` from `espacewin`.`utilisateurs`
As you can see, it’s mainly a SQL query.
If you use another db, with another login/pass, specify the user authorized to access the db where your users table is:
CREATE ALGORITHM=UNDEFINED DEFINER='Zebra'@'localhost' VIEW profiles AS select `espacewin`.`utilisateurs`.`user_id` AS `userid`, ...
Congratulations, you’ve finished.
Quick question: why add fields to our users table instead keep app one to this use?
Well … your app has to perform some INSERT or UPDATE query and this is only possible on views created with a simple one table query.
Oh, and I’ve said “no code”.
You can use Navicat to design the view instead handwriting it:

I use this method on Espace Win to integrate Pluton with Bugzilla, phpBB and flyspray.