Throw on enable if provider credentials are missing instead of ignoring

This commit is contained in:
Jake Barnby
2024-01-24 15:16:19 +13:00
committed by Torsten Dittmann
parent dc1dad9f5f
commit d405106aaa
3 changed files with 118 additions and 97 deletions
+5
View File
@@ -811,6 +811,11 @@ return [
'description' => 'Provider with the requested ID is of the incorrect type.',
'code' => 400,
],
Exception::PROVIDER_MISSING_CREDENTIALS => [
'name' => Exception::PROVIDER_MISSING_CREDENTIALS,
'description' => 'Provider with the requested ID is missing credentials.',
'code' => 400,
],
/** Topics */
Exception::TOPIC_NOT_FOUND => [
+112 -96
View File
@@ -917,9 +917,10 @@ App::patch('/v1/messaging/providers/mailgun/:providerId')
if ($provider->isEmpty()) {
throw new Exception(Exception::PROVIDER_NOT_FOUND);
}
$providerAttr = $provider->getAttribute('provider');
if ($providerAttr !== 'mailgun') {
$providerProvider = $provider->getAttribute('provider');
if ($providerProvider !== 'mailgun') {
throw new Exception(Exception::PROVIDER_INCORRECT_TYPE);
}
@@ -949,7 +950,7 @@ App::patch('/v1/messaging/providers/mailgun/:providerId')
$credentials = $provider->getAttribute('credentials');
if ($isEuRegion === true || $isEuRegion === false) {
if (!\is_null($isEuRegion)) {
$credentials['isEuRegion'] = $isEuRegion;
}
@@ -963,19 +964,21 @@ App::patch('/v1/messaging/providers/mailgun/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true &&
\array_key_exists('isEuRegion', $credentials) &&
\array_key_exists('apiKey', $credentials) &&
\array_key_exists('domain', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('isEuRegion', $credentials) &&
\array_key_exists('apiKey', $credentials) &&
\array_key_exists('domain', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1054,17 +1057,19 @@ App::patch('/v1/messaging/providers/sendgrid/:providerId')
]);
}
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('apiKey', $provider->getAttribute('credentials'))
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('apiKey', $provider->getAttribute('credentials')) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1133,18 +1138,20 @@ App::patch('/v1/messaging/providers/msg91/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('senderId', $credentials)
&& \array_key_exists('authKey', $credentials)
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('senderId', $credentials) &&
\array_key_exists('authKey', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1213,19 +1220,20 @@ App::patch('/v1/messaging/providers/telesign/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('username', $credentials)
&& \array_key_exists('password', $credentials)
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('username', $credentials) &&
\array_key_exists('password', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1294,19 +1302,20 @@ App::patch('/v1/messaging/providers/textmagic/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('username', $credentials)
&& \array_key_exists('apiKey', $credentials)
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('username', $credentials) &&
\array_key_exists('apiKey', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1375,19 +1384,20 @@ App::patch('/v1/messaging/providers/twilio/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('accountSid', $credentials)
&& \array_key_exists('authToken', $credentials)
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('accountSid', $credentials) &&
\array_key_exists('authToken', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1456,19 +1466,20 @@ App::patch('/v1/messaging/providers/vonage/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('apiKey', $credentials)
&& \array_key_exists('apiSecret', $credentials)
&& \array_key_exists('from', $provider->getAttribute('options'))
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('apiKey', $credentials) &&
\array_key_exists('apiSecret', $credentials) &&
\array_key_exists('from', $provider->getAttribute('options'))
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1518,17 +1529,21 @@ App::patch('/v1/messaging/providers/fcm/:providerId')
}
if (!\is_null($serviceAccountJSON)) {
$provider->setAttribute('credentials', ['serviceAccountJSON' => $serviceAccountJSON]);
$provider->setAttribute('credentials', [
'serviceAccountJSON' => $serviceAccountJSON
]);
}
if ($enabled === true || $enabled === false) {
if ($enabled === true && \array_key_exists('serviceAccountJSON', $provider->getAttribute('credentials'))) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (\array_key_exists('serviceAccountJSON', $provider->getAttribute('credentials'))) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
@@ -1601,20 +1616,21 @@ App::patch('/v1/messaging/providers/apns/:providerId')
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
if (
$enabled === true
&& \array_key_exists('authKey', $credentials)
&& \array_key_exists('authKeyId', $credentials)
&& \array_key_exists('teamId', $credentials)
&& \array_key_exists('bundleId', $credentials)
) {
$enabled = true;
if (!\is_null($enabled)) {
if ($enabled) {
if (
\array_key_exists('authKey', $credentials) &&
\array_key_exists('authKeyId', $credentials) &&
\array_key_exists('teamId', $credentials) &&
\array_key_exists('bundleId', $credentials)
) {
$provider->setAttribute('enabled', true);
} else {
throw new Exception(Exception::PROVIDER_MISSING_CREDENTIALS);
}
} else {
$enabled = false;
$provider->setAttribute('enabled', false);
}
$provider->setAttribute('enabled', $enabled);
}
$provider = $dbForProject->updateDocument('providers', $provider->getId(), $provider);
+1 -1
View File
@@ -244,7 +244,7 @@ class Exception extends \Exception
public const PROVIDER_NOT_FOUND = 'provider_not_found';
public const PROVIDER_ALREADY_EXISTS = 'provider_already_exists';
public const PROVIDER_INCORRECT_TYPE = 'provider_incorrect_type';
public const PROVIDER_INTERNAL_UPDATE_DISABLED = 'provider_internal_update_disabled';
public const PROVIDER_MISSING_CREDENTIALS = 'provider_missing_credentials';
/** Topic */
public const TOPIC_NOT_FOUND = 'topic_not_found';