diff --git a/backend/routes/ipsecPasswordsRoutes.js b/backend/routes/ipsecPasswordsRoutes.js
index 522c8bb..cfcd5e4 100644
--- a/backend/routes/ipsecPasswordsRoutes.js
+++ b/backend/routes/ipsecPasswordsRoutes.js
@@ -137,7 +137,7 @@ async function createIpsecPassword(req, res) {
// Сохраняем в S3
const meta = await writeS3JsonObject(S3_KEY, passwords);
- // Возвращаем без расшифрованного пароля
+ // Возвращаем без расшифрованного пароля, но с ID
res.json({
id: newPassword.id,
name: newPassword.name,
diff --git a/frontend/src/NetworkConfigManager.jsx b/frontend/src/NetworkConfigManager.jsx
index a18cdbb..f1f007f 100644
--- a/frontend/src/NetworkConfigManager.jsx
+++ b/frontend/src/NetworkConfigManager.jsx
@@ -885,13 +885,16 @@ function NetworkConfigManager() {
}
try {
+ let savedPasswordId = null;
if (ipsecPasswordModalMode === 'add') {
- await api.post('/ipsec-passwords', {
+ const response = await api.post('/ipsec-passwords', {
name: editingIpsecPassword.name,
password: editingIpsecPassword.password,
description: editingIpsecPassword.description || ''
});
notify.success('IPSec пароль создан');
+ // Получаем ID созданного пароля из ответа
+ savedPasswordId = response.data?.id || null;
} else {
await api.put(`/ipsec-passwords/${editingIpsecPassword.id}`, {
name: editingIpsecPassword.name,
@@ -899,10 +902,29 @@ function NetworkConfigManager() {
description: editingIpsecPassword.description || ''
});
notify.success('IPSec пароль обновлён');
+ savedPasswordId = editingIpsecPassword.id;
}
+
await fetchIpsecPasswords();
+
+ // Закрываем модал создания/редактирования пароля
setIpsecPasswordModalOpen(false);
setEditingIpsecPassword(null);
+
+ // Если модал списка паролей открыт, закрываем его
+ if (ipsecPasswordsListModalOpen) {
+ setIpsecPasswordsListModalOpen(false);
+ }
+
+ // Если создан новый пароль и открыт шаблон интерфейса, автоматически выбираем его
+ if (savedPasswordId && interfaceTemplateModalOpen && templateType === 'IPSec') {
+ setTemplateIpsecPasswordId(savedPasswordId);
+ }
+
+ // Если создан новый пароль и открыт модал интерфейса с типом IPSec, автоматически выбираем его
+ if (savedPasswordId && interfaceModalOpen && editingInterface?.type === 'IPSec') {
+ setEditingInterface({ ...editingInterface, ipsecPasswordId: savedPasswordId });
+ }
} catch (error) {
console.error('Error saving IPSec password:', error);
notify.error('Не удалось сохранить пароль');
@@ -3136,55 +3158,6 @@ function NetworkConfigManager() {
)}
- {/* IPSec Password Modal */}
-