From 2350b4e034ec045f78d02260d2e41f013fc28fcc Mon Sep 17 00:00:00 2001
From: Armand Bahi <armand.bahi@veremes.com>
Date: Wed, 30 Jan 2019 10:16:45 +0100
Subject: [PATCH] =?UTF-8?q?s=C3=A9curisation?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../component/file_picker/file_picker.js      | 114 ++++++++++--------
 1 file changed, 63 insertions(+), 51 deletions(-)

diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
index 2e18e93c..82d2aae6 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
@@ -215,66 +215,78 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                     'thumbnail' : bThumbnail === true ? true : false
                 };
 
-                ajaxRequest({
-                    'method': 'GET',
-                    'url': sFileUrl,
-                    'headers': {
-                        'Accept': 'application/x-vm-json'
-                    },
-                    'params': oParams,
-                    'ajaxLoader': true,
-                    'responseType': 'blob',
-                    'success': function(response) {
-                        if (goog.isDefAndNotNull(response['data'])) {
-
-                            var oBlob = response['data'];
-
-                            // Trouve le nom du fichier
-                            var sFileName = scope['findFileNameInHeaders'](response['headers']);
-
-                            if (scope['field']['type'] === 'image_wsdata') {
-                                // Vérification du type
-                                if(response['headers']['content-type'] === 'application/x-vm-json; charset=UTF-8'){
-                                    if (bThumbnail === true) {
-                                        bThumbnail = false;
-                                        sFileName = null;
+                if (goog.isString(sFileUrl)) {
+                    ajaxRequest({
+                        'method': 'GET',
+                        'url': sFileUrl,
+                        'headers': {
+                            'Accept': 'application/x-vm-json'
+                        },
+                        'params': oParams,
+                        'ajaxLoader': true,
+                        'responseType': 'blob',
+                        'success': function(response) {
+                            if (goog.isDefAndNotNull(response['data'])) {
+
+                                var oBlob = response['data'];
+
+                                // Trouve le nom du fichier
+                                var sFileName = scope['findFileNameInHeaders'](response['headers']);
+
+                                if (scope['field']['type'] === 'image_wsdata') {
+                                    // Vérification du type
+                                    if(response['headers']['content-type'] === 'application/x-vm-json; charset=UTF-8'){
+                                        if (bThumbnail === true) {
+                                            bThumbnail = false;
+                                            sFileName = null;
+                                        }
                                     }
                                 }
-                            }
 
-                            if (goog.isDefAndNotNull(sFileName)) {
-                                oBlob['name'] = sFileName;
-                                oBlob._url = sFileUrl;
-                                oBlob._modified = false;
-                                oBlob._thumbnail = bThumbnail;
-                                deferred.resolve(oBlob);
-                            } else {
-                                console.error('cannot get name from headers : ', response['headers']);
-
-                                // Retry
-                                if (goog.isDefAndNotNull(iRetry)) {
-                                    if (iRetry > 0) {
-                                        iRetry--;
-                                        scope['downloadFileBlob'](sFileUrl, bThumbnail, iRetry).then(
-                                            function success(oBlob){
-                                                deferred.resolve(oBlob);
-                                            },
-                                            function error(){
-                                                deferred.reject();
-                                            }
-                                        );
+                                if (goog.isDefAndNotNull(sFileName)) {
+                                    oBlob['name'] = sFileName;
+                                    oBlob._url = sFileUrl;
+                                    oBlob._modified = false;
+                                    oBlob._thumbnail = bThumbnail;
+                                    deferred.resolve(oBlob);
+                                } else {
+                                    console.error('cannot get name from headers : ', response['headers']);
+
+                                    // Retry
+                                    if (goog.isDefAndNotNull(iRetry)) {
+                                        if (iRetry > 0) {
+                                            iRetry--;
+                                            scope['downloadFileBlob'](sFileUrl, bThumbnail, iRetry).then(
+                                                function success(oBlob){
+                                                    deferred.resolve(oBlob);
+                                                },
+                                                function error(){
+                                                    deferred.reject();
+                                                }
+                                            );
+                                        } else {
+                                            oBlob['name'] = sFileUrl.split('/')[sFileUrl.split('/').length - 1];
+                                            oBlob._url = sFileUrl;
+                                            oBlob._modified = false;
+                                            oBlob._thumbnail = bThumbnail;
+                                            deferred.resolve(oBlob);
+                                        }
                                     }
                                 }
-                            }
 
-                        } else {
+                            } else {
+                                deferred.reject();
+                            }
+                        },
+                        'error': function(response) {
                             deferred.reject();
                         }
-                    },
-                    'error': function(response) {
+                    });
+                } else {
+                    setTimeout(function () {
                         deferred.reject();
-                    }
-                });
+                    });
+                }
 
                 return deferred.promise;
             }
-- 
GitLab