Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jshint sub:true*/
- (function (angular) {
- 'use strict';
- angular.module('dome.core')
- .service('wsInterceptor', function($q, $rootScope, $injector, WSConstant) {
- return {
- request: function(config) {
- var User = $injector.get('User');
- if (User.isConnected()) {
- config.headers['Authorization'] = 'Bearer ' + User.getToken();
- if (!$rootScope.needToRefresh)
- User.isAlmostExpired();
- }else {
- // expired
- localStorage.removeItem('token');
- // localStorage.removeItem('userSelected');
- }
- return config;
- },
- responseError: function(rejection) {
- if (
- (rejection.status === 401 || rejection.status === 401) &&
- rejection.config.url.indexOf(WSConstant.webViewAuthentication) === -1
- ) {
- var User = $injector.get('User');
- User.removeUser();
- User.logout();
- }
- return $q.reject(rejection);
- }
- };
- })
- .config(function ($httpProvider) {
- $httpProvider.interceptors.push('wsInterceptor');
- $httpProvider.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8';
- })
- .factory('User',function ($interval, $http, md5, $q, WSConstant, appSettings, $state, $window, $rootScope, requestWS, RightsService) {
- function checkConnection() {
- var networkState = navigator.connection.type;
- if(networkState=="none"){
- window.plugins.toast.showWithOptions(
- {
- message: "Aucune connexion internet disponible !",
- duration: "long",
- position: "center",
- }
- );
- }
- }
- var userData, token, sessionRefresh;
- var userFactory = {
- getExpirationDate: function () {
- if (userFactory.getToken() && typeof userFactory.getToken() === 'string') {
- token = userFactory.getToken();
- if (token.split('.').length === 3) {
- try {
- var base64Url = token.split('.')[1];
- var base64 = base64Url.replace('-', '+').replace('_', '/');
- var exp = JSON.parse($window.atob(base64)).exp;
- if (typeof exp === 'number') {
- return exp;
- }
- }
- catch (e) {
- return true; // Pass: Non-JWT token that looks like JWT
- }
- }
- return false; // Pass: All other token
- }
- return false;
- },
- refreshToken: function () {
- var refreshToken = userFactory.getUserToken().refresh_token;
- var url = appSettings.baseUrl + '/oauth/token';
- var string = JSON.stringify({refreshToken: refreshToken});
- var xhr = new XMLHttpRequest();
- xhr.open('POST',url,true);
- xhr.setRequestHeader('Content-type','application/json; charset=utf-8');
- xhr.onreadystatechange = function () {
- if (xhr.readyState === 4 && xhr.status === 200) {
- localStorage.setItem('token', xhr.responseText);
- }
- };
- xhr.send(string);
- },
- isConnected: function () {
- if (typeof userFactory.getExpirationDate() === 'number')
- return moment().unix() < userFactory.getExpirationDate();
- return false;
- },
- isAlmostExpired: function () {
- var date = userFactory.getExpirationDate();
- // check if it's a date then check if session is under 30 minutes => refresh token
- if (typeof date === 'number' && moment().add('30', 'minutes').unix().valueOf() > date ) {
- $rootScope.needToRefresh = true;
- userFactory.refreshToken();
- }
- },
- getToken: function () {
- return (userFactory.getUserToken()) ? userFactory.getUserToken().token : false;
- },
- getUserToken: function () {
- if (typeof localStorage.getItem('token') === 'string') {
- userData = JSON.parse(localStorage.getItem('token'));
- return userData;
- }
- return false;
- },
- /**
- *
- * @param {object} user
- * @param {object} user.username
- * @param {object} user.password
- */
- login: function (user) {
- // checkConnection();
- var data = angular.copy(user);
- var url = appSettings.baseUrl + '/oauth/token';
- data.password = md5.createHash(data.password || '');
- data.rememberMe = true;
- var defer = $q.defer();
- $http({
- url: url,
- method: 'POST',
- headers: [{'Content-Type': 'application/json'}],
- data: data
- }).then(function (data) {
- if (data.data.statusId === 0) {
- $http.defaults.headers.common['Authorization'] = 'Bearer ' + data.data.token;
- localStorage.setItem('token', JSON.stringify(data.data));
- var email= null
- if(!angular.isUndefined(data.data.email))
- {email = data.data.email;}
- localStorage.setItem('email', email) ;
- angular.element('#error_pop_up').closeModalCustom();
- $rootScope.errorText = '';
- if (angular.isDefined(sessionRefresh)) {
- $interval.cancel(sessionRefresh);
- sessionRefresh = undefined;
- }
- userFactory.beginRefreshToken();
- defer.resolve(data.data);
- }else {
- defer.reject(data.data);
- }
- console.log('user.session .login .then: ',data);
- }).catch(function (data) {
- console.log('user.session .login .fail: ',data);
- defer.reject(data.data);
- setTimeout(function(){
- function onConfirm(buttonIndex) {
- (buttonIndex==1) ? location.reload() :navigator.app.exitApp();
- console.log(buttonIndex);
- }
- var networkState = navigator.connection.type;
- if(networkState=="none") {
- console.log($state);
- navigator.notification.confirm(
- 'Le chargement a échoué. Veuillez vérifier votre connexion.', // message
- onConfirm, // callback to invoke with index of button pressed
- 'Erreur', // title
- ['Réessayer','Fermer'] // buttonLabels
- );
- }
- }, 3000);
- });
- return defer.promise;
- },
- loginWebView: function (token, benefId) {
- var defer = $q.defer();
- $http({
- url: appSettings.serviceUrl + WSConstant.webViewAuthentication,
- method: 'POST',
- data: {
- // Token: token,
- benefProfileId: benefId
- },
- headers: {
- 'Authorization': 'Bearer ' + token
- }
- })
- .then(function (data) {
- if (data.data.statusId === 0) {
- $http.defaults.headers.common['Authorization'] = 'Bearer ' + data.data.token;
- localStorage.setItem('token', JSON.stringify(data.data));
- defer.resolve(data.data);
- }else {
- defer.reject(data.data);
- }
- }, defer.reject)
- .catch(function (data) {
- defer.reject(data.data);
- });
- return defer.promise;
- },
- getAccountId: function () {
- return (userFactory.getUserToken() && userFactory.getUserToken().accountId) ? userFactory.getUserToken().accountId : '';
- },
- setBenefCount: function (users) {
- return localStorage.setItem('userCount', (angular.isArray(users)) ? users.length : 0);
- },
- getBenefCount: function () {
- return parseInt(localStorage.getItem('userCount'));
- },
- getUserList: function (accountId) {
- var defer = $q.defer();
- $http({
- url: appSettings.serviceUrl + WSConstant.getProfileList,
- method: 'POST',
- data: {accountId: accountId}
- }).then(function (data) {
- if (data.data.firstConnexion)
- $window.localStorage.setItem('firstConnexion', true);
- // $rootScope.$broadcast('User:FirstConnexion');
- defer.resolve(data.data);
- }).catch(function (data) {
- switch (data.status) {
- case 403: defer.reject(data.data);
- }
- });
- return defer.promise;
- },
- logout: function () {
- localStorage.removeItem('listProcheToPremuim');
- localStorage.removeItem('credentials');
- localStorage.removeItem('token');
- localStorage.removeItem('viewCalender');
- localStorage.removeItem('userSelected');
- $http.defaults.headers.common['Authorization'] = null;
- localStorage.clear();
- $state.go('home', {}, {reload: true});
- },
- selectUser: function (user, isPartner) {
- var defer = $q.defer();
- localStorage.setItem('userSelected', JSON.stringify(user));
- var profile = {profileId: user.profileId};
- var urls = [
- $http({
- url: appSettings.serviceUrl + WSConstant.getProfileDetail,
- method: 'POST',
- data: profile
- })
- ];
- if ( !isPartner) {
- urls.push($http({
- url: (isPartner ? appSettings.partnerUrl :appSettings.serviceUrl) + WSConstant.selectProfileWS,
- method: 'POST',
- data: profile
- }))
- }
- $q.all( urls ).then(function (response) {
- var authenticatedProfileRoleId = response[1].data.authenticatedProfileRoleId
- //On set les droits de l'utilisateur
- RightsService.initRights(authenticatedProfileRoleId);
- localStorage.setItem('userDetails', JSON.stringify(response[0]));
- defer.resolve(response);
- }, defer.reject);
- return defer.promise;
- },
- getProfileDetails: function () {
- return requestWS.callWS( WSConstant.getProfileDetail, {profileId: userFactory.getUserId() });
- },
- getAvatar: function () {
- return (userFactory.getuserDetails() && userFactory.getuserDetails().DOME_profileDetail && userFactory.getuserDetails().DOME_profileDetail.avatarFileId) ? userFactory.getuserDetails().DOME_profileDetail.avatarFileId : false;
- },
- getuserDetails: function () {
- return (typeof localStorage.getItem('userDetails') === 'string') ? JSON.parse(localStorage.getItem('userDetails')): false;
- },
- getUserInfo: function () {
- return (typeof localStorage.getItem('userSelected') === 'string') ? JSON.parse(localStorage.getItem('userSelected')): false;
- },
- getUserId: function () {
- return userFactory.getUserInfo() ? userFactory.getUserInfo().profileId : false;
- },
- removeUser: function () {
- localStorage.removeItem('userSelected');
- },
- changePassword: function (oldPassword, newPassword) {
- var service = WSConstant.modifyPassword,
- data = {
- accountId: userFactory.getAccountId(),
- passwordOLD: md5.createHash(oldPassword),
- passwordNEW: md5.createHash(newPassword)
- };
- return requestWS.callWS(service, data);
- },
- newPassword: function (email) {
- var service = WSConstant.forgetPassword;
- var data = {
- login: email
- // email: email
- }
- return requestWS.callWS(service, data);
- },
- beginRefreshToken: function () {
- // refresh every 15min (900000)
- sessionRefresh = $interval(userFactory.refreshToken, 900000);
- }
- };
- return userFactory;
- });
- })(angular);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement