From e3abc042a8a2e8c77e6ddb282368e0f7511f5e27 Mon Sep 17 00:00:00 2001 From: Felipe Nakandakari <76239+fenak@users.noreply.github.com> Date: Mon, 27 Feb 2023 12:58:18 +1100 Subject: [PATCH] Use credentials array only if values passed via conf.php --- lib/Data/S3Storage.php | 51 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/lib/Data/S3Storage.php b/lib/Data/S3Storage.php index 4411c97b..6761bbbb 100644 --- a/lib/Data/S3Storage.php +++ b/lib/Data/S3Storage.php @@ -82,31 +82,32 @@ class S3Storage extends AbstractData */ public function __construct(array $options) { - $this->_options['credentials'] = array(); - - if (is_array($options) && array_key_exists('region', $options)) { - $this->_options['region'] = $options['region']; - } - if (is_array($options) && array_key_exists('version', $options)) { - $this->_options['version'] = $options['version']; - } - if (is_array($options) && array_key_exists('endpoint', $options)) { - $this->_options['endpoint'] = $options['endpoint']; - } - if (is_array($options) && array_key_exists('accesskey', $options)) { - $this->_options['credentials']['key'] = $options['accesskey']; - } - if (is_array($options) && array_key_exists('secretkey', $options)) { - $this->_options['credentials']['secret'] = $options['secretkey']; - } - if (is_array($options) && array_key_exists('use_path_style_endpoint', $options)) { - $this->_options['use_path_style_endpoint'] = filter_var($options['use_path_style_endpoint'], FILTER_VALIDATE_BOOLEAN); - } - if (is_array($options) && array_key_exists('bucket', $options)) { - $this->_bucket = $options['bucket']; - } - if (is_array($options) && array_key_exists('prefix', $options)) { - $this->_prefix = $options['prefix']; + if (is_array($options)) { + // AWS SDK will try to load credentials from environment if credentials are not passed via configuration + // ref: https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain + if (isset($options['accesskey']) && isset($options['secretkey'])) { + $this->_options['credentials'] = array(); + $this->_options['credentials']['key'] = $options['accesskey']; + $this->_options['credentials']['secret'] = $options['secretkey']; + } + if (array_key_exists('region', $options)) { + $this->_options['region'] = $options['region']; + } + if (array_key_exists('version', $options)) { + $this->_options['version'] = $options['version']; + } + if (array_key_exists('endpoint', $options)) { + $this->_options['endpoint'] = $options['endpoint']; + } + if (array_key_exists('use_path_style_endpoint', $options)) { + $this->_options['use_path_style_endpoint'] = filter_var($options['use_path_style_endpoint'], FILTER_VALIDATE_BOOLEAN); + } + if (array_key_exists('bucket', $options)) { + $this->_bucket = $options['bucket']; + } + if (array_key_exists('prefix', $options)) { + $this->_prefix = $options['prefix']; + } } $this->_client = new S3Client($this->_options);