frontend; backend: adiciona sistema novo de gravacao de provas
Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
1 parent
0750b26208
commit
4ed6ad66ef
13 files changed
+1506
-65
No files matched your search
@@ -4,6 +4,7 @@ import { createHash } from 'crypto';
|
||||
import { PDFDocument, StandardFonts } from 'pdf-lib';
|
||||
import * as OpenTimestamps from 'opentimestamps';
|
||||
import sharp from 'sharp';
|
||||
import { promises as fs } from 'fs';
|
||||
|
||||
export class ProvaService {
|
||||
private fileValidator: FileValidator;
|
||||
@@ -96,4 +97,51 @@ export class ProvaService {
|
||||
buffer: await pdfDoc.save()
|
||||
};
|
||||
}
|
||||
|
||||
async verifyFile(hash: string) {
|
||||
try {
|
||||
const prova = await prisma.prova.findFirst({
|
||||
where: { checksumSha256: hash }
|
||||
});
|
||||
|
||||
if (!prova) {
|
||||
return {
|
||||
verified: false,
|
||||
message: 'Documento não encontrado ou hash inválido'
|
||||
};
|
||||
}
|
||||
|
||||
// Verificar se o arquivo ainda existe
|
||||
const filePath = prova.filePath;
|
||||
if (filePath) {
|
||||
try {
|
||||
await fs.access(filePath);
|
||||
} catch {
|
||||
return {
|
||||
verified: false,
|
||||
message: 'Arquivo original não encontrado'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
verified: true,
|
||||
message: 'Documento verificado com sucesso',
|
||||
prova: {
|
||||
fileName: prova.fileName,
|
||||
checksumSha256: prova.checksumSha256,
|
||||
checksumSha512: prova.checksumSha512,
|
||||
checksumMd5: prova.checksumMd5,
|
||||
timestamp: prova.timestamp,
|
||||
metadata: prova.metadata,
|
||||
dataCriacao: prova.dataCriacao,
|
||||
dataValida: prova.dataAtualizacao
|
||||
},
|
||||
timestamp: prova.timestamp ? JSON.parse(prova.timestamp) : null
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Erro ao verificar arquivo:', error);
|
||||
throw new Error(`Erro ao verificar arquivo: ${error.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user