$http
вызов асинхронный, поэтому функция достигает этой строки, прежде чем вы получите результат http get:
return true;
Вам нужно изменить validateUser
, чтобы вернуть обещание:
function validateUser() {
return $http({
....
....
}).then(function success(response){
if(response.data) {
return false;
}
},function error(response) {
return false;
});
}
и используйте его так:
validateUser().then((result)=> {
if (result) doSomething();
})