Check BUILD permission in newBuild, not doAcceptBuildResult, so that SetExternalBuildResultCommand verifies it.
Also check it in doAcceptBuildResult so hudson.Main would fail early, before actually running the command.