I have 1 variable to save data user when they logged in.
Var : isLoginned
When user logged in, i set isLoginned = '1' and save to LocalStorage.
I want to use isLoginned to check when router changes.
Check access to this router when user logged in Only. If not logged in, redirect to page sign in.
This is example code in Ui router
.state('access.page', {
url: '/page',
templateUrl: 'app/Components/Page/Page.html',
onEnter: function ($storage.isLoginned) {
if ($storage.isLoginned != '1') {
$location.path('/access/signin');
}
},
controller: function ($scope) {
$scope.page.setTitle('Page title');
}
})
User Service
/**
* Created by tatda_000 on 11/26/2014.
*/
'use strict';
app.factory('signinService', function ($http) {
return {
signin: function (user, scope) {
//console.log('Test function');
var $promise = $http.post('api/AccountController/Login', user); //post data to server
$promise.then(function (msg) {
//scope.msgtxt = msg.data;
if (msg.data.Message != 'Success') scope.msgtxt = 'Tên tài khoản hoặc mật khẩu không đúng!';
else scope.msgtxt = 'Success';
//save user infomation to Local Storage
scope.$storage.username = msg.data.Data.Username;
scope.$storage.password = msg.data.Data.Password;
scope.$storage.userToken = msg.data.Data.UserToken;
scope.$storage.isLoginned = '1';
});
}
}
});
User controller
'use strict';
/* Controllers */
// signin controller
app.controller('SigninController', ['$scope', '$localStorage', 'signinService', function ($scope, $localStorage, signinService) {
//set page title
$scope.page.setTitle('Đăng nhập');
$scope.login = function (user) {
signinService.signin(user, $scope); //call function login service
};
//create first value storage
$scope.$storage = $localStorage.$default({
username: "",
userToken: ''
});
$scope.logout = function () {
delete $scope.$storage.username;
delete $scope.$storage.userToken;
};
}]);