%PDF- %PDF-
Direktori : /var/www/html/news/public/scripts/services/ |
Current File : /var/www/html/news/public/scripts/services/authService.js |
'use strict'; angular.module('services').service('auth', function ($http, constants, localStorageService, $state, $q) { function login(params) { return $http({ method: 'POST', url: constants.baseEndpoint + 'login', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, data: $.param(params) }); } function goToLogin() { localStorageService.remove('token'); localStorageService.remove('userInfo'); $state.go('login'); } function logout() { $http.post(constants.baseEndpoint + 'logout').then(function () { goToLogin(); }); } function setUserData(data) { localStorageService.set('userInfo', data); } function getToken() { return localStorageService.get('token'); } function setToken(token) { localStorageService.set('token', token); } function getUserInfo() { return localStorageService.get('userInfo'); } function isLoggedIn() { return !!(localStorageService.get('userInfo') && localStorageService.get('userInfo').id); } function getUserId () { return localStorageService.get('userInfo') && localStorageService.get('userInfo').id; } function updateUserData (force) { if (isLoggedIn() || force) { var d = $q.defer(); $http({ method: 'GET', url: constants.baseEndpoint + 'me?include=roles', headers: {'Content-Type': 'application/x-www-form-urlencoded'} }).then(function (res) { d.resolve(res); }, function (err) { d.reject(err); }); return d.promise; } } return { login: login, logout: logout, setUserData: setUserData, getToken: getToken, setToken: setToken, getUserInfo: getUserInfo, isLoggedIn: isLoggedIn, getUserId: getUserId, updateUserData: updateUserData }; }) .service('APIInterceptor', function (localStorageService, $injector, $q) { this.request = function (config) { var auth = $injector.get('auth'); config.headers.Authorization = 'Bearer ' + auth.getToken(); return config; }; this.responseError = function (response) { if (response.status === 401) { var auth = $injector.get('auth'); var notification = $injector.get('notification'); var state = $injector.get('$state'); var localStorageService = $injector.get('localStorageService'); localStorageService.remove('token'); localStorageService.remove('userInfo'); state.go('login'); } return $q.reject(response); } });