snappymail/dev/Settings/Admin/Security.js

170 lines
4.2 KiB
JavaScript
Raw Normal View History

2014-08-21 23:08:34 +08:00
2014-09-05 06:49:03 +08:00
(function () {
2014-08-21 23:08:34 +08:00
2014-08-25 23:49:01 +08:00
'use strict';
2014-08-21 23:08:34 +08:00
var
2014-08-25 23:49:01 +08:00
_ = require('_'),
ko = require('ko'),
2014-08-25 15:10:51 +08:00
2014-09-05 06:49:03 +08:00
Enums = require('Common/Enums'),
Utils = require('Common/Utils'),
2014-10-06 02:37:31 +08:00
Links = require('Common/Links'),
2014-08-21 23:08:34 +08:00
AppAdminStore = require('Stores/Admin/App'),
CapaAdminStore = require('Stores/Admin/Capa'),
Settings = require('Storage/Settings'),
Remote = require('Storage/Admin/Remote')
2014-08-21 23:08:34 +08:00
;
/**
* @constructor
*/
function SecurityAdminSettings()
2014-08-21 23:08:34 +08:00
{
this.useLocalProxyForExternalImages = AppAdminStore.useLocalProxyForExternalImages;
2014-08-21 23:08:34 +08:00
this.weakPassword = AppAdminStore.weakPassword;
2014-10-18 23:19:37 +08:00
this.capaOpenPGP = CapaAdminStore.openPGP;
this.capaTwoFactorAuth = CapaAdminStore.twoFactorAuth;
2014-08-21 23:08:34 +08:00
this.verifySslCertificate = ko.observable(!!Settings.settingsGet('VerifySslCertificate'));
this.allowSelfSigned = ko.observable(!!Settings.settingsGet('AllowSelfSigned'));
2014-08-27 23:59:44 +08:00
this.adminLogin = ko.observable(Settings.settingsGet('AdminLogin'));
this.adminLoginError = ko.observable(false);
2014-08-21 23:08:34 +08:00
this.adminPassword = ko.observable('');
this.adminPasswordNew = ko.observable('');
this.adminPasswordNew2 = ko.observable('');
this.adminPasswordNewError = ko.observable(false);
this.adminPasswordUpdateError = ko.observable(false);
this.adminPasswordUpdateSuccess = ko.observable(false);
this.adminPassword.subscribe(function () {
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
}, this);
this.adminLogin.subscribe(function () {
this.adminLoginError(false);
}, this);
2014-08-21 23:08:34 +08:00
this.adminPasswordNew.subscribe(function () {
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
this.adminPasswordNewError(false);
}, this);
this.adminPasswordNew2.subscribe(function () {
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
this.adminPasswordNewError(false);
}, this);
this.saveNewAdminPasswordCommand = Utils.createCommand(this, function () {
if ('' === Utils.trim(this.adminLogin()))
{
this.adminLoginError(true);
return false;
}
2014-08-21 23:08:34 +08:00
if (this.adminPasswordNew() !== this.adminPasswordNew2())
{
this.adminPasswordNewError(true);
return false;
}
this.adminPasswordUpdateError(false);
this.adminPasswordUpdateSuccess(false);
Remote.saveNewAdminPassword(this.onNewAdminPasswordResponse, {
'Login': this.adminLogin(),
2014-08-21 23:08:34 +08:00
'Password': this.adminPassword(),
'NewPassword': this.adminPasswordNew()
});
}, function () {
return '' !== Utils.trim(this.adminLogin()) && '' !== this.adminPassword();
2014-08-21 23:08:34 +08:00
});
this.onNewAdminPasswordResponse = _.bind(this.onNewAdminPasswordResponse, this);
}
SecurityAdminSettings.prototype.onNewAdminPasswordResponse = function (sResult, oData)
2014-08-21 23:08:34 +08:00
{
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
{
this.adminPassword('');
this.adminPasswordNew('');
this.adminPasswordNew2('');
this.adminPasswordUpdateSuccess(true);
2014-10-18 23:19:37 +08:00
this.weakPassword(!!oData.Result.Weak);
2014-08-21 23:08:34 +08:00
}
else
{
this.adminPasswordUpdateError(true);
}
};
SecurityAdminSettings.prototype.onBuild = function ()
2014-08-21 23:08:34 +08:00
{
2014-08-25 15:10:51 +08:00
var
Remote = require('Storage/Admin/Remote')
2014-08-25 15:10:51 +08:00
;
2014-08-21 23:08:34 +08:00
this.capaOpenPGP.subscribe(function (bValue) {
Remote.saveAdminConfig(Utils.emptyFunction, {
'CapaOpenPGP': bValue ? '1' : '0'
});
});
this.capaTwoFactorAuth.subscribe(function (bValue) {
Remote.saveAdminConfig(Utils.emptyFunction, {
'CapaTwoFactorAuth': bValue ? '1' : '0'
});
});
this.useLocalProxyForExternalImages.subscribe(function (bValue) {
Remote.saveAdminConfig(null, {
'UseLocalProxyForExternalImages': bValue ? '1' : '0'
});
});
this.verifySslCertificate.subscribe(function (bValue) {
Remote.saveAdminConfig(null, {
'VerifySslCertificate': bValue ? '1' : '0'
});
});
this.allowSelfSigned.subscribe(function (bValue) {
Remote.saveAdminConfig(null, {
'AllowSelfSigned': bValue ? '1' : '0'
});
});
2014-08-21 23:08:34 +08:00
};
SecurityAdminSettings.prototype.onHide = function ()
2014-08-21 23:08:34 +08:00
{
this.adminPassword('');
this.adminPasswordNew('');
this.adminPasswordNew2('');
};
/**
* @return {string}
*/
SecurityAdminSettings.prototype.phpInfoLink = function ()
2014-08-21 23:08:34 +08:00
{
2014-10-06 02:37:31 +08:00
return Links.phpInfo();
2014-08-21 23:08:34 +08:00
};
2014-08-25 15:10:51 +08:00
module.exports = SecurityAdminSettings;
2014-08-21 23:08:34 +08:00
2014-09-05 06:49:03 +08:00
}());