Leave a Reply

5 comments

  1. You can override the core wp_authenticate function.

    You would need to create a custom plugin and declare a new version of wp_authenticate. The function accepts a username and a password and returns a WP $user object.

    wp_authenticate is a ‘pluggable’ function and it is found in the wp-includes/pluggable.php file.

  2. I needed more features than I could find elsewhere so I wrote my own plugin – External Login.

    It has these main features:

    • Map a different DB table structure to be compatible with the WordPress fields
    • Handle different hashing methods from your external database (bcrypt, MD 2 4 and 5, SHA 256 384 and 512, and many many more)
    • Allow for different salting methods
    • Generate a copied version of the user in the database so that you can continue to use common WordPress features with users and roles
    • Map roles from your ‘external database’ to those found in WordPress e.g. a student in the ‘external database’ becomes an editor in the WordPress database.

    Let me know if you require another feature 🙂

    https://en-gb.wordpress.org/plugins/external-login/

  3. Yes, your plugin is awesome. Just what you need to improve and finalize your plugin is that in newer WordPress versions, there are two different tables that contain user data. They are wp_user and wp_usermeta. And in the plugin, it is provided only one table to authenticate. So if this feature goes right, definitely your plugin is 100% successful.

    What else, is that there is a bug. As there is only one table to authenticate, so I couldn’t authenticate user roles and sync them. This means when I enable external login, the time I logged out, and login the next time, I am of subscriber role, that I have specified if no roles matches. So i loosed my adminship too. Kindly help and understand.