Хранение паролей и ключей авторизации за пределами БД


Здравствуйте,
Подскажите пожалуйста, как лучше хранить учетные записи, ключи и другие настройки вне базы данных (таблица modx_system_settings)?
Например я хочу отправлять почту через mailgun но пароль хочу хранить с помощью сервиса HashiCorp Vault.
т.е перед инициализацией класса modMail мне нужно переопределить настройки mail_smtp_pass и mail_smtp_user для авторизации на удаленном сервере.
Я пробовал с помощью плагина (событие OnMODXInit), но при таком подходе данные сохраняются в БД. Как можно это сделать без сохранение данных в БД?
Спасибо
$setting = $modx->getObject('modSystemSetting', 'mail_smtp_user');
                $setting->set('value',  $_ENV['RB_SMTP_USER']);
                $setting->save();

                $setting = $modx->getObject('modSystemSetting', 'mail_smtp_pass');
                $setting->set('value',  $_ENV['RB_SMTP_KEY']);
                $setting->save();

                $modx->cacheManager->refresh(array('system_settings' => array()));
Pavel Kravchuk
01 сентября 2023, 22:58
modx.pro
321
0

Комментарии: 3

Наумов Алексей
03 сентября 2023, 13:02
1
0
Я бы посоветовал посмотреть, как это реализовано в компоненте ClientConfig, он решает похожую задачу: хранит свои настройки не в таблице modx_system_settings, а в другом месте (в своей таблице).

В частности посмотри код плагина.
    Николай Савин
    03 сентября 2023, 13:15
    1
    0
    Попробуйте метод
    $modx->setOption();
      Pavel Kravchuk
      03 сентября 2023, 13:36
      0
      Благодарю всех за ответы.
      Действительно в ClientConfig используется setOption для переопределения системных параметров. Правда он вызывается довольно часто, каждый раз при инициализации modx. К сожалению другого метода не нашел. Думал через кеш решить этот вопрос, но секюрные данные хранить в кеше не хорошо, а установка и сохранение системных настроек приводит к появлению их в БД
      $setting = $modx->getObject('modSystemSetting', 'mail_smtp_pass');
                      $setting->set('value',  $_ENV['RB_SMTP_KEY']);
                      $setting->save();
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3