Advertisement
Guest User

Untitled

a guest
Feb 1st, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. angular.module('starter')
  2.  
  3. .service('AuthService', function($q, $http, USER_ROLES) {
  4.   var LOCAL_TOKEN_KEY = 'siCakep2016';
  5.   var username = '';
  6.   var isAuthenticated = false;
  7.   var role = '';
  8.   var authToken;
  9.   //var API_URL = 'http://sicakep.kemenag.go.id/api/';
  10.   var API_URL = 'http://127.0.0.1/project/sicakep-new/api/';
  11.   function loadUserCredentials() {
  12.     var token = window.localStorage.getItem(LOCAL_TOKEN_KEY);
  13.     if (token) {
  14.       useCredentials(token);
  15.     }
  16.   }
  17.  
  18.   function storeUserCredentials(token) {
  19.     window.localStorage.setItem(LOCAL_TOKEN_KEY, token);
  20.     useCredentials(token);
  21.   }
  22.  
  23.   function useCredentials(token) {
  24.     username = token.split('.')[0];
  25.     isAuthenticated = true;
  26.     authToken = token;
  27.  
  28.     /*if (username == 'admin') {
  29.       role = USER_ROLES.admin
  30.     }
  31.     if (username == 'user') {
  32.       role = USER_ROLES.public
  33.     }*/
  34.     role = USER_ROLES.admin;
  35.     // Set the token as header for your requests!
  36.     $http.defaults.headers.common['X-Auth-Token'] = token;
  37.   }
  38.  
  39.   function destroyUserCredentials() {
  40.     authToken = undefined;
  41.     username = '';
  42.     isAuthenticated = false;
  43.     $http.defaults.headers.common['X-Auth-Token'] = undefined;
  44.     window.localStorage.removeItem(LOCAL_TOKEN_KEY);
  45.   }
  46.  
  47.   var login = function(name, pw) {
  48.     return $q(function(resolve, reject) {
  49.  
  50.       $http.post(API_URL+'auth', { user: name,pass:pw }).then(function (res){
  51.             obj = res.data;
  52.             console.log(obj);
  53.             if( obj.status == 1){
  54.                 storeUserCredentials(name + '.' + obj.data.token);
  55.                 resolve('Login success.');
  56.             }else{
  57.                 reject('Login Failed.');
  58.             }
  59.            
  60.       });
  61.  
  62.     });
  63.   };
  64.  
  65.   var logout = function() {
  66.     destroyUserCredentials();
  67.   };
  68.  
  69.   var isAuthorized = function(authorizedRoles) {
  70.     if (!angular.isArray(authorizedRoles)) {
  71.       authorizedRoles = [authorizedRoles];
  72.     }
  73.     return (isAuthenticated && authorizedRoles.indexOf(role) !== -1);
  74.   };
  75.  
  76.   loadUserCredentials();
  77.  
  78.   return {
  79.     login: login,
  80.     logout: logout,
  81.     isAuthorized: isAuthorized,
  82.     isAuthenticated: function() {return isAuthenticated;},
  83.     username: function() {return username;},
  84.     role: function() {return role;},
  85.     token:authToken,
  86.     api_url:API_URL
  87.   };
  88. })
  89.  
  90. .factory('AuthInterceptor', function($rootScope, $q, AUTH_EVENTS){
  91.     return {
  92.         responseError: function(response){
  93.             $rootScope.$broadcast({
  94.                 401:AUTH_EVENTS.notAuthenticated,
  95.                 403:AUTH_EVENTS.notAuthorized
  96.             }[response.status], response);
  97.             console.log(AUTH_EVENTS);
  98.             return $q.reject(response);
  99.         }
  100.     };
  101. })
  102.  
  103. .config(function($httpProvider){
  104.     $httpProvider.interceptors.push('AuthInterceptor');
  105. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement