Her istekte bulunan bir kullanıcıyı tanımlamaya çalışıyorum.AngularJs, her istekte bulunan kullanıcıyı kontrol et
(function()
{
angular.module('employeeApp').factory('authenticationFactory', authenticationFactory);
function authenticationFactory($cookieStore,$cookies,requestFactory,$location,GLOBALS,constants)
{
var factory = {};
factory.validateUser = function()
{
var vm = this;
if($location.path() != '/')
{
var api_token = factory.getToken();
factory.isValidToken(api_token).then(function(response) {
if (response.status != 200) {
$location.path('/');
}
data = {"api_token": api_token};
requestFactory.post(GLOBALS.url + 'show/employee/' + $cookies.get('employeeid'), data)
});
}
}
return factory;
}
})()
Ama şu anda benim konsolda hata alırsınız:
routes.js:38 Uncaught TypeError: Cannot read property 'then' of undefined
(function() {
angular.module('employeeApp').config(routeModule).run(run);
routeModule.$inject = ['$routeProvider'];
function routeModule($routeProvider)
{
$routeProvider.when('/', {
templateUrl: '../views/login.html',
controller: 'authenticationController',
controllerAs: 'authenticationCtrl'
})
.when('/home', {
templateUrl: '../views/index.html',
controller: 'homeController',
controllerAs: 'homeCtrl',
resolve: {
message: function(authenticationFactory){
return authenticationFactory.validateUser();
}
}
})
.when('/werknemer/:id', {
templateUrl: '../views/employee/employee.html',
controller: 'employeeController',
controllerAs: 'employeeCtrl'
})
.otherwise({
redirectTo: '/'
});
}
function run(authenticationFactory)
{
authenticationFactory.validateUser()
.then(function (response) {
console.log('validateuser');
constants.firstname = response.data.result.Employee.FirstName;
constants.companyid = response.data.result.Employee.CompanyId;
constants.employeeid = response.data.result.Employee.EmployeeId;
}, function() {
$location.path('/');
});
}
})();
function run
şöyle authenticationFactory
kullanır: Şu anda bu benim routes
dosyasıdır
Neyi yanlış yapıyorum? fıkra başarısız olursa çözülmesine mekanizması her zaman bir söz iade edilmesini beklediği takdirde
--EDIT--
factory.validateUser = function()
{
var vm = this;
if($location.path() != '/')
{
var api_token = factory.getToken();
factory.isValidToken(api_token).then(function(response) {
if (response.status != 200) {
$location.path('/');
}
data = {"api_token": api_token};
return requestFactory.post(GLOBALS.url + 'show/employee/' + $cookies.get('employeeid'), data)
});
}
}
'factory.validateUser' istek isteğini döndürmez –
Bunu yapsam bile aynı hatayı alıyorum! Düzenlememe bak. – Jamie
Lütfen [$ q] (https://docs.angularjs.org/api/ng/service/$q) ile ilgili belgelere bakın. Sorunu çözdüğünüz bir probise ('factory.validateUser') döndürmek için buna ihtiyacınız var. doğrulama işleminden sonra el ile reddet –