secondaryDomains are always required
they can still become empty after an update but install and change_location requires them part of #809
This commit is contained in:
27
src/apps.js
27
src/apps.js
@@ -275,6 +275,10 @@ function validateSecondaryDomains(secondaryDomains, manifest) {
|
||||
|
||||
const httpPorts = manifest.httpPorts || {};
|
||||
|
||||
for (const envName in httpPorts) { // each httpPort is required
|
||||
if (!(envName in secondaryDomains)) return new BoxError(BoxError.BAD_FIELD, `secondaryDomain ${envName} is required`);
|
||||
}
|
||||
|
||||
for (const envName in secondaryDomains) {
|
||||
if (!(envName in httpPorts)) return new BoxError(BoxError.BAD_FIELD, `Invalid secondaryDomain in ${envName}`);
|
||||
}
|
||||
@@ -283,11 +287,11 @@ function validateSecondaryDomains(secondaryDomains, manifest) {
|
||||
}
|
||||
|
||||
function translateSecondaryDomains(secondaryDomains) {
|
||||
assert.strictEqual(typeof secondaryDomains, 'object');
|
||||
assert(secondaryDomains && typeof secondaryDomains === 'object');
|
||||
|
||||
const result = [];
|
||||
for (const envName in secondaryDomains) {
|
||||
result.push([ { domain: secondaryDomains[envName].domain, subdomain: secondaryDomains[envName].subdomain, environmentVariable: envName }]);
|
||||
result.push({ domain: secondaryDomains[envName].domain, subdomain: secondaryDomains[envName].subdomain, environmentVariable: envName });
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -1270,13 +1274,9 @@ async function install(data, auditSource) {
|
||||
error = validateTags(tags);
|
||||
if (error) throw error;
|
||||
|
||||
let secondaryDomains = [];
|
||||
if ('secondaryDomains' in data) {
|
||||
error = validateSecondaryDomains(data.secondaryDomains, manifest);
|
||||
if (error) throw error;
|
||||
|
||||
secondaryDomains = translateSecondaryDomains(data.secondaryDomains);
|
||||
}
|
||||
error = validateSecondaryDomains(data.secondaryDomains || {}, manifest);
|
||||
if (error) throw error;
|
||||
const secondaryDomains = translateSecondaryDomains(data.secondaryDomains || {});
|
||||
|
||||
let sso = 'sso' in data ? data.sso : null;
|
||||
if ('sso' in data && !('optionalSso' in manifest)) throw new BoxError(BoxError.BAD_FIELD, 'sso can only be specified for apps with optionalSso');
|
||||
@@ -1720,12 +1720,9 @@ async function setLocation(app, data, auditSource) {
|
||||
values.mailboxDomain = values.domain;
|
||||
}
|
||||
|
||||
if ('secondaryDomains' in data) {
|
||||
error = validateSecondaryDomains(data.secondaryDomains, app.manifest);
|
||||
if (error) throw error;
|
||||
|
||||
values.secondaryDomains = translateSecondaryDomains(data.secondaryDomains);
|
||||
}
|
||||
error = validateSecondaryDomains(data.secondaryDomains || {}, app.manifest);
|
||||
if (error) throw error;
|
||||
values.secondaryDomains = translateSecondaryDomains(data.secondaryDomains || {});
|
||||
|
||||
if ('redirectDomains' in data) {
|
||||
values.redirectDomains = data.redirectDomains;
|
||||
|
||||
Reference in New Issue
Block a user