Software: Apache. PHP/8.1.30 uname -a: Linux server1.tuhinhossain.com 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root) Safe-mode: OFF (not secure) /home/picotech/domains/rentals.picotech.app/public_html/server/routes/ drwxr-xr-x | |
| Viewing file: Select action/file-type: import express from 'express';
import { Settings } from '../models/index.js';
import upload from '../middleware/upload.js';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { settingsValidators } from '../middleware/validators.js';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const router = express.Router();
// Get all settings
router.get('/', async (req, res) => {
try {
const settings = await Settings.findAll();
res.json(settings);
} catch (err) {
res.status(500).json({ error: 'Failed to fetch settings' });
}
});
// Define upload fields (logo, favicon, etc.)
const uploadFields = upload.fields([
{ name: 'logo', maxCount: 1 },
{ name: 'favicon', maxCount: 1 },
{ name: 'loginbg', maxCount: 1 },
{ name: 'homeBannerimage', maxCount: 1 },
]);
router.post('/', uploadFields, settingsValidators.update, async (req, res) => {
try {
const settingsData = req.body;
// Handle file uploads
if (req.files?.logo?.[0]) {
const file = req.files.logo[0];
// Check if setting already exists
const existingLogoSetting = await Settings.findOne({ where: { name: 'logo' } });
if (existingLogoSetting && existingLogoSetting.value) {
const oldPath = path.join(__dirname, '../../uploads', existingLogoSetting.value.replace('/uploads/', '')) // Replace with actual root
if (fs.existsSync(oldPath)) {
fs.unlinkSync(oldPath);
}
}
settingsData.logo = `/uploads/${file.filename}`;
}
if (req.files?.favicon?.[0]) {
const file = req.files.favicon[0];
const existingFaviconSetting = await Settings.findOne({ where: { name: 'favicon' } });
if (existingFaviconSetting && existingFaviconSetting.value) {
const oldPath = path.join(__dirname, '../../uploads', existingFaviconSetting.value.replace('/uploads/', '')) // Replace with actual root
if (fs.existsSync(oldPath)) {
fs.unlinkSync(oldPath);
}
}
settingsData.favicon = `/uploads/${file.filename}`;
}
if (req.files?.loginbg?.[0]) {
const file = req.files.loginbg[0];
const existingloginbgSetting = await Settings.findOne({ where: { name: 'loginbg' } });
if (existingloginbgSetting && existingloginbgSetting.value) {
const oldPath = path.join(__dirname, '../../uploads', existingloginbgSetting.value.replace('/uploads/', '')) // Replace with actual root
if (fs.existsSync(oldPath)) {
fs.unlinkSync(oldPath);
}
}
settingsData.loginbg = `/uploads/${file.filename}`;
}
if (req.files?.homeBannerimage?.[0]) {
const file = req.files.homeBannerimage[0];
const existingImageSetting = await Settings.findOne({ where: { name: 'homeBannerimage' } });
if (existingImageSetting && existingImageSetting.value) {
const oldPath = path.join(__dirname, '../../uploads', existingImageSetting.value.replace('/uploads/', ''));
if (fs.existsSync(oldPath)) {
fs.unlinkSync(oldPath);
}
}
settingsData.homeBannerimage = `/uploads/documents/${file.filename}`;
}
// Save each setting
const entries = Object.entries(settingsData);
const results = [];
for (const [name, value] of entries) {
await Settings.upsert({ name, value });
results.push({ name, value });
}
res.status(201).json(results);
} catch (err) {
console.error('Settings error:', err);
res.status(400).json({ error: err.message });
}
});
export default router;
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0044 ]-- |