Creating custom sign in handlers for each provider, all following the observer pattern