153 lines
4.4 KiB
JavaScript
Executable File
153 lines
4.4 KiB
JavaScript
Executable File
const fs = require( 'fs-extra' );
|
|
const path = require( 'path' );
|
|
const formidable = require( 'formidable' );
|
|
const jsonfile = require( 'jsonfile' );
|
|
const mustache = require( 'mustache' );
|
|
const config = require( '../tribes/townconf.js' );
|
|
|
|
/*
|
|
model A SUPPRIMER !!!!!!!!!!!!!!!!!!!!!!
|
|
les functions d'upload de file et de droits d'accès doivent être gérer dans Tribes
|
|
|
|
*/
|
|
const UploadFiles = {};
|
|
UploadFiles.get = function ( filename, header ) {
|
|
// check file exist
|
|
const file = `${config.tribes}/${header.xworkon}/${filename}`;
|
|
// logger.info('fichier demande ', file);
|
|
if( !fs.existsSync( file ) ) {
|
|
// logger.info('le fichier demande n existe pas ', file);
|
|
return {
|
|
status: 404,
|
|
payload: { info: [ 'fileUnknown' ], model: 'UploadFiles' }
|
|
};
|
|
} else {
|
|
logger.info( 'envoie le fichier ', file );
|
|
return {
|
|
status: 200,
|
|
payload: { info: [ 'fileknown' ], model: 'UploadFiles', file: file }
|
|
};
|
|
}
|
|
};
|
|
UploadFiles.addjson = function ( data, header ) {
|
|
/*
|
|
Le header = {X-WorkOn:"",destinationfile:"", filename:""}
|
|
Le body = {jsonp:{},callback:function to launch after download,'code':'mot cle pour verifier que le fichier est à garder'}
|
|
*/
|
|
// logger.info(req.body.jsonp);
|
|
try {
|
|
jsonfile.writeFileSync( header.destinationfile + '/' + header.filename, data.jsonp );
|
|
if( data.callback ) {
|
|
const execCB = require( `${config.mainDir}/models/tribeid/${
|
|
header.xworkon
|
|
}` );
|
|
execCB[ data.callback ]();
|
|
}
|
|
return {
|
|
status: 200,
|
|
payload: {
|
|
info: [ 'wellUpload' ],
|
|
model: 'UploadFiles',
|
|
render: {
|
|
destination: header.destinationfile,
|
|
filename: header.filename
|
|
}
|
|
}
|
|
};
|
|
} catch ( err ) {
|
|
logger.info( 'Impossible de sauvegarder le fichier, A COMPRENDRE', err );
|
|
return {
|
|
status: 503,
|
|
payload: { info: [ 'savingError' ], model: 'UploadFiles' }
|
|
};
|
|
}
|
|
};
|
|
UploadFiles.add = function ( req, header ) {
|
|
const form = new formidable.IncomingForm();
|
|
logger.info( 'req.headers', req.headers );
|
|
logger.info( 'req.params', req.params );
|
|
logger.info( 'req.query', req.query );
|
|
logger.info( 'req.body', req.body );
|
|
let destinationfile = `${config.tribes}/${header.xworkon}/${
|
|
header.destinationfile
|
|
}`;
|
|
form.parse( req, function ( err, fields, files ) {
|
|
logger.info( 'files', files.file.path );
|
|
logger.info( 'fields', fields );
|
|
const oldpath = files.file.path;
|
|
destinationfile += '/' + files.file.name;
|
|
logger.info( 'oldpath', oldpath );
|
|
logger.info( 'destinationfile', destinationfile );
|
|
fs.copyFile( oldpath, destinationfile, function ( err ) {
|
|
if( err ) {
|
|
logger.info( err );
|
|
return {
|
|
status: 500,
|
|
payload: { info: [ 'savingError' ], model: 'UploadFiles' }
|
|
};
|
|
} else {
|
|
logger.info( 'passe' );
|
|
fs.unlink( oldpath );
|
|
return {
|
|
status: 200,
|
|
payload: {
|
|
info: [ 'wellUpload' ],
|
|
model: 'UploadFiles',
|
|
render: {
|
|
destination: destinationfile
|
|
}
|
|
}
|
|
};
|
|
}
|
|
} );
|
|
} );
|
|
};
|
|
UploadFiles.updateEvent = function ( domainId, eventId, event ) {
|
|
// checkAndCreateNeededDirectories(domainId);
|
|
const eventsFile = `${config.tribes}/${domainId}/actions/events/events.json`;
|
|
if( !fs.existsSync( eventsFile ) ) {
|
|
jsonfile.writeFileSync( eventsFile, {} );
|
|
return { status: 404, payload: 'You have not any events.' };
|
|
}
|
|
const events = jsonfile.readFileSync( eventsFile );
|
|
if( !events.hasOwnProperty( eventId ) ) {
|
|
return {
|
|
status: 404,
|
|
payload: 'The event you are trying to update does not exist.'
|
|
};
|
|
}
|
|
events[ eventId ] = {
|
|
eventName: event.eventName,
|
|
eventDate: event.eventDate,
|
|
eventDescription: event.eventDescription
|
|
};
|
|
jsonfile.writeFileSync( eventsFile, events, { spaces: 2 } );
|
|
return {
|
|
status: 200,
|
|
payload: events
|
|
};
|
|
};
|
|
UploadFiles.deleteEvent = function ( domainId, eventId ) {
|
|
// checkAndCreateNeededDirectories(domainId);
|
|
const eventsFile = `${config.tribes}/${domainId}/actions/events/events.json`;
|
|
if( !fs.existsSync( eventsFile ) ) {
|
|
jsonfile.writeFileSync( eventsFile, {} );
|
|
return { status: 404, payload: 'You have not any events.' };
|
|
}
|
|
const events = jsonfile.readFileSync( eventsFile );
|
|
if( events.hasOwnProperty( eventId ) ) {
|
|
delete events[ eventId ];
|
|
jsonfile.writeFileSync( eventsFile, events, { spaces: 2 } );
|
|
return {
|
|
status: 200,
|
|
payload: events
|
|
};
|
|
} else {
|
|
return {
|
|
status: 404,
|
|
payload: 'The event you are trying to delete does not exist.'
|
|
};
|
|
}
|
|
};
|
|
module.exports = UploadFiles;
|