diff --git a/UI/Templates/PreferencesUI/UIxPreferences.wox b/UI/Templates/PreferencesUI/UIxPreferences.wox
index 174734382..68910641d 100644
--- a/UI/Templates/PreferencesUI/UIxPreferences.wox
+++ b/UI/Templates/PreferencesUI/UIxPreferences.wox
@@ -17,6 +17,7 @@
var mailCustomFromEnabled = ;
var timeZonesList = ;
var defaultEmailAddresses = '';
+ var forwardConstraints = ;
-
diff --git a/UI/WebServerResources/js/Preferences/PreferencesController.js b/UI/WebServerResources/js/Preferences/PreferencesController.js
index 56cbb7af3..64947cf7f 100644
--- a/UI/WebServerResources/js/Preferences/PreferencesController.js
+++ b/UI/WebServerResources/js/Preferences/PreferencesController.js
@@ -7,8 +7,8 @@
/**
* @ngInject
*/
- PreferencesController.$inject = ['$state', '$mdDialog', 'User', 'Mailbox', 'statePreferences', 'Authentication'];
- function PreferencesController($state, $mdDialog, User, Mailbox, statePreferences, Authentication) {
+ PreferencesController.$inject = ['$state', '$mdDialog', 'Dialog', 'User', 'Mailbox', 'statePreferences', 'Authentication'];
+ function PreferencesController($state, $mdDialog, Dialog, User, Mailbox, statePreferences, Authentication) {
var vm = this;
vm.preferences = statePreferences;
@@ -174,7 +174,43 @@
}
function save() {
- vm.preferences.$save();
+ var sendForm = true;
+
+ // We do some sanity checks
+ if (window.forwardConstraints > 0 &&
+ angular.isDefined(vm.preferences.defaults.Forward) &&
+ vm.preferences.defaults.Forward.enabled &&
+ angular.isDefined(vm.preferences.defaults.Forward.forwardAddress)) {
+
+ var addresses = vm.preferences.defaults.Forward.forwardAddress.split(",");
+
+ // We first extract the list of 'known domains' to SOGo
+ var defaultAddresses = window.defaultEmailAddresses.split(/, */);
+ var domains = [];
+
+ _.forEach(defaultAddresses, function(adr) {
+ var domain = adr.split("@")[1];
+ if (domain) {
+ domains.push(domain.toLowerCase());
+ }
+ });
+
+ // We check if we're allowed or not to forward based on the domain defaults
+ for (var i = 0; i < addresses.length && sendForm; i++) {
+ var domain = addresses[i].split("@")[1].toLowerCase();
+ if (domains.indexOf(domain) < 0 && window.forwardConstraints == 1) {
+ Dialog.alert(l('Error'), l("You are not allowed to forward your messages to an external email address."));
+ sendForm = false;
+ }
+ else if (domains.indexOf(domain) >= 0 && window.forwardConstraints == 2) {
+ Dialog.alert(l('Error'), l("You are not allowed to forward your messages to an internal email address."));
+ sendForm = false;
+ }
+ }
+ }
+
+ if (sendForm)
+ vm.preferences.$save();
}
function canChangePassword() {