Skip to content

Commit

Permalink
(feat) added support back for SOGoForwardConstraints
Browse files Browse the repository at this point in the history
  • Loading branch information
extrafu committed Aug 18, 2015
1 parent 9d272ae commit 2144d31
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 8 deletions.
6 changes: 1 addition & 5 deletions UI/Templates/PreferencesUI/UIxPreferences.wox
Expand Up @@ -17,6 +17,7 @@
var mailCustomFromEnabled = <var:string value="mailCustomFromEnabled" const:escapeHTML="NO"/>;
var timeZonesList = <var:string value="timeZonesList" const:escapeHTML="NO"/>;
var defaultEmailAddresses = '<var:string value="defaultEmailAddresses" const:escapeHTML="NO"/>';
var forwardConstraints = <var:string value="forwardConstraints" const:escapeHTML="NO"/>;
</script>

<script type="text/ng-template" id="preferences.html">
Expand Down Expand Up @@ -815,11 +816,6 @@
</md-checkbox>

</div>

<script type="text/javascript">
var forwardConstraints = <var:string value="forwardConstraints" const:escapeHTML="NO"/>;
</script>

</div>
</md-tab>
</var:if>
Expand Down
42 changes: 39 additions & 3 deletions UI/WebServerResources/js/Preferences/PreferencesController.js
Expand Up @@ -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;
Expand Down Expand Up @@ -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() {
Expand Down

0 comments on commit 2144d31

Please sign in to comment.