Flesh out protected_endpoint decorator

I'll continue to add to this pull-request.