mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-06 05:59:25 +08:00
chore(enviroment-variables): validateTexts api
This commit is contained in:
parent
e29f9fa39e
commit
24cc2d49df
@ -51,7 +51,53 @@ export class PluginEnvironmentVariablesServer extends Plugin {
|
|||||||
return items.map(({ name, type }) => ({ name, type }));
|
return items.map(({ name, type }) => ({ name, type }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public validateTexts(texts: Array<{ text: string; secret: boolean }>) {
|
||||||
|
if (!Array.isArray(texts)) {
|
||||||
|
throw new Error('texts parameter must be an array');
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const item of texts) {
|
||||||
|
if (!item || typeof item !== 'object') {
|
||||||
|
throw new Error('Each item in texts must be an object');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof item.text !== 'string' || !item.text.trim()) {
|
||||||
|
throw new Error('text property must be a non-empty string');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof item.secret !== 'boolean') {
|
||||||
|
throw new Error('secret property must be a boolean');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check each line for empty values
|
||||||
|
const lines = item.text
|
||||||
|
.split('\n')
|
||||||
|
.map((line) => line.trim())
|
||||||
|
.filter((line) => line && !line.startsWith('#'));
|
||||||
|
|
||||||
|
for (const line of lines) {
|
||||||
|
const equalIndex = line.indexOf('=');
|
||||||
|
if (equalIndex === -1) {
|
||||||
|
throw new Error(`Invalid environment variable format: ${line}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const key = line.slice(0, equalIndex).trim();
|
||||||
|
const value = line.slice(equalIndex + 1).trim();
|
||||||
|
|
||||||
|
if (!key) {
|
||||||
|
throw new Error(`Environment variable name cannot be empty`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!value) {
|
||||||
|
throw new Error(`Environment variable "${key}" must have a value`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async setEnvironmentVariablesByText(texts: Array<{ text: string; secret: boolean }>) {
|
async setEnvironmentVariablesByText(texts: Array<{ text: string; secret: boolean }>) {
|
||||||
|
this.validateTexts(texts);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
text format:
|
text format:
|
||||||
KEY1=VALUE1
|
KEY1=VALUE1
|
||||||
@ -79,11 +125,15 @@ export class PluginEnvironmentVariablesServer extends Plugin {
|
|||||||
const key = line.slice(0, equalIndex).trim();
|
const key = line.slice(0, equalIndex).trim();
|
||||||
const value = line.slice(equalIndex + 1).trim();
|
const value = line.slice(equalIndex + 1).trim();
|
||||||
|
|
||||||
if (!key || !value) {
|
if (!key) {
|
||||||
this.app.log.warn(`Empty key or value found: ${line}`);
|
this.app.log.warn(`Empty key found: ${line}`);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!value) {
|
||||||
|
throw new Error(`Empty value is not allowed for key: ${key}`);
|
||||||
|
}
|
||||||
|
|
||||||
await repository.create({
|
await repository.create({
|
||||||
values: {
|
values: {
|
||||||
name: key,
|
name: key,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user