diff --git a/dashboard/src/components/MailRelaySettingsItem.vue b/dashboard/src/components/MailRelaySettingsItem.vue new file mode 100644 index 000000000..4c61764f9 --- /dev/null +++ b/dashboard/src/components/MailRelaySettingsItem.vue @@ -0,0 +1,194 @@ + + + diff --git a/dashboard/src/models/MailModel.js b/dashboard/src/models/MailModel.js index efdb55fc0..3c9693bdd 100644 --- a/dashboard/src/models/MailModel.js +++ b/dashboard/src/models/MailModel.js @@ -314,6 +314,17 @@ function create() { if (result.status !== 200) return [result]; return [null, result.body.eventlogs]; }, + async setMailRelay(domain, data) { + let result; + try { + result = await fetcher.post(`${API_ORIGIN}/api/v1/mail/${domain}/relay`, data, { access_token: accessToken }); + } catch (e) { + return [e]; + } + + if (result.status !== 202) return [result]; + return [null]; + }, }; } diff --git a/dashboard/src/views/EmailDomainView.vue b/dashboard/src/views/EmailDomainView.vue index 0d1130135..602ab31fc 100644 --- a/dashboard/src/views/EmailDomainView.vue +++ b/dashboard/src/views/EmailDomainView.vue @@ -9,6 +9,7 @@ import { Button, Checkbox, InputDialog, Dialog, FormGroup, Switch } from 'pankow import Section from '../components/Section.vue'; import SettingsItem from '../components/SettingsItem.vue'; import CatchAllSettingsItem from '../components/CatchAllSettingsItem.vue'; +import MailRelaySettingsItem from '../components/MailRelaySettingsItem.vue'; import MailDomainStatus from '../components/MailDomainStatus.vue'; import DashboardModel from '../models/DashboardModel.js'; import DomainsModel from '../models/DomainsModel.js'; @@ -245,6 +246,8 @@ onMounted(async () => { + +