I would recommend to not modify/extend the core portal database schema.
Because this can lead to messy data migration issues when upgrading to newer versions of portal.
I would recommend creating new tables for your requirements and linking the data with the core portal schema.
And yes, User is an interface so you can hook in your own implementation, or even extend our out-of-the-box implementation
Thank you so much Sohil.
Do you have any examples of code where someone has rolled out their own implementation of the User class. I agree, adding columns to the jbp_users table could be messy.