mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2024-12-15 00:46:22 +00:00
File delete, album delete and album rename. Sugoooi!
This commit is contained in:
parent
bb0f746598
commit
bae03cdc25
@ -35,8 +35,8 @@ albumsController.list = function(req, res, next){
|
|||||||
for(let album of albums) album.files = albumsCount[album.id]
|
for(let album of albums) album.files = albumsCount[album.id]
|
||||||
|
|
||||||
return res.json({ success: true, albums })
|
return res.json({ success: true, albums })
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
}
|
}
|
||||||
|
|
||||||
albumsController.create = function(req, res, next){
|
albumsController.create = function(req, res, next){
|
||||||
@ -58,7 +58,7 @@ albumsController.create = function(req, res, next){
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
return res.json({ success: true })
|
return res.json({ success: true })
|
||||||
})
|
})
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
}
|
}
|
||||||
|
|
||||||
albumsController.delete = function(req, res, next){
|
albumsController.delete = function(req, res, next){
|
||||||
@ -71,8 +71,30 @@ albumsController.delete = function(req, res, next){
|
|||||||
|
|
||||||
db.table('albums').where('id', id).update({ enabled: 0 }).then(() => {
|
db.table('albums').where('id', id).update({ enabled: 0 }).then(() => {
|
||||||
return res.json({ success: true })
|
return res.json({ success: true })
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
albumsController.rename = function(req, res, next){
|
||||||
|
if(req.headers.auth !== config.adminToken)
|
||||||
|
return res.status(401).json({ success: false, description: 'not-authorized'})
|
||||||
|
|
||||||
|
let id = req.body.id
|
||||||
|
if(id === undefined || id === '')
|
||||||
|
return res.json({ success: false, description: 'No album specified' })
|
||||||
|
|
||||||
|
let name = req.body.name
|
||||||
|
if(name === undefined || name === '')
|
||||||
|
return res.json({ success: false, description: 'No name specified' })
|
||||||
|
|
||||||
|
db.table('albums').where('name', name).then((results) => {
|
||||||
|
if(results.length !== 0)
|
||||||
|
return res.json({ success: false, description: 'Name already in use' })
|
||||||
|
|
||||||
|
db.table('albums').where('id', id).update({ name: name }).then(() => {
|
||||||
|
return res.json({ success: true })
|
||||||
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = albumsController
|
module.exports = albumsController
|
@ -54,7 +54,7 @@ tokenController.change = function(req, res, next){
|
|||||||
config.adminToken = token
|
config.adminToken = token
|
||||||
|
|
||||||
res.json({ success: true })
|
res.json({ success: true })
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = tokenController
|
module.exports = tokenController
|
@ -4,7 +4,7 @@ const multer = require('multer')
|
|||||||
const randomstring = require('randomstring')
|
const randomstring = require('randomstring')
|
||||||
const db = require('knex')(config.database)
|
const db = require('knex')(config.database)
|
||||||
//const crypto = require('crypto')
|
//const crypto = require('crypto')
|
||||||
//const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
|
||||||
let uploadsController = {}
|
let uploadsController = {}
|
||||||
|
|
||||||
@ -94,9 +94,38 @@ uploadsController.upload = function(req, res, next){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uploadsController.delete = function(req, res){
|
||||||
|
|
||||||
|
if(req.headers.auth !== config.adminToken)
|
||||||
|
return res.status(401).json({ success: false, description: 'not-authorized'})
|
||||||
|
|
||||||
|
let id = req.body.id
|
||||||
|
if(id === undefined || id === '')
|
||||||
|
return res.json({ success: false, description: 'No file specified' })
|
||||||
|
|
||||||
|
db.table('files').where('id', id).then((file) => {
|
||||||
|
|
||||||
|
fs.stat('./' + config.uploads.folder + '/' + file[0].name, function (err, stats) {
|
||||||
|
|
||||||
|
if (err) { return res.json({ success: false, description: err.toString() }) }
|
||||||
|
|
||||||
|
fs.unlink('./' + config.uploads.folder + '/' + file[0].name, function(err){
|
||||||
|
if (err) { return res.json({ success: false, description: err.toString() }) }
|
||||||
|
|
||||||
|
db.table('files').where('id', id).del().then(() =>{
|
||||||
|
return res.json({ success: true })
|
||||||
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadsController.list = function(req, res){
|
uploadsController.list = function(req, res){
|
||||||
@ -141,7 +170,7 @@ uploadsController.list = function(req, res){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
}).catch(function(error) { console.log(error); res.json({success: false, description: 'error'}) })
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = uploadsController
|
module.exports = uploadsController
|
@ -51,9 +51,8 @@ let init = function(db, config){
|
|||||||
]
|
]
|
||||||
).then(() => {
|
).then(() => {
|
||||||
printAndSave(config, clientToken, adminToken)
|
printAndSave(config, clientToken, adminToken)
|
||||||
})
|
}).catch(function(error) { console.log(error) })
|
||||||
|
}).catch(function(error) { console.log(error) })
|
||||||
})
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
<link rel="stylesheet" type="text/css" href="/css/style.css">
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
|
||||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.15.3/axios.min.js"></script>
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.15.3/axios.min.js"></script>
|
||||||
|
<script type="text/javascript" src="https://use.fontawesome.com/cd26baa9bd.js"></script>
|
||||||
<script type="text/javascript" src="/js/panel.js"></script>
|
<script type="text/javascript" src="/js/panel.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -91,6 +91,7 @@ panel.getUploads = function(album = undefined){
|
|||||||
<th>File</th>
|
<th>File</th>
|
||||||
<th>Album</th>
|
<th>Album</th>
|
||||||
<th>Date</th>
|
<th>Date</th>
|
||||||
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="table">
|
<tbody id="table">
|
||||||
@ -108,6 +109,13 @@ panel.getUploads = function(album = undefined){
|
|||||||
<th><a href="${item.file}" target="_blank">${item.file}</a></th>
|
<th><a href="${item.file}" target="_blank">${item.file}</a></th>
|
||||||
<th>${item.album}</th>
|
<th>${item.album}</th>
|
||||||
<td>${item.date}</td>
|
<td>${item.date}</td>
|
||||||
|
<td>
|
||||||
|
<a class="button is-small is-danger is-outlined" title="Delete album" onclick="panel.deleteFile(${item.id})">
|
||||||
|
<span class="icon is-small">
|
||||||
|
<i class="fa fa-trash-o"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -122,6 +130,42 @@ panel.getUploads = function(album = undefined){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
panel.deleteFile = function(id){
|
||||||
|
swal({
|
||||||
|
title: "Are you sure?",
|
||||||
|
text: "You wont be able to recover the file!",
|
||||||
|
type: "warning",
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: "#ff3860",
|
||||||
|
confirmButtonText: "Yes, delete it!",
|
||||||
|
closeOnConfirm: false
|
||||||
|
},
|
||||||
|
function(){
|
||||||
|
|
||||||
|
axios.post('/api/upload/delete', {
|
||||||
|
id: id
|
||||||
|
})
|
||||||
|
.then(function (response) {
|
||||||
|
|
||||||
|
if(response.data.success === false){
|
||||||
|
if(response.data.description === 'not-authorized') return panel.verifyToken(panel.token);
|
||||||
|
else return swal("An error ocurred", response.data.description, "error");
|
||||||
|
}
|
||||||
|
|
||||||
|
swal("Deleted!", "The file has been deleted.", "success");
|
||||||
|
panel.getUploads();
|
||||||
|
return;
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(function (error) {
|
||||||
|
return swal("An error ocurred", 'There was an error with the request, please check the console for more information.', "error");
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
panel.getAlbums = function(){
|
panel.getAlbums = function(){
|
||||||
|
|
||||||
axios.get('/api/albums')
|
axios.get('/api/albums')
|
||||||
@ -150,6 +194,7 @@ panel.getAlbums = function(){
|
|||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
<th>Files</th>
|
<th>Files</th>
|
||||||
<th>Created At</th>
|
<th>Created At</th>
|
||||||
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody id="table">
|
<tbody id="table">
|
||||||
@ -167,6 +212,18 @@ panel.getAlbums = function(){
|
|||||||
<th>${item.name}</th>
|
<th>${item.name}</th>
|
||||||
<th>${item.files}</th>
|
<th>${item.files}</th>
|
||||||
<td>${item.date}</td>
|
<td>${item.date}</td>
|
||||||
|
<td>
|
||||||
|
<a class="button is-small is-primary is-outlined" title="Edit name" onclick="panel.renameAlbum(${item.id})">
|
||||||
|
<span class="icon is-small">
|
||||||
|
<i class="fa fa-pencil"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="button is-small is-danger is-outlined" title="Delete album" onclick="panel.deleteAlbum(${item.id})">
|
||||||
|
<span class="icon is-small">
|
||||||
|
<i class="fa fa-trash-o"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -186,6 +243,89 @@ panel.getAlbums = function(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
panel.renameAlbum = function(id){
|
||||||
|
|
||||||
|
swal({
|
||||||
|
title: "Rename album",
|
||||||
|
text: "New name you want to give the album:",
|
||||||
|
type: "input",
|
||||||
|
showCancelButton: true,
|
||||||
|
closeOnConfirm: false,
|
||||||
|
animation: "slide-from-top",
|
||||||
|
inputPlaceholder: "My super album"
|
||||||
|
},function(inputValue){
|
||||||
|
if (inputValue === false) return false;
|
||||||
|
if (inputValue === "") {
|
||||||
|
swal.showInputError("You need to write something!");
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
axios.post('/api/albums/rename', {
|
||||||
|
id: id,
|
||||||
|
name: inputValue
|
||||||
|
})
|
||||||
|
.then(function (response) {
|
||||||
|
|
||||||
|
if(response.data.success === false){
|
||||||
|
if(response.data.description === 'not-authorized') return panel.verifyToken(panel.token);
|
||||||
|
else if(response.data.description === 'Name already in use') swal.showInputError("That name is already in use!");
|
||||||
|
else swal("An error ocurred", response.data.description, "error");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
swal("Success!", "Your album was renamed to: " + inputValue, "success");
|
||||||
|
panel.getAlbumsSidebar();
|
||||||
|
panel.getAlbums();
|
||||||
|
return;
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(function (error) {
|
||||||
|
return swal("An error ocurred", 'There was an error with the request, please check the console for more information.', "error");
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.deleteAlbum = function(id){
|
||||||
|
swal({
|
||||||
|
title: "Are you sure?",
|
||||||
|
text: "This won't delete your files, only the album!",
|
||||||
|
type: "warning",
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: "#ff3860",
|
||||||
|
confirmButtonText: "Yes, delete it!",
|
||||||
|
closeOnConfirm: false
|
||||||
|
},
|
||||||
|
function(){
|
||||||
|
|
||||||
|
axios.post('/api/albums/delete', {
|
||||||
|
id: id
|
||||||
|
})
|
||||||
|
.then(function (response) {
|
||||||
|
|
||||||
|
if(response.data.success === false){
|
||||||
|
if(response.data.description === 'not-authorized') return panel.verifyToken(panel.token);
|
||||||
|
else return swal("An error ocurred", response.data.description, "error");
|
||||||
|
}
|
||||||
|
|
||||||
|
swal("Deleted!", "Your album has been deleted.", "success");
|
||||||
|
panel.getAlbumsSidebar();
|
||||||
|
panel.getAlbums();
|
||||||
|
return;
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(function (error) {
|
||||||
|
return swal("An error ocurred", 'There was an error with the request, please check the console for more information.', "error");
|
||||||
|
console.log(error);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
panel.submitAlbum = function(){
|
panel.submitAlbum = function(){
|
||||||
|
|
||||||
axios.post('/api/albums', {
|
axios.post('/api/albums', {
|
||||||
|
@ -13,12 +13,15 @@ routes.get ('/check', (req, res, next) => {
|
|||||||
|
|
||||||
routes.get ('/uploads', (req, res, next) => uploadController.list(req, res))
|
routes.get ('/uploads', (req, res, next) => uploadController.list(req, res))
|
||||||
routes.post ('/upload', (req, res, next) => uploadController.upload(req, res, next))
|
routes.post ('/upload', (req, res, next) => uploadController.upload(req, res, next))
|
||||||
|
routes.post ('/upload/delete', (req, res, next) => uploadController.delete(req, res, next))
|
||||||
routes.post ('/upload/:albumid', (req, res, next) => uploadController.upload(req, res, next))
|
routes.post ('/upload/:albumid', (req, res, next) => uploadController.upload(req, res, next))
|
||||||
|
|
||||||
routes.get ('/album/:id', (req, res, next) => uploadController.list(req, res, next))
|
routes.get ('/album/:id', (req, res, next) => uploadController.list(req, res, next))
|
||||||
routes.get ('/albums', (req, res, next) => albumsController.list(req, res, next))
|
routes.get ('/albums', (req, res, next) => albumsController.list(req, res, next))
|
||||||
routes.get ('/albums/:sidebar', (req, res, next) => albumsController.list(req, res, next))
|
routes.get ('/albums/:sidebar', (req, res, next) => albumsController.list(req, res, next))
|
||||||
routes.post ('/albums', (req, res, next) => albumsController.create(req, res, next))
|
routes.post ('/albums', (req, res, next) => albumsController.create(req, res, next))
|
||||||
|
routes.post ('/albums/delete', (req, res, next) => albumsController.delete(req, res, next))
|
||||||
|
routes.post ('/albums/rename', (req, res, next) => albumsController.rename(req, res, next))
|
||||||
routes.get ('/albums/test', (req, res, next) => albumsController.test(req, res, next))
|
routes.get ('/albums/test', (req, res, next) => albumsController.test(req, res, next))
|
||||||
|
|
||||||
routes.get ('/tokens', (req, res, next) => tokenController.list(req, res))
|
routes.get ('/tokens', (req, res, next) => tokenController.list(req, res))
|
||||||
|
Loading…
Reference in New Issue
Block a user