Хранение паролей и ключей авторизации за пределами БД
Здравствуйте,
Подскажите пожалуйста, как лучше хранить учетные записи, ключи и другие настройки вне базы данных (таблица 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()));
Комментарии: 3
Я бы посоветовал посмотреть, как это реализовано в компоненте ClientConfig, он решает похожую задачу: хранит свои настройки не в таблице modx_system_settings, а в другом месте (в своей таблице).
В частности посмотри код плагина.
В частности посмотри код плагина.
Попробуйте метод
$modx->setOption();
Благодарю всех за ответы.
Действительно в ClientConfig используется setOption для переопределения системных параметров. Правда он вызывается довольно часто, каждый раз при инициализации modx. К сожалению другого метода не нашел. Думал через кеш решить этот вопрос, но секюрные данные хранить в кеше не хорошо, а установка и сохранение системных настроек приводит к появлению их в БД
Действительно в ClientConfig используется setOption для переопределения системных параметров. Правда он вызывается довольно часто, каждый раз при инициализации modx. К сожалению другого метода не нашел. Думал через кеш решить этот вопрос, но секюрные данные хранить в кеше не хорошо, а установка и сохранение системных настроек приводит к появлению их в БД
$setting = $modx->getObject('modSystemSetting', 'mail_smtp_pass');
$setting->set('value', $_ENV['RB_SMTP_KEY']);
$setting->save();
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.