1
0
Fork 0
mirror of https://github.com/24eme/signaturepdf synced 2024-06-04 15:02:29 +02:00

Merge branch 'sharing' of github.com:24eme/signaturepdf into sharing

This commit is contained in:
Jb Lm 2022-03-31 12:15:48 +02:00
commit 0ca295070d
3 changed files with 73 additions and 9 deletions

39
app.php
View file

@ -53,6 +53,18 @@ $f3->route('GET /signature',
echo View::instance()->render('signature.html.php');
}
);
$f3->route('GET /signature/@hash',
function($f3, $param) {
$f3->set('hash', $param['hash']);
$f3->set('maxSize', min(array(convertPHPSizeToBytes(ini_get('post_max_size')), convertPHPSizeToBytes(ini_get('upload_max_filesize')))));
$f3->set('maxPage', ini_get('max_file_uploads') - 1);
echo View::instance()->render('signature.html.php');
}
);
$f3->route('GET /organization',
function($f3) {
$f3->set('maxSize', min(array(convertPHPSizeToBytes(ini_get('post_max_size')), convertPHPSizeToBytes(ini_get('upload_max_filesize')))));
@ -151,6 +163,33 @@ $f3->route('POST /sign',
}
);
$f3->route('POST /share',
function($f3) {
$hash = substr(hash('sha512', uniqid().rand()), 0, 20);
$sharingFolder = $f3->get('STORAGE').$hash."/";
$f3->set('UPLOADS', $sharingFolder);
mkdir($sharingFolder);
$filename = "original.pdf";
$files = Web::instance()->receive(function($file,$formFieldName){
if(strpos(Web::instance()->mime($file['tmp_name'], true), 'application/pdf') !== 0) {
$f3->error(403);
}
return true;
}, false, function($fileBaseName, $formFieldName) use ($filename) {
return $filename;
});
if(!count($files)) {
$f3->error(403);
}
$f3->reroute('/signature/'.$hash);
}
);
$f3->route('POST /organize',
function($f3) {
$filename = null;

View file

@ -28,6 +28,7 @@ var loadPDF = async function(pdfBlob, filename) {
type: 'application/pdf'
}));
document.getElementById('input_pdf').files = dataTransfer.files;
document.getElementById('input_pdf_share').files = dataTransfer.files;
var loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(function(pdf) {
@ -946,7 +947,15 @@ var pageSignature = async function(url) {
fontCaveat = font;
});
let pdfBlob = await getPDFBlobFromCache(url);
if(hash) {
var response = await fetch(url);
if(response.status != 200) {
return;
}
let pdfBlob = await response.blob();
} else {
let pdfBlob = await getPDFBlobFromCache(url);
}
if(!pdfBlob) {
document.location = '/signature';
return;
@ -961,6 +970,11 @@ var pageSignature = async function(url) {
};
(function () {
if(hash) {
pageSignature('/signature/'+hash+'/pdf');
return;
}
if(window.location.hash && window.location.hash.match(/^\#http/)) {
let hashUrl = window.location.hash.replace(/^\#/, '');
pageUpload();

View file

@ -70,14 +70,21 @@
<div class="d-grid gap-2 mt-2">
<button type="button" id="btn-add-svg" class="btn btn-sm btn-light" data-bs-toggle="modal" data-bs-target="#modalAddSvg"><i class="bi bi-plus-circle"></i> Ajouter un élément</button>
</div>
<form class="position-absolute bottom-0 pb-2 ps-0 pe-4 w-100 d-none d-sm-none d-md-block" id="form_pdf" action="/sign" method="post" enctype="multipart/form-data">
<input id="input_pdf" name="pdf" type="file" class="d-none" />
<input id="input_svg" name="svg[]" type="file" class="d-none" />
<div class="d-grid gap-2 mt-2">
<button class="btn btn-primary" disabled="disabled" type="submit" id="save"><i class="bi bi-download"></i> Télécharger le PDF Signé</button>
</div>
</form>
<div class="position-absolute bottom-0 pb-2 ps-0 pe-4 w-100 d-none d-sm-none d-md-block">
<form id="form_sharing" action="/share" method="post" enctype="multipart/form-data">
<input id="input_pdf_share" name="pdf" type="file" class="d-none" />
<div class="d-grid gap-2 mt-2">
<button class="btn btn-outline-secondary" type="submit" id="save"><i class="bi bi-share"></i> Partager ce PDF</button>
</div>
</form>
<form id="form_pdf" action="/sign" method="post" enctype="multipart/form-data">
<input id="input_pdf" name="pdf" type="file" class="d-none" />
<input id="input_svg" name="svg[]" type="file" class="d-none" />
<div class="d-grid gap-2 mt-2">
<button class="btn btn-primary" disabled="disabled" type="submit" id="save"><i class="bi bi-download"></i> Télécharger le PDF Signé</button>
</div>
</form>
</div>
</div>
</div>
<div class="position-fixed top-0 start-0 bg-white w-100 p-2 shadow-sm d-md-none">
@ -150,6 +157,10 @@
<script>
var maxSize = <?php echo $maxSize ?>;
var maxPage = <?php echo $maxPage ?>;
var hash = null;
<?php if(isset($hash)): ?>
hash = "<?php echo $hash ?>";
<?php endif; ?>
</script>
<script src="/js/signature.js?202203261059"></script>
</body>