| /* |
| * Copyright 2015 Open Networking Laboratory |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| (function () { |
| "use strict"; |
| |
| angular.module('cordRest', []) |
| .factory('SetCSRFToken', function setCSRFToken($cookies) { |
| return { |
| request: function(request){ |
| request.headers['X-CSRFToken'] = $cookies.get('xoscsrftoken'); |
| request.headers['sessionId'] = $cookies.get('sessionid'); |
| return request; |
| } |
| }; |
| }) |
| .service('User', function($http, $q, $cookies, cordConfig){ |
| this.login = function(username, password){ |
| var deferred = $q.defer(); |
| var user; |
| |
| // logging in the user |
| $http.post(cordConfig.url + '/xoslib/login/', {username: username, password: password}) |
| .then(function(res){ |
| $cookies.put('user', res.data.user); |
| $cookies.put('sessionid', res.data.xossessionid); |
| user = JSON.parse(res.data.user); |
| return $http.get(cordConfig.url + '/xos/tenantrootprivileges?user=' + user.id); |
| }) |
| .then(function(subscribers){ |
| // subscribers are an array because the way Django perform query |
| // but one user is related to only one subscriber |
| |
| $cookies.put('subscriberId', subscribers.data[0].id); |
| deferred.resolve(user); |
| }) |
| .catch(function(e){ |
| deferred.reject(e); |
| throw new Error(e); |
| }); |
| |
| return deferred.promise; |
| }; |
| |
| this.isLoggedIn = function(){ |
| var user = $cookies.get('user'); |
| if( angular.isDefined(user)){ |
| return true; |
| } |
| return false; |
| }; |
| |
| this.logout = function(){ |
| var deferred = $q.defer(); |
| var sessionId = $cookies.get('sessionid'); |
| $http.post(cordConfig.url + '/xoslib/logout/', {xossessionid: sessionId}) |
| .then(function(res){ |
| $cookies.remove('user'); |
| deferred.resolve(); |
| }) |
| .catch(function(e){ |
| throw new Error(e); |
| }); |
| |
| return deferred.promise; |
| }; |
| }) |
| .service('Subscribers', function($resource, cordConfig){ |
| return $resource(cordConfig.url + '/xoslib/rs/subscriber'); |
| }) |
| .service('SubscriberUsers', function($resource, $filter, cordConfig, Helpers){ |
| return $resource(cordConfig.url + '/xoslib/rs/subscriber/:subscriberId/users/:id', {}, { |
| query: { |
| method: 'GET', |
| isArray: true, |
| interceptor: { |
| response: function(res){ |
| // this is used to fake some data that are not XOS related, |
| // but can be provided by any external services |
| |
| // add an icon to the user |
| res.data.map(function(user){ |
| switch (user.name){ |
| case 'Mom\'s PC': |
| user['icon_id'] = 'mom'; |
| break |
| case 'Jack\'s Laptop': |
| user['icon_id'] = 'boy2'; |
| break |
| case 'Jill\'s Laptop': |
| user['icon_id'] = 'girl1'; |
| break |
| case 'Dad\'s PC': |
| user['icon_id'] = 'dad'; |
| break |
| } |
| |
| return user; |
| }); |
| |
| // add a random login date to the user |
| res.data.forEach(function(user){ |
| if(!angular.isDefined(cordConfig.userActivity[user.id])){ |
| var date = Helpers.randomDate(new Date(2015, 0, 1), new Date()); |
| cordConfig.userActivity[user.id] = $filter('date')(date, 'mediumTime'); |
| } |
| }); |
| return res.data; |
| } |
| } |
| } |
| }); |
| }) |
| .service('SubscriberUsersUrlFilterLevel', function($q, $http, cordConfig){ |
| this.updateUrlFilterLevel = function(subscriberId, userId, level){ |
| var deferred = $q.defer(); |
| |
| $http.put(cordConfig.url + '/xoslib/rs/subscriber/' + subscriberId + '/users/' + userId + '/url_filter/' + level) |
| .then(function(res){ |
| deferred.resolve(res); |
| }) |
| .catch(function(e){ |
| throw new Error(e); |
| }); |
| |
| return deferred.promise; |
| }; |
| }); |
| }()); |