Split out userProvider in preparation for userapp.io integration