Boris Johnson criticised from both sides of political divide over Afghanistan