Fix relay UI password display

This commit is contained in:
Girish Ramakrishnan
2025-06-27 12:59:44 +02:00
parent 565859b2aa
commit 4e54e4c22a
2 changed files with 15 additions and 8 deletions

View File

@@ -39,7 +39,7 @@ const adminDomain = ref('');
const provider = ref('cloudron-smtp'); const provider = ref('cloudron-smtp');
const host = ref(''); const host = ref('');
const port = ref(1); const port = ref(1);
const acceptSelfSignedCerts = ref(true); const acceptSelfSignedCerts = ref(false);
const serverApiToken = ref(''); const serverApiToken = ref('');
const username = ref(''); const username = ref('');
const password = ref(''); const password = ref('');
@@ -64,6 +64,15 @@ function usesPasswordAuth(provider) {
} }
function onProviderChange() { function onProviderChange() {
// reset the form
host.value = '';
port.value = 587;
acceptSelfSignedCerts.value = false;
serverApiToken.value = '';
username.value = '';
password.value = '';
// prefill from preset
const tmp = providers.find(p => p.provider === provider.value); const tmp = providers.find(p => p.provider === provider.value);
if (!tmp) return; if (!tmp) return;
@@ -182,7 +191,7 @@ async function onSubmit() {
<FormGroup v-if="usesPasswordAuth(provider)"> <FormGroup v-if="usesPasswordAuth(provider)">
<label for="passwordInput">{{ $t('email.outbound.mailRelay.password') }}</label> <label for="passwordInput">{{ $t('email.outbound.mailRelay.password') }}</label>
<PasswordInput id="passwordInput" v-model="password" required /> <TextInput id="passwordInput" v-model="password" required />
</FormGroup> </FormGroup>
</fieldset> </fieldset>
</form> </form>

View File

@@ -791,8 +791,8 @@ async function clearDomains() {
// remove all fields that should never be sent out via REST API // remove all fields that should never be sent out via REST API
function removePrivateFields(domain) { function removePrivateFields(domain) {
const result = _.pick(domain, ['domain', 'enabled', 'mailFromValidation', 'catchAll', 'relay', 'banner']); const result = _.pick(domain, ['domain', 'enabled', 'mailFromValidation', 'catchAll', 'relay', 'banner']);
if (result.relay.provider !== 'cloudron-smtp') { if ('password' in result.relay) {
if (result.relay.username === result.relay.password) result.relay.username = constants.SECRET_PLACEHOLDER; if ('username' in result.relay && result.relay.username === result.relay.password) result.relay.username = constants.SECRET_PLACEHOLDER;
result.relay.password = constants.SECRET_PLACEHOLDER; result.relay.password = constants.SECRET_PLACEHOLDER;
} }
return result; return result;
@@ -838,10 +838,8 @@ async function setMailRelay(domain, relay, options) {
if (!domain) throw new BoxError(BoxError.NOT_FOUND, 'Mail domain not found'); if (!domain) throw new BoxError(BoxError.NOT_FOUND, 'Mail domain not found');
// inject current username/password // inject current username/password
if (result.relay.provider === relay.provider) {
if (relay.username === constants.SECRET_PLACEHOLDER) relay.username = result.relay.username; if (relay.username === constants.SECRET_PLACEHOLDER) relay.username = result.relay.username;
if (relay.password === constants.SECRET_PLACEHOLDER) relay.password = result.relay.password; if (relay.password === constants.SECRET_PLACEHOLDER) relay.password = result.relay.password;
}
if (!options.skipVerify) { if (!options.skipVerify) {
const error = await verifyRelay(relay); const error = await verifyRelay(relay);