Implement the full user factory with sessions