All checks were successful
continuous-integration/drone/push Build is passing
We would like to apologize for the inconvenience caused and we would like to thank you for the quick report.
170 lines
5.1 KiB
JavaScript
170 lines
5.1 KiB
JavaScript
const express = require('express');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const router = express.Router();
|
|
const fileUpload = require('express-fileupload');
|
|
const authMiddleware = require('../../../Middlewares/authMiddleware');
|
|
const { loggers } = require('winston');
|
|
const ncp = require('ncp').ncp;
|
|
const configFile = fs.readFileSync(path.join(__dirname, '../../../data', 'setup.json'), 'utf-8')
|
|
const config = JSON.parse(configFile);
|
|
const bodyParser = require('body-parser');
|
|
const crypto = require('crypto');
|
|
const os = require('os');
|
|
const { getUserData, getSetupData } = require('../../../Middlewares/watcherMiddleware');
|
|
const { logger, logRequestInfo, ErrorLogger, authLogger } = require('../../../config/logs');
|
|
|
|
let setupData = getSetupData();
|
|
let userData = getUserData();
|
|
router.use(bodyParser.json());
|
|
|
|
/**
|
|
* @swagger
|
|
* /dashboard/newfolder?token={token}:
|
|
* post:
|
|
* security:
|
|
* - bearerAuth: []
|
|
* tags:
|
|
* - Folder
|
|
* summary: Create a new folder
|
|
* description: This route allows you to create a new folder. It requires a valid JWT token in the Authorization header.
|
|
* requestBody:
|
|
* required: true
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* folderName:
|
|
* type: string
|
|
* description: The name of the new folder
|
|
* parameters:
|
|
* - in: header
|
|
* name: Authorization
|
|
* required: true
|
|
* schema:
|
|
* type: string
|
|
* description: The JWT token of your account to have access
|
|
* responses:
|
|
* 200:
|
|
* description: Success
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* message:
|
|
* type: string
|
|
* 400:
|
|
* description: Bad Request
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* message:
|
|
* type: string
|
|
* 401:
|
|
* description: Unauthorized
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* message:
|
|
* type: string
|
|
* 500:
|
|
* description: Error creating the folder
|
|
* content:
|
|
* application/json:
|
|
* schema:
|
|
* type: object
|
|
* properties:
|
|
* message:
|
|
* type: string
|
|
* error:
|
|
* type: string
|
|
*/
|
|
|
|
function authenticateToken(req, res, next) {
|
|
authMiddleware(req, res, function(err) {
|
|
if (!err) {
|
|
return next();
|
|
}
|
|
|
|
let token = null;
|
|
const authHeader = req.headers['authorization'];
|
|
|
|
if (authHeader) {
|
|
token = authHeader.split(' ')[1];
|
|
} else if (req.query.token) {
|
|
token = req.query.token;
|
|
}
|
|
|
|
if (token == null) {
|
|
return res.status(401).json({ message: 'Unauthorized' });
|
|
}
|
|
|
|
fs.readFile(path.join(__dirname, '../../../data', 'user.jso,'), 'utf8', (err, data) => {
|
|
if (err) {
|
|
console.error('Error reading user.json:', err);
|
|
return res.status(401).json({ message: 'Unauthorized' });
|
|
}
|
|
|
|
const users = JSON.parse(data);
|
|
|
|
const user = users.find(u => u.token === token);
|
|
|
|
if (user) {
|
|
req.user = user;
|
|
req.userData = user;
|
|
next();
|
|
} else {
|
|
return res.status(401).json({ message: 'Unauthorized' });
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
router.get('/', (req, res) => {
|
|
res.status(400).json({ error: 'Bad Request. The request cannot be fulfilled due to bad syntax or missing parameters.' });
|
|
});
|
|
|
|
router.post('/', authenticateToken, (req, res) => {
|
|
try {
|
|
|
|
const userId = req.user.name;
|
|
let { folderName } = req.body;
|
|
|
|
|
|
if (!folderName || typeof folderName !== 'string') {
|
|
ErrorLogger.error('Invalid folderName:', folderName);
|
|
return res.status(400).json({ message: 'Folder name cannot be empty.' });
|
|
}
|
|
|
|
folderName = path.basename(folderName.trim());
|
|
|
|
if (!folderName) {
|
|
return res.status(400).json({ message: 'Folder name cannot be empty.' });
|
|
}
|
|
|
|
const folderPath = path.join('cdn-files', userId, folderName);
|
|
|
|
if (fs.existsSync(folderPath)) {
|
|
return res.status(400).json({ message: 'Folder already exists.' });
|
|
}
|
|
|
|
fs.mkdir(folderPath, (err) => {
|
|
if (err) {
|
|
ErrorLogger.error(err);
|
|
return res.status(500).json({ message: 'Error creating folder.', error: err });
|
|
}
|
|
res.status(200).json({ message: 'Folder created successfully.' });
|
|
});
|
|
} catch (error) {
|
|
ErrorLogger.error('Error creating folder:', error);
|
|
return res.status(500).json({ message: 'Error creating folder.', error: error });
|
|
}
|
|
});
|
|
|
|
module.exports = router; |