source: prototipo_portal_2018/prototipo/static/js/functions/MultipleSign/MultipleSign.js @ c3a6b20

Last change on this file since c3a6b20 was c3a6b20, checked in by José Sulbarán <jsulbaran@…>, 7 years ago

SE agrego las firma multiples

  • Property mode set to 100644
File size: 8.5 KB
Line 
1
2
3
4function True_FalseMultiples(data){
5
6    if (data == "true" ){
7      return "Verdadero";
8    }
9    if (data ==  "false"){
10      return "Falso";
11    }
12
13}
14
15function SerealizeMyJsonMultiples(data){
16  for (var i = 0; i < data.signatures.length; i++) {
17      data.signatures[i].integrityCheck = True_FalseMultiples(data.signatures[i].integrityCheck);
18      data.signatures[i].signerCertificateStillValid = True_FalseMultiples(data.signatures[i].signerCertificateStillValid);
19      data.signatures[i].signerCertificateValidAtTimeOfSigning = True_FalseMultiples(data.signatures[i].signerCertificateValidAtTimeOfSigning);
20      data.signatures[i].signatureCoversWholeDocument = True_FalseMultiples(data.signatures[i].signatureCoversWholeDocument);
21      data.signatures[i].certificatesVerifiedAgainstTheKeyStore = True_FalseMultiples(data.signatures[i].certificatesVerifiedAgainstTheKeyStore);         
22  }
23  return data;
24}
25
26
27//Obtenemos la  informacion de documento
28function InfoDocumentDataTablePDFMultiples(signedFileId){
29
30    $.ajax({
31        //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/"+signedFileId,
32        url: "https://192.168.12.154:8443/Murachi/0.1/archivos/"+signedFileId,
33        type: "get",
34        dataType: "json",       
35        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
36        success: function(response) {
37           
38                       
39                INFO_DATATABLE_MULTIPLES = SerealizeMyJsonMultiples(response);
40                       
41                        CONT_MULTIPLES += 1;
42                        if (CONT_MULTIPLES == 1){
43                                DATATABLE_SIGN_MULTIPLES = DataTablePDFMultiples(response);     
44
45                        }
46                        if (CONT_MULTIPLES > 1){
47                                DATATABLE_SIGN_MULTIPLES.destroy();
48                                DATATABLE_SIGN_MULTIPLES = DataTablePDFMultiples(response);     
49                        }       
50
51
52                        $("#Cuerpo_Sign").hide();
53                        $("#Cuerpo_check").hide();
54                        $("#well_mensaje").hide();
55                        $("#button_SignMultiples").hide();
56                        $("#myJsonPDFMultiples_wrapper").show();       
57                        ListarDocument()                               
58
59
60                       
61        },
62        error: function(jqXHR, textStatus, errorThrown){
63                alert(textStatus+", "+ errorThrown+" el documento PDF para mostrar la info de la sign");     
64        }
65        });
66}
67
68
69// Cuarto paso (Se envia la información del token para terminar la firma)
70function FinalizarFirmaMultiples(signature){
71
72        $.ajax({
73                type: 'POST',
74                contentType: 'application/json',
75                url:"https://192.168.12.154:8443/Murachi/0.1/archivos/pdfs/resenas",
76                //url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
77                dataType: 'json',
78                data: JSON.stringify({"signature":signature}),
79                xhrFields: {withCredentials: true},
80                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
81                success: function(data, textStatus, jqXHR){
82
83                        //var linkToDownload = "<a href=\"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\"><h4>Descargar archivo firmado</h4></a>";
84                        var linkToDownload = "<a href=\"https://192.168.12.154:8443/Murachi/0.1/archivos/descargas/" + data['signedFileId'] +"\"><h4>Descargar archivo firmado</h4></a>";
85                        document.getElementById("log").innerHTML = '';   
86                        document.getElementById("respuesta").innerHTML = '<center><h2>Archivo firmado correctamente:</h2> <br>'+linkToDownload+'</center>';                     
87
88                        InfoDocumentDataTablePDFMultiples(data['signedFileId']);               
89
90                },
91                error: function(jqXHR, textStatus, errorThrown){
92                        alert('error en pdfs/resenas: ' + textStatus);
93                        $("#respuesta").html("error en pdfs/resenas: " + textStatus);
94                }
95        });
96
97}
98
99
100//Tercer paso (Obtenemos el hash de pdf enviado por el servidor y luego procesa la información en el token)
101function ObtenerHashPDFServerMultiples(parameters,cert){
102
103        $.ajax({
104                type: 'POST',
105                contentType: 'application/json',                               
106                url:"https://192.168.12.154:8443/Murachi/0.1/archivos/pdfs2",
107                //url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
108                dataType: "json",
109                data: parameters,               
110                xhrFields: {withCredentials: true},
111                headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
112                success: function(data, textStatus, jqXHR){
113                        var json_x = data;
114                        var hash = json_x['hash']; 
115                        //alert("hash recibido del servidor "+hash);           
116                        var hashtype = "SHA-256";
117                        var lang = "eng";
118                       
119                        //Procesa la información
120                        window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(
121                                function(signature) {
122                                        FinalizarFirmaMultiples(signature.hex);
123                        }, 
124                        function(err) {
125                                log_text("sign() failed: " + err);
126                                        var error;
127                    log_text("sign() failed: " + err);
128                    if(err == "Error: user_cancel") {
129                        alert("sign() failed: El usuario cancelo la operación");
130                        error = "El usuario cancelo la operación"; 
131                     }     
132                     else if(err == "Error: no_certificates") {
133                         alert("sign() failed: No hay certificado disponible");
134                         error = "No hay certificado disponible";
135                     }
136                     else if(err == "Error: no_implementation") {
137                         alert("sign() failed: No hay soporte para el manejo del certificado");
138                         error = "No hay soporte para el manejo del certificado";
139                     }
140
141                                //alert("sign() failed: " + err);
142                                $("#respuesta").html("sign() failed: " + error);
143                });
144                       
145                },                                                             
146                error: function(jqXHR, textStatus, errorThrown){
147                        //alert('error: ' + textStatus);
148                        //var responseText = jQuery.parseJSON(jqXHR.responseText);
149                        alert('ajax error function: ' + jqXHR.responseText);
150                        $("#respuesta").html("error function: " + jqXHR.responseText);
151                }
152               
153        });
154               
155}
156
157
158//Segundo paso (Seleccionamos el Certificado Firmante)
159function ObtenerCertificadoFirmanteMultiples(fileId){
160
161        // identificador del archivo en el servidor
162       
163
164        window.hwcrypto.getCertificate({lang: "en"}).then(
165                function(response) {
166                        var cert = response;
167                        console.log(response);
168                        console.log("ssss");
169                        var parameters = "";
170                        parameters = JSON.stringify({
171                                "fileId":fileId,
172                                "certificate":cert.hex,
173                                "reason":"Certificado",
174                                "location":"CENDITEL",
175                                "contact":"582746574336",
176                                "signatureVisible":"false",
177                                "signaturePage": "",
178                                "xPos": "",
179                                "yPos": ""
180                                });                             
181
182                        // ahora llamar al ajax de obtener la resena del pdf
183                        ObtenerHashPDFServerMultiples(parameters, cert);       
184
185                }, 
186                function(err) {
187                        log_text("getCertificate() failed: " + err);
188            var error;
189            if(err == "Error: user_cancel") {
190                alert("getCertificate() failed: El usuario cancelo la operación"    );
191                error = "El usuario cancelo la operación"; 
192             }     
193             else if(err == "Error: no_certificates") {
194                 alert("getCertificate() failed: No hay certificado disponible")    ;
195                 error = "No hay certificado disponible";
196             }
197             else if(err == "Error: no_implementation") {
198                 alert("getCertificate() failed: No hay soporte para el manejo del certificado");
199                 error = "No hay soporte para el manejo del certificado";
200                        }
201                        //alert("getCertificate() failed: " + err);
202                        $("#respuesta").html("getCertificate() failed: " + error);
203                }
204
205        );
206}
207
208
209function ListarDocument(){
210
211
212        $.ajax({
213                type: 'POST',
214                contentType: 'application/json',
215                url:"https://192.168.12.154:8443/Murachi/0.1/archivos/listado",
216                //url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
217        type: "get",
218        dataType: "json",       
219        headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
220                success: function(response, textStatus, jqXHR){
221
222                       
223                        var options = "";
224                        options += '<option value="-1"> Seleccionar </option>';                 
225                        for (var i = 0; i < response.murachiWorkingDirectoryContent.length; i++)
226                        { 
227                         options += '<option value="'+response.murachiWorkingDirectoryContent[i]+'" title ="'+response.murachiWorkingDirectoryContent[i]+'">' +response.murachiWorkingDirectoryContent[i] +'</option>';
228                        }
229
230                        $('#listadoDocument').html(options);
231                        $('#listadoDocument option:first').attr('selected', 'selected');
232                        $("#SelectArchivos").show();
233
234                },
235                error: function(jqXHR, textStatus, errorThrown){
236                        alert('error en pdfs/resenas: ' + textStatus);
237                        $("#respuesta").html("error en pdfs/resenas: " + textStatus);
238                }
239        });
240
241
242}
243
244
245$("#button_ListarMultiples").on('click', function() {   
246        ListarDocument();
247});
248
249$("#listadoDocument").on('click', function() {
250        $("#button_SignMultiples").show();
251
252});
253
254
255
256$("#Form_sign_multiples").on('submit', function(event) {
257        event.preventDefault();
258       
259        var fileId = $("#listadoDocument").val();
260
261        if (fileId != -1 ) {
262                ObtenerCertificadoFirmanteMultiples(fileId);
263        }
264        else{
265                alert("Debe selecionar un documeto");
266        }
267
268       
269});
270
Note: See TracBrowser for help on using the repository browser.