Есть сервис, который отвечает за авторизацию:
function AuthService($http, ipCookie, $location){
return {
auth: auth,
isAuth: isAuth,
logout: logout
}
function auth(credentials, callback){
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8";
$http({
method: 'post',
url: '/rest/?route=user/login',
data: {'name': credentials.login, 'password': credentials.password}
}).success(Success);
function Success(data){
if(angular.isObject(data)){
ipCookie('login',data);
}
callback(ipCookie('login'));
}
}
function isAuth(){
var trigg = (ipCookie('login') === undefined) ? false : ipCookie('login');
return trigg;
}
function logout(){
$http({
method: "post",
url: '/rest/?route=user/logout'
}).success(Success);
function Success(data){
if(data == 0){
ipCookie.remove('login');
$location.path('login');
}
}
}
}
и есть директива для меню:
function navbarDirective(auth){
var elements = '<div class="navbar navbar-default" role="navigation" ng-show="menuShow">'+
'</div>';
return {
restrict: 'EA',
template: elements,
link: function(scope, element, attrs){
scope.$watch(function(scope){
if(auth.isAuth()) {
scope.menuShow = true;
scope.credentials = auth.isAuth();
}else{
scope.menuShow = false;
}
});
scope.logout = function(){
auth.logout();
}
}
}
}
Как мне скрывать меню или показывать, когда я залогинился или же разлогинился? Буду рад любой критике данного кода.