feat(deploy): add adult verification directory creation and permissions setup
- Enhanced deploy-backend.sh and update-backend.sh to create the adult verification directory under /opt/yourpart-data. - Updated permissions for the new directory to ensure proper access control. - Refactored file path handling in AdminService and SettingsService to utilize the new directory structure for adult verification files.
This commit is contained in:
@@ -34,6 +34,7 @@ import { v4 as uuidv4 } from 'uuid';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { getAdultVerificationBaseDir, getLegacyAdultVerificationBaseDir } from '../utils/storagePaths.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
@@ -46,10 +47,12 @@ class AdminService {
|
||||
|
||||
const candidates = [];
|
||||
if (requestData.fileName) {
|
||||
candidates.push(path.join(__dirname, '..', 'images', 'adult-verification', requestData.fileName));
|
||||
candidates.push(path.join(getAdultVerificationBaseDir(), requestData.fileName));
|
||||
candidates.push(path.join(getLegacyAdultVerificationBaseDir(), requestData.fileName));
|
||||
}
|
||||
if (requestData.storedFileName && requestData.storedFileName !== requestData.fileName) {
|
||||
candidates.push(path.join(__dirname, '..', 'images', 'adult-verification', requestData.storedFileName));
|
||||
candidates.push(path.join(getAdultVerificationBaseDir(), requestData.storedFileName));
|
||||
candidates.push(path.join(getLegacyAdultVerificationBaseDir(), requestData.storedFileName));
|
||||
}
|
||||
if (requestData.filePath) {
|
||||
candidates.push(path.isAbsolute(requestData.filePath)
|
||||
|
||||
@@ -16,6 +16,7 @@ import fsPromises from 'fs/promises';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import { getAdultVerificationBaseDir } from '../utils/storagePaths.js';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
@@ -105,7 +106,7 @@ class SettingsService extends BaseService{
|
||||
}
|
||||
|
||||
buildAdultVerificationFilePath(fileName) {
|
||||
return path.join(__dirname, '..', 'images', 'adult-verification', fileName);
|
||||
return path.join(getAdultVerificationBaseDir(), fileName);
|
||||
}
|
||||
|
||||
async saveAdultVerificationDocument(file) {
|
||||
@@ -513,6 +514,8 @@ class SettingsService extends BaseService{
|
||||
const savedFile = await this.saveAdultVerificationDocument(file);
|
||||
const requestPayload = {
|
||||
fileName: savedFile.fileName,
|
||||
storedFileName: savedFile.fileName,
|
||||
filePath: savedFile.filePath,
|
||||
originalName: file.originalname,
|
||||
mimeType: file.mimetype,
|
||||
note: note || '',
|
||||
|
||||
26
backend/utils/storagePaths.js
Normal file
26
backend/utils/storagePaths.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
function getBackendRoot() {
|
||||
return path.join(__dirname, '..');
|
||||
}
|
||||
|
||||
export function getAdultVerificationBaseDir() {
|
||||
if (process.env.ADULT_VERIFICATION_DIR && process.env.ADULT_VERIFICATION_DIR.trim()) {
|
||||
return process.env.ADULT_VERIFICATION_DIR.trim();
|
||||
}
|
||||
if (process.env.YOURPART_PERSISTENT_DATA_DIR && process.env.YOURPART_PERSISTENT_DATA_DIR.trim()) {
|
||||
return path.join(process.env.YOURPART_PERSISTENT_DATA_DIR.trim(), 'adult-verification');
|
||||
}
|
||||
if (process.env.STAGE === 'production' || process.env.NODE_ENV === 'production') {
|
||||
return '/opt/yourpart-data/adult-verification';
|
||||
}
|
||||
return path.join(getBackendRoot(), 'images', 'adult-verification');
|
||||
}
|
||||
|
||||
export function getLegacyAdultVerificationBaseDir() {
|
||||
return path.join(getBackendRoot(), 'images', 'adult-verification');
|
||||
}
|
||||
Reference in New Issue
Block a user