diff options
| author | kanadeko <[email protected]> | 2017-01-17 16:54:25 -0300 |
|---|---|---|
| committer | kanadeko <[email protected]> | 2017-01-17 16:54:25 -0300 |
| commit | a114d298d0243dd7f7be0b9728f850550628cfd9 (patch) | |
| tree | ce7f6498744e75a51b24b952dad337486fcf7786 /public | |
| parent | Added 500 error page (diff) | |
| download | host.fuwn.me-a114d298d0243dd7f7be0b9728f850550628cfd9.tar.xz host.fuwn.me-a114d298d0243dd7f7be0b9728f850550628cfd9.zip | |
Rewrote token handling and upload.js
Diffstat (limited to 'public')
| -rw-r--r-- | public/js/panel.js | 2 | ||||
| -rw-r--r-- | public/js/upload.js | 210 |
2 files changed, 108 insertions, 104 deletions
diff --git a/public/js/panel.js b/public/js/panel.js index cff5609..7e3e383 100644 --- a/public/js/panel.js +++ b/public/js/panel.js @@ -34,7 +34,7 @@ window.onload = function () { // xhr.responseText } } - xhr.open('GET', '/api/verify', true); + xhr.open('GET', '/api/token/verify', true); xhr.setRequestHeader('type', 'admin'); xhr.setRequestHeader('token', document.getElementById('token').value); xhr.send(null); diff --git a/public/js/upload.js b/public/js/upload.js index c99ecb4..f5e8427 100644 --- a/public/js/upload.js +++ b/public/js/upload.js @@ -1,127 +1,131 @@ +var upload = {}; -window.onload = function () { - - var USINGTOKEN; - var maxSize = '512'; +upload.isPrivate = true; +upload.token = localStorage.token; - // First check to see if the service is using token or not +upload.checkIfPublic = function(){ var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE) { - USINGTOKEN = JSON.parse(xhr.responseText).private; - prepareTokenThing(); + upload.isPublic = JSON.parse(xhr.responseText).private; + upload.preparePage(); } } xhr.open('GET', '/api/check', true); xhr.send(null); +} - function prepareTokenThing(){ - - if(!USINGTOKEN) return getInfo(); - - if(!localStorage.token){ - document.getElementById('tokenSubmit').addEventListener('click', function(){ - getInfo(document.getElementById('token').value) - }); - return document.getElementById('tokenContainer').style.display = 'flex'; - } - - getInfo(localStorage.token); - - } - - function prepareDropzone(){ - - var previewNode = document.querySelector('#template'); - previewNode.id = ''; - var previewTemplate = previewNode.parentNode.innerHTML; - previewNode.parentNode.removeChild(previewNode); - - var dropzone = new Dropzone('div#dropzone', { - url: '/api/upload', - paramName: 'files[]', - maxFilesize: maxSize, - parallelUploads: 2, - uploadMultiple: false, - previewsContainer: 'div#uploads', - previewTemplate: previewTemplate, - createImageThumbnails: false, - maxFiles: 1000, - autoProcessQueue: true, - headers: { - 'auth': localStorage.token - }, - init: function() { - this.on('addedfile', function(file) { - document.getElementById('uploads').style.display = 'block'; - }); - } - }); - - // Update the total progress bar - dropzone.on('uploadprogress', function(file, progress) { - file.previewElement.querySelector('.progress').style.width = progress + '%'; +upload.preparePage = function(){ + if(!upload.isPrivate) return upload.prepareUpload(); + if(!upload.token){ + document.getElementById('tokenSubmit').addEventListener('click', function(){ + upload.verifyToken(document.getElementById('token').value) }); + document.getElementById('tokenContainer').style.display = 'flex'; + return; + } + upload.verifyToken(upload.token, true); +} - dropzone.on('success', function(file, response) { - - // Handle the responseText here. For example, add the text to the preview element: +upload.verifyToken = function(token, reloadOnError = false){ + var xhr = new XMLHttpRequest(); - if(response.success === false){ - var span = document.createElement('span'); - span.innerHTML = response.description; - file.previewTemplate.querySelector('.link').appendChild(span); + xhr.onreadystatechange = function() { + if (xhr.readyState == XMLHttpRequest.DONE) { + + var json = JSON.parse(xhr.responseText); + if(json.success === false){ + alert(json.description); + if(reloadOnError){ + localStorage.removeItem("token"); + location.reload(); + } return; } - a = document.createElement('a'); - a.href = response.files[0].url; - a.target = '_blank'; - a.innerHTML = response.files[0].url; - file.previewTemplate.querySelector('.link').appendChild(a); - - file.previewTemplate.querySelector('.progress').style.display = 'none'; - - }); + localStorage.token = token; + upload.token = token; + return upload.prepareUpload(); + } } - - function getInfo(token) { - var xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (xhr.readyState == XMLHttpRequest.DONE) { - - if(xhr.responseText === 'not-authorized') - return notAuthorized(); - - div = document.createElement('div'); - div.id = 'dropzone'; - div.innerHTML = 'Click here or drag and drop files'; - div.style.display = 'flex'; - - document.getElementById('btnGithub').style.display = 'none'; - document.getElementById('tokenContainer').style.display = 'none'; - document.getElementById('uploadContainer').appendChild(div); - document.getElementById('panel').style.display = 'block'; - - if(xhr.responseText.maxFileSize) maxSize = JSON.parse(xhr.responseText).maxFileSize; - if(token) localStorage.token = token; - - prepareDropzone(); - + xhr.open('GET', '/api/token/verify', true); + xhr.setRequestHeader('type', 'client'); + xhr.setRequestHeader('token', token); + xhr.send(null); +} + +upload.prepareUpload = function(){ + + div = document.createElement('div'); + div.id = 'dropzone'; + div.innerHTML = 'Click here or drag and drop files'; + div.style.display = 'flex'; + + document.getElementById('btnGithub').style.display = 'none'; + document.getElementById('tokenContainer').style.display = 'none'; + document.getElementById('uploadContainer').appendChild(div); + document.getElementById('panel').style.display = 'block'; + + upload.prepareDropzone(); + +} + +upload.prepareDropzone = function(){ + + var previewNode = document.querySelector('#template'); + previewNode.id = ''; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var dropzone = new Dropzone('div#dropzone', { + url: '/api/upload', + paramName: 'files[]', + parallelUploads: 2, + uploadMultiple: false, + previewsContainer: 'div#uploads', + previewTemplate: previewTemplate, + createImageThumbnails: false, + maxFiles: 1000, + autoProcessQueue: true, + headers: { + 'auth': localStorage.token + }, + init: function() { + this.on('addedfile', function(file) { + document.getElementById('uploads').style.display = 'block'; + }); } + }); + + // Update the total progress bar + dropzone.on('uploadprogress', function(file, progress) { + file.previewElement.querySelector('.progress').style.width = progress + '%'; + }); + + dropzone.on('success', function(file, response) { + + // Handle the responseText here. For example, add the text to the preview element: + + if(response.success === false){ + var span = document.createElement('span'); + span.innerHTML = response.description; + file.previewTemplate.querySelector('.link').appendChild(span); + return; } - xhr.open('GET', '/api/info', true); - if(token !== undefined) - xhr.setRequestHeader('auth', token); + a = document.createElement('a'); + a.href = response.files[0].url; + a.target = '_blank'; + a.innerHTML = response.files[0].url; + file.previewTemplate.querySelector('.link').appendChild(a); + + file.previewTemplate.querySelector('.progress').style.display = 'none'; + + }); - xhr.send(null); - } +} - function notAuthorized() { - localStorage.removeItem("token"); - location.reload(); - } +window.onload = function () { + upload.checkIfPublic(); };
\ No newline at end of file |