Changeset 5de7549 in prototipo_portal_2018 for prototipo/static/js/functions


Ignore:
Timestamp:
Nov 1, 2017, 4:32:24 PM (7 years ago)
Author:
José Sulbarán <jsulbaran@…>
Branches:
master
Children:
75b1cd5, c1f6510
Parents:
97cbd49
Message:

Se agrego la funcionalidad para el reporte de la firma

Location:
prototipo/static/js/functions
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • prototipo/static/js/functions/DraggableSortable.js

    r327fd70 r5de7549  
    2828        if (num == 1){
    2929          $("#firma_visible #Formato_Visible .text").hide();
     30          console.log(VALOR_X);
    3031          VALOR_X = 0;
    3132          VALOR_Y = 0;
  • prototipo/static/js/functions/firmarDocumentoPdf.js

    r97cbd49 r5de7549  
    1 $("#Form-Format-Visible").on('submit', function() {
    2         //var formData = new FormData(document.getElementById("form"));
    3         var formData = new FormData();
    4  
     1
     2function True_False(data){
     3
     4    if (data == "true" ){
     5      return "Verdadero";
     6    }
     7    if (data ==  "false"){
     8      return "Falso";
     9    }
     10
     11}
     12
     13function SerealizeMyJson(data){
     14  for (var i = 0; i < data.signatures.length; i++) {
     15      data.signatures[i].integrityCheck = True_False(data.signatures[i].integrityCheck);
     16      data.signatures[i].signerCertificateStillValid = True_False(data.signatures[i].signerCertificateStillValid);
     17      data.signatures[i].signerCertificateValidAtTimeOfSigning = True_False(data.signatures[i].signerCertificateValidAtTimeOfSigning);
     18      data.signatures[i].signatureCoversWholeDocument = True_False(data.signatures[i].signatureCoversWholeDocument);
     19      data.signatures[i].certificatesVerifiedAgainstTheKeyStore = True_False(data.signatures[i].certificatesVerifiedAgainstTheKeyStore);         
     20  }
     21  return data;
     22}
     23
     24
     25//Obtenemos la  informacion de documento
     26function InfoDocumentDataTablePDF(signedFileId){
     27
     28    $.ajax({
     29        url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/"+signedFileId,
     30        type: "get",
     31        dataType: "json",       
     32        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
     33        success: function(response) {
     34               
     35            INFO_DATATABLE = SerealizeMyJson(response);
     36            DataTablePDF(response);           
     37        },
     38        error: function(jqXHR, textStatus, errorThrown){
     39                alert(textStatus+", "+ errorThrown+" el documento PDF para mostrar la info de la sign");     
     40        }
     41        });
     42}
     43
     44
     45// Cuarto paso (Se envia la información del token para terminar la firma)
     46function FinalizarFirma(signature){
     47
     48        $.ajax({
     49                type: 'POST',
     50                contentType: 'application/json',
     51                //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs/resenas",
     52                url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
     53                dataType: 'json',
     54                data: JSON.stringify({"signature":signature.hex}),
     55                xhrFields: {withCredentials: true},
     56                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
     57                success: function(data, textStatus, jqXHR){
     58
     59                        alert('Archivo firmado correctamente: ' + data['signedFileId']);
     60                        var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
     61                        //alert(linkToDownload);
     62                        document.getElementById("respuesta").innerHTML = linkToDownload;       
     63
     64                        InfoDocumentDataTablePDF(data['signedFileId']);         
     65
     66                },
     67                error: function(jqXHR, textStatus, errorThrown){
     68                        alert('error en pdfs/resenas: ' + textStatus);
     69                        $("#respuesta").html("error en pdfs/resenas: " + textStatus);
     70                }
     71        });
     72
     73}
     74
     75
     76//Tercer paso (Obtenemos el hash de pdf enviado por el servidor y luego procesa la información en el token)
     77function ObtenerHashPDFServer(parameters){
     78
     79        $.ajax({
     80                type: 'POST',
     81                contentType: 'application/json',                               
     82                //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs",
     83                url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
     84                dataType: "json",
     85                data: parameters,               
     86                xhrFields: {withCredentials: true},
     87                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
     88                success: function(data, textStatus, jqXHR){
     89                        var json_x = data;
     90                        var hash = json_x['hash'];
     91                        //alert("hash recibido del servidor "+hash);           
     92                        var hashtype = "SHA-256";
     93                        var lang = "eng";
     94                       
     95                        //Procesa la información
     96                        window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(
     97                                function(signature) {
     98                                        FinalizarFirma(signature.hex);
     99                        },
     100                        function(err) {
     101                                log_text("sign() failed: " + err);
     102                                        var error;
     103                    log_text("sign() failed: " + err);
     104                    if(err == "Error: user_cancel") {
     105                        alert("sign() failed: El usuario cancelo la operación");
     106                        error = "El usuario cancelo la operación";
     107                     }     
     108                     else if(err == "Error: no_certificates") {
     109                         alert("sign() failed: No hay certificado disponible");
     110                         error = "No hay certificado disponible";
     111                     }
     112                     else if(err == "Error: no_implementation") {
     113                         alert("sign() failed: No hay soporte para el manejo del certificado");
     114                         error = "No hay soporte para el manejo del certificado";
     115                     }
     116
     117                                //alert("sign() failed: " + err);
     118                                $("#respuesta").html("sign() failed: " + error);
     119                });
     120                       
     121                },                                                             
     122                error: function(jqXHR, textStatus, errorThrown){
     123                        //alert('error: ' + textStatus);
     124                        //var responseText = jQuery.parseJSON(jqXHR.responseText);
     125                        alert('ajax error function: ' + jqXHR.responseText);
     126                        $("#respuesta").html("error function: " + jqXHR.responseText);
     127                }
     128               
     129        });
     130               
     131}
     132
     133
     134//Segundo paso (Seleccionamos el Certificado Firmante)
     135function ObtenerCertificadoFirmante(response){
     136
     137        // identificador del archivo en el servidor
     138        var fileId = response.fileId.toString();
     139        var cert;
     140
     141        window.hwcrypto.getCertificate({lang: "en"}).then(
     142                function(response) {
     143                        var cert = response;
     144                        var parameters = JSON.stringify({
     145                                "fileId":fileId,
     146                                "certificate":cert.hex,
     147                                "reason":"Certificado",
     148                                "location":"CENDITEL",
     149                                "contact":"582746574336",
     150                                "signatureVisible":"true"
     151                                //"page": VALOR_PAGE,
     152                                //"coord_x": VALOR_X,
     153                                //"coord_y": VALOR_Y
     154                                });
     155
     156                        // ahora llamar al ajax de obtener la resena del pdf
     157                        ObtenerHashPDFServer(parameters);       
     158
     159                },
     160                function(err) {
     161                        log_text("getCertificate() failed: " + err);
     162            var error;
     163            if(err == "Error: user_cancel") {
     164                alert("getCertificate() failed: El usuario cancelo la operación"    );
     165                error = "El usuario cancelo la operación";
     166             }     
     167             else if(err == "Error: no_certificates") {
     168                 alert("getCertificate() failed: No hay certificado disponible")    ;
     169                 error = "No hay certificado disponible";
     170             }
     171             else if(err == "Error: no_implementation") {
     172                 alert("getCertificate() failed: No hay soporte para el manejo del certificado");
     173                 error = "No hay soporte para el manejo del certificado";
     174                        }
     175                        //alert("getCertificate() failed: " + err);
     176                        $("#respuesta").html("getCertificate() failed: " + error);
     177                }
     178
     179        );
     180}
     181
     182
     183
     184
     185// Primer paso (Subir el documento al servidor)
     186function SubirDocumentServer(){
     187
     188        var formData = new FormData();
    5189    formData.append("upload", $("#file-sign-ft_Vble")[0].files[0]);
    6190
     
    17201                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    18202                success: function(response) {
    19                         //alert(JSON.stringify(response));
    20                         var html = manejoJsonPDF(JSON.stringify(response));
    21                         document.getElementById("respuesta").innerHTML = html;
    22                        
    23                         // identificador del archivo en el servidor
    24                         var fileId = response.fileId.toString();
    25                         var cert;
    26 
    27                         window.hwcrypto.getCertificate({lang: "en"}).then(function(response) {
    28                                 var cert = response;
    29                                
    30                                 var parameters = JSON.stringify({
    31                                         "fileId":fileId,
    32                                         "certificate":cert.hex,
    33                                         "reason":"Certificado",
    34                                         "location":"CENDITEL",
    35                                         "contact":"582746574336",
    36                                         "signatureVisible":"true"
    37                                         //"page": VALOR_PAGE,
    38                                         //"coord_x": VALOR_X,
    39                                         //"coord_y": VALOR_Y
    40                                         });
    41                                
    42                                 // ahora llamar al ajax de obtener la resena del pdf
    43                                 $.ajax({
    44                                         type: 'POST',
    45                                         contentType: 'application/json',                               
    46                                         //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs",
    47                                         url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
    48                                         dataType: "json",
    49                                         data: parameters,               
    50                                         xhrFields: {withCredentials: true},
    51                                         headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    52                                         success: function(data, textStatus, jqXHR){
    53                                                 var json_x = data;
    54                                                 var hash = json_x['hash'];
    55                                                 //alert("hash recibido del servidor "+hash);
    56                                                
    57                                                 var hashtype = "SHA-256";
    58                                                 var lang = "eng";
    59                                                
    60                                                 window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(function(signature) {
    61                                                                                                        
    62                                                 $.ajax({
    63                                                                 type: 'POST',
    64                                                                 contentType: 'application/json',
    65                                                                 //url:"https://192.168.12.125:8443/Murachi/0.1/archivos/pdfs/resenas",
    66                                                                 url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
    67                                                                 dataType: 'json',
    68                                                                 data: JSON.stringify({"signature":signature.hex}),
    69                                                                 xhrFields: {withCredentials: true},
    70                                                                 headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
    71                                                                 success: function(data, textStatus, jqXHR){
    72 
    73                                                                         alert('Archivo firmado correctamente: ' + data['signedFileId']);
    74                                                                        
    75                                                                         var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\">descargar archivo firmado</a>";
    76                                                                         //alert(linkToDownload);
    77                                                                         document.getElementById("respuesta").innerHTML = linkToDownload;                                                                                                               
    78                                                                        
    79                                                                 },
    80                                                                 error: function(jqXHR, textStatus, errorThrown){
    81                                                                         alert('error en pdfs/resenas: ' + textStatus);
    82                                                                         $("#respuesta").html("error en pdfs/resenas: " + textStatus);
    83                                                                 }
    84                                                         });
    85                                                                                                
    86                                                 }, function(err) {
    87                                                         log_text("sign() failed: " + err);
    88 
    89                                                                 var error;
    90                                 log_text("sign() failed: " + err);
    91                                 if(err == "Error: user_cancel") {
    92                                     alert("sign() failed: El usuario cancelo la operación");
    93                                     error = "El usuario cancelo la operación";
    94                                  }     
    95                                  else if(err == "Error: no_certificates") {
    96                                      alert("sign() failed: No hay certificado disponible");
    97                                      error = "No hay certificado disponible";
    98                                  }
    99                                  else if(err == "Error: no_implementation") {
    100                                      alert("sign() failed: No hay soporte para el manejo del certificado");
    101                                      error = "No hay soporte para el manejo del certificado";
    102                                  }
    103 
    104                                                         //alert("sign() failed: " + err);
    105                                                         $("#respuesta").html("sign() failed: " + error);
    106                                         });
    107                                                
    108                                         },                                                             
    109                                         error: function(jqXHR, textStatus, errorThrown){
    110                                                 //alert('error: ' + textStatus);
    111                                                 //var responseText = jQuery.parseJSON(jqXHR.responseText);
    112                                                 alert('ajax error function: ' + jqXHR.responseText);
    113                                                 $("#respuesta").html("error function: " + jqXHR.responseText);
    114                                         }
    115                                        
    116                                 });
    117                                
    118                         }, function(err) {
    119                                 log_text("getCertificate() failed: " + err);
    120                     var error;
    121                     if(err == "Error: user_cancel") {
    122                         alert("getCertificate() failed: El usuario cancelo la operación"    );
    123                         error = "El usuario cancelo la operación";
    124                      }     
    125                      else if(err == "Error: no_certificates") {
    126                          alert("getCertificate() failed: No hay certificado disponible")    ;
    127                          error = "No hay certificado disponible";
    128                      }
    129                      else if(err == "Error: no_implementation") {
    130                          alert("getCertificate() failed: No hay soporte para el manejo del certificado");
    131                          error = "No hay soporte para el manejo del certificado";
    132                                         }
    133                                 //alert("getCertificate() failed: " + err);
    134                                 $("#respuesta").html("getCertificate() failed: " + error);
    135                         });
    136 
    137             },
    138                 error: function(response) {
    139                         //Que se ejecuta cuando finalice la petición de con error
    140                                 $("#respuesta").html('Error...!!!');
    141                         alert("ocurrio un error")
    142                         }
     203
     204                        document.getElementById("respuesta").innerHTML = manejoJsonPDF(JSON.stringify(response));       
     205                        ObtenerCertificadoFirmante(response);
     206        },
     207        error: function(response) {
     208                //Que se ejecuta cuando finalice la petición de con error
     209                        $("#respuesta").html('Error, al subir el archivo al servidor...!!!');
     210                alert("ocurrio un error, al subir el archivo al servidor")
     211                }
    143212    });
    144213
     214}
     215
     216
     217$("#Form-Format-Visible").on('submit', function(event) {
     218        event.preventDefault();
     219        SubirDocumentServer();
    145220});
Note: See TracChangeset for help on using the changeset viewer.