%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/public/scripts/services/
Upload File :
Create Path :
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);
        }
    });

Zerion Mini Shell 1.0