mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-03-11 22:33:06 +08:00
Improving change password functional
This commit is contained in:
parent
cdbc5904fb
commit
db5835a4c3
34 changed files with 388 additions and 71 deletions
|
@ -339,6 +339,12 @@ Enums.Notification = {
|
|||
'AccountTwoFactorAuthRequired': 120,
|
||||
'AccountTwoFactorAuthError': 121,
|
||||
|
||||
'CouldNotSaveNewPassword': 130,
|
||||
'CurrentPasswordIncorrect': 131,
|
||||
'NewPasswordShort': 132,
|
||||
'NewPasswordWeak': 133,
|
||||
'NewPasswordForbidden': 134,
|
||||
|
||||
'CantGetMessageList': 201,
|
||||
'CantGetMessage': 202,
|
||||
'CantDeleteMessage': 203,
|
||||
|
|
|
@ -571,6 +571,12 @@ Utils.initNotificationLanguage = function ()
|
|||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthRequired] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED');
|
||||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthError] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR');
|
||||
|
||||
NotificationI18N[Enums.Notification.CouldNotSaveNewPassword] = Utils.i18n('NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD');
|
||||
NotificationI18N[Enums.Notification.CurrentPasswordIncorrect] = Utils.i18n('NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordShort] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_SHORT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordWeak] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_WEAK');
|
||||
NotificationI18N[Enums.Notification.NewPasswordForbidden] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT');
|
||||
|
||||
NotificationI18N[Enums.Notification.CantGetMessageList] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST');
|
||||
NotificationI18N[Enums.Notification.CantGetMessage] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE');
|
||||
NotificationI18N[Enums.Notification.CantDeleteMessage] = Utils.i18n('NOTIFICATIONS/CANT_DELETE_MESSAGE');
|
||||
|
|
|
@ -7,33 +7,57 @@ function SettingsChangePasswordScreen()
|
|||
{
|
||||
this.changeProcess = ko.observable(false);
|
||||
|
||||
this.errorDescription = ko.observable('');
|
||||
this.passwordMismatch = ko.observable(false);
|
||||
this.passwordUpdateError = ko.observable(false);
|
||||
this.passwordUpdateSuccess = ko.observable(false);
|
||||
|
||||
this.currentPassword = ko.observable('');
|
||||
this.currentPassword.error = ko.observable(false);
|
||||
this.newPassword = ko.observable('');
|
||||
this.newPassword2 = ko.observable('');
|
||||
|
||||
this.currentPassword.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.currentPassword.error(false);
|
||||
}, this);
|
||||
|
||||
this.newPassword.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.passwordMismatch(false);
|
||||
}, this);
|
||||
|
||||
this.newPassword2.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.passwordMismatch(false);
|
||||
}, this);
|
||||
|
||||
this.saveNewPasswordCommand = Utils.createCommand(this, function () {
|
||||
|
||||
this.changeProcess(true);
|
||||
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
if (this.newPassword() !== this.newPassword2())
|
||||
{
|
||||
this.passwordMismatch(true);
|
||||
this.errorDescription(Utils.i18n('SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH'));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.changeProcess(true);
|
||||
|
||||
RL.remote().changePassword(this.onChangePasswordResponse, this.currentPassword(), this.newPassword());
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.currentPassword.error(false);
|
||||
this.passwordMismatch(false);
|
||||
this.errorDescription('');
|
||||
|
||||
RL.remote().changePassword(this.onChangePasswordResponse, this.currentPassword(), this.newPassword());
|
||||
}
|
||||
|
||||
}, function () {
|
||||
return !this.changeProcess() && '' !== this.currentPassword() && '' !== this.newPassword();
|
||||
return !this.changeProcess() && '' !== this.currentPassword() &&
|
||||
'' !== this.newPassword() && '' !== this.newPassword2();
|
||||
});
|
||||
|
||||
this.onChangePasswordResponse = _.bind(this.onChangePasswordResponse, this);
|
||||
|
@ -46,20 +70,37 @@ SettingsChangePasswordScreen.prototype.onHide = function ()
|
|||
this.changeProcess(false);
|
||||
this.currentPassword('');
|
||||
this.newPassword('');
|
||||
this.newPassword2('');
|
||||
this.errorDescription('');
|
||||
this.passwordMismatch(false);
|
||||
this.currentPassword.error(false);
|
||||
};
|
||||
|
||||
SettingsChangePasswordScreen.prototype.onChangePasswordResponse = function (sResult, oData)
|
||||
{
|
||||
this.changeProcess(false);
|
||||
this.passwordMismatch(false);
|
||||
this.errorDescription('');
|
||||
this.currentPassword.error(false);
|
||||
|
||||
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
|
||||
{
|
||||
this.currentPassword('');
|
||||
this.newPassword('');
|
||||
|
||||
this.newPassword2('');
|
||||
|
||||
this.passwordUpdateSuccess(true);
|
||||
this.currentPassword.error(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (oData && Enums.Notification.CurrentPasswordIncorrect === oData.ErrorCode)
|
||||
{
|
||||
this.currentPassword.error(true);
|
||||
}
|
||||
|
||||
this.passwordUpdateError(true);
|
||||
this.errorDescription(oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) :
|
||||
Utils.getNotification(Enums.Notification.CouldNotSaveNewPassword));
|
||||
}
|
||||
};
|
||||
|
|
|
@ -265,6 +265,15 @@ html.no-rgba .modal {
|
|||
z-index: 2001 !important;
|
||||
}
|
||||
|
||||
.form-horizontal.long-label .control-group {
|
||||
.control-label {
|
||||
width: 160px;
|
||||
}
|
||||
.controls {
|
||||
margin-left: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
.control-label.remove-padding-top {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
|
|
@ -529,7 +529,7 @@ class Actions
|
|||
if (null === $this->oChangePasswordProvider)
|
||||
{
|
||||
$this->oChangePasswordProvider = new \RainLoop\Providers\ChangePassword(
|
||||
$this, $this->fabrica('change-password')
|
||||
$this, $this->fabrica('change-password'), !!$this->Config()->Get('labs', 'check_new_password_strength', false)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -3371,25 +3371,27 @@ class Actions
|
|||
*/
|
||||
public function DoChangePassword()
|
||||
{
|
||||
$bResult = false;
|
||||
$oAccount = $this->getAccountFromToken();
|
||||
|
||||
if ($oAccount)
|
||||
{
|
||||
$bResult = $this->ChangePasswordProvider()->ChangePassword(
|
||||
$oAccount,
|
||||
$this->GetActionParam('PrevPassword', ''),
|
||||
$this->GetActionParam('NewPassword', '')
|
||||
);
|
||||
|
||||
if (!$bResult)
|
||||
try
|
||||
{
|
||||
$this->ChangePasswordProvider()->ChangePassword(
|
||||
$oAccount,
|
||||
$this->GetActionParam('PrevPassword', ''),
|
||||
$this->GetActionParam('NewPassword', '')
|
||||
);
|
||||
}
|
||||
catch (\Exception $oException)
|
||||
{
|
||||
$this->loginErrorDelay();
|
||||
$this->Logger()->Write('Error: Can\'t change password for '.$oAccount->Email().' account.', \MailSo\Log\Enumerations\Type::NOTICE);
|
||||
|
||||
throw $oException;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->DefaultResponse(__FUNCTION__, $bResult);
|
||||
return $this->TrueResponse(__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -208,6 +208,7 @@ Enables caching in the system'),
|
|||
'ignore_folders_subscription' => array(false,
|
||||
'Experimental settings. Handle with care.
|
||||
'),
|
||||
'check_new_password_strength' => array(true),
|
||||
'allow_prefetch' => array(true),
|
||||
'allow_smart_html_links' => array(true),
|
||||
'cache_system_data' => array(true),
|
||||
|
|
|
@ -18,6 +18,12 @@ class Notifications
|
|||
const AccountTwoFactorAuthRequired = 120;
|
||||
const AccountTwoFactorAuthError = 121;
|
||||
|
||||
const CouldNotSaveNewPassword = 130;
|
||||
const CurrentPasswordIncorrect = 131;
|
||||
const NewPasswordShort = 132;
|
||||
const NewPasswordWeak = 133;
|
||||
const NewPasswordForbidden = 134;
|
||||
|
||||
const CantGetMessageList = 201;
|
||||
const CantGetMessage = 202;
|
||||
const CantDeleteMessage = 203;
|
||||
|
@ -81,6 +87,13 @@ class Notifications
|
|||
self::AccountNotAllowed => 'AccountNotAllowed',
|
||||
self::AccountTwoFactorAuthRequired => 'AccountTwoFactorAuthRequired',
|
||||
self::AccountTwoFactorAuthError => 'AccountTwoFactorAuthError',
|
||||
|
||||
self::CouldNotSaveNewPassword => 'CouldNotSaveNewPassword',
|
||||
self::CurrentPasswordIncorrect => 'CurrentPasswordIncorrect',
|
||||
self::NewPasswordShort => 'NewPasswordShort',
|
||||
self::NewPasswordWeak => 'NewPasswordWeak',
|
||||
self::NewPasswordForbidden => 'NewPasswordForbidden',
|
||||
|
||||
self::CantGetMessageList => 'CantGetMessageList',
|
||||
self::CantGetMessage => 'CantGetMessage',
|
||||
self::CantDeleteMessage => 'CantDeleteMessage',
|
||||
|
|
|
@ -14,16 +14,23 @@ class ChangePassword extends \RainLoop\Providers\AbstractProvider
|
|||
*/
|
||||
private $oDriver;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $bCheckWeak;
|
||||
|
||||
/**
|
||||
* @param \RainLoop\Actions $oActions
|
||||
* @param \RainLoop\Providers\ChangePassword\ChangePasswordInterface|null $oDriver = null
|
||||
* @param bool $bCheckWeak = false
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($oActions, $oDriver = null)
|
||||
public function __construct($oActions, $oDriver = null, $bCheckWeak = false)
|
||||
{
|
||||
$this->oActions = $oActions;
|
||||
$this->oDriver = $oDriver;
|
||||
$this->bCheckWeak = !!$bCheckWeak;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,24 +50,42 @@ class ChangePassword extends \RainLoop\Providers\AbstractProvider
|
|||
* @param \RainLoop\Account $oAccount
|
||||
* @param string $sPrevPassword
|
||||
* @param string $sNewPassword
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function ChangePassword(\RainLoop\Account $oAccount, $sPrevPassword, $sNewPassword)
|
||||
{
|
||||
$bResult = false;
|
||||
if ($this->oDriver instanceof \RainLoop\Providers\ChangePassword\ChangePasswordInterface &&
|
||||
$this->PasswordChangePossibility($oAccount) && $sPrevPassword === $oAccount->Password())
|
||||
$this->PasswordChangePossibility($oAccount))
|
||||
{
|
||||
if ($this->oDriver->ChangePassword($oAccount, $sPrevPassword, $sNewPassword))
|
||||
if ($sPrevPassword !== $oAccount->Password())
|
||||
{
|
||||
$oAccount->SetPassword($sNewPassword);
|
||||
$this->oActions->SetAuthToken($oAccount);
|
||||
$bResult = true;
|
||||
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::CurrentPasswordIncorrect);
|
||||
}
|
||||
}
|
||||
|
||||
return $bResult;
|
||||
if (4 > \strlen($sNewPassword))
|
||||
{
|
||||
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::NewPasswordShort);
|
||||
}
|
||||
|
||||
if ($this->bCheckWeak)
|
||||
{
|
||||
if (7 > \strlen($sNewPassword))
|
||||
{
|
||||
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::NewPasswordWeak);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->oDriver->ChangePassword($oAccount, $sPrevPassword, $sNewPassword))
|
||||
{
|
||||
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::CouldNotSaveNewPassword);
|
||||
}
|
||||
|
||||
$oAccount->SetPassword($sNewPassword);
|
||||
$this->oActions->SetAuthToken($oAccount);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \RainLoop\Exceptions\ClientException(\RainLoop\Notifications::CouldNotSaveNewPassword);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,4 +95,20 @@ class ChangePassword extends \RainLoop\Providers\AbstractProvider
|
|||
{
|
||||
return $this->oDriver instanceof \RainLoop\Providers\ChangePassword\ChangePasswordInterface;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sPassword
|
||||
* @return bool
|
||||
*/
|
||||
public function weaknessCheck($sPassword)
|
||||
{
|
||||
$sPassword = \trim($sPassword);
|
||||
if (4 > \strlen($sPassword))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$sLine = ' password 123.456 12345678 abc123 qwerty monkey letmein dragon 111.111 baseball iloveyou trustno1 1234567 sunshine master 123.123 welcome shadow ashley football jesus michael ninja mustang password1 123456 123456789 qwerty 111111 1234567 666666 12345678 7777777 123321 654321 1234567890 123123 555555 vkontakte gfhjkm 159753 777777 temppassword qazwsx 1q2w3e 1234 112233 121212 qwertyuiop qq18ww899 987654321 12345 zxcvbn zxcvbnm 999999 samsung ghbdtn 1q2w3e4r 1111111 123654 159357 131313 qazwsxedc 123qwe 222222 asdfgh 333333 9379992 asdfghjkl 4815162342 12344321 88888888 11111111 knopka 789456 qwertyu 1q2w3e4r5t iloveyou vfhbyf marina password qweasdzxc 10203 987654 yfnfif cjkysirj nikita 888888 vfrcbv k.,jdm qwertyuiop[] qwe123 qweasd natasha 123123123 fylhtq q1w2e3 stalker 1111111111 q1w2e3r4 nastya 147258369 147258 fyfcnfcbz 1234554321 1qaz2wsx andrey 111222 147852 genius sergey 7654321 232323 123789 fktrcfylh spartak admin test 123 azerty abc123 lol123 easytocrack1 hello saravn holysh!t test123 tundra_cool2 456 dragon thomas killer root 1111 pass master aaaaaa a monkey daniel asdasd e10adc3949ba59abbe56e057f20f883e changeme computer jessica letmein mirage loulou lol superman shadow admin123 secret administrator sophie kikugalanetroot doudou liverpool hallo sunshine charlie parola 100827092 michael andrew password1 fuckyou matrix cjmasterinf internet hallo123 eminem demo gewinner pokemon abcd1234 guest ngockhoa martin sandra asdf hejsan george qweqwe lollipop lovers q1q1q1 tecktonik naruto 12 password12 password123 password1234 password12345 password123456 password1234567 password12345678 password123456789 000000 maximius 123abc baseball1 football1 soccer princess slipknot 11111 nokia super star 666999 12341234 1234321 135790 159951 212121 zzzzzz 121314 134679 142536 19921992 753951 7007 1111114 124578 19951995 258456 qwaszx zaqwsx 55555 77777 54321 qwert 22222 33333 99999 88888 66666 ';
|
||||
return false === \strpos($sLine, \strtolower($sPassword));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,32 +1,45 @@
|
|||
<div class="b-settings-general g-ui-user-select-none">
|
||||
<div class="form-horizontal">
|
||||
<div class="form-horizontal long-label">
|
||||
<div class="legend">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LEGEND_CHANGE_PASSWORD"></span>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_CURRENT_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: currentPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_NEW_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: newPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<a class="btn" data-bind="command: saveNewPasswordCommand, css: { 'btn-success': passwordUpdateSuccess, 'btn-danger': passwordUpdateError }">
|
||||
<i data-bind="css: {'icon-spinner animated': changeProcess(), 'icon-key': !changeProcess(), 'icon-white': passwordUpdateSuccess() || passwordUpdateError() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/BUTTON_UPDATE_PASSWORD"></span>
|
||||
</a>
|
||||
<div class="row">
|
||||
<div class="span6">
|
||||
<div class="control-group" data-bind="css: {'error': currentPassword.error}">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_CURRENT_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: currentPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordMismatch}">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_NEW_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: newPassword, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group" data-bind="css: {'error': passwordMismatch}">
|
||||
<label class="control-label">
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/LABEL_REPEAT_PASSWORD"></span>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<input type="password" data-bind="value: newPassword2, valueUpdate: 'afterkeydown'" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<a class="btn" data-bind="command: saveNewPasswordCommand, css: { 'btn-success': passwordUpdateSuccess, 'btn-danger': passwordUpdateError }">
|
||||
<i data-bind="css: {'icon-spinner animated': changeProcess(), 'icon-key': !changeProcess(), 'icon-white': passwordUpdateSuccess() || passwordUpdateError() }"></i>
|
||||
|
||||
<span class="i18n" data-i18n-text="SETTINGS_CHANGE_PASSWORD/BUTTON_UPDATE_PASSWORD"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="span4 alert alert-error alert-null-left-margin" data-bind="visible: '' !== errorDescription(), text: errorDescription"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Aktuelles Passwort"
|
|||
LABEL_NEW_PASSWORD = "Neues Passwordt"
|
||||
LABEL_REPEAT_PASSWORD = "Neues Passwort erneut eingeben"
|
||||
BUTTON_UPDATE_PASSWORD = "Neues Passwort setzen"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Diese Domain ist nicht zugelassen."
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Die Nachrichten-Liste ist nicht verfügbar"
|
||||
CANT_GET_MESSAGE = "Diese Nachricht ist nicht verfügbar"
|
||||
CANT_DELETE_MESSAGE = "Diese Nachricht kann nicht gelöscht werden"
|
||||
|
|
|
@ -457,8 +457,9 @@ DELETING_ASK = "Are you sure?"
|
|||
LEGEND_CHANGE_PASSWORD = "Change Password"
|
||||
LABEL_CURRENT_PASSWORD = "Current password"
|
||||
LABEL_NEW_PASSWORD = "New password"
|
||||
LABEL_REPEAT_PASSWORD = "New password again"
|
||||
LABEL_REPEAT_PASSWORD = "Confirm New Password"
|
||||
BUTTON_UPDATE_PASSWORD = "Set New Password"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -533,6 +534,11 @@ DOMAIN_NOT_ALLOWED = "Domain is not allowed"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Can't get message list"
|
||||
CANT_GET_MESSAGE = "Can't get message"
|
||||
CANT_DELETE_MESSAGE = "Can't delete message"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Contraseña actual"
|
|||
LABEL_NEW_PASSWORD = "Nueva contraseña"
|
||||
LABEL_REPEAT_PASSWORD = "Otra vez su Nueva contraseña"
|
||||
BUTTON_UPDATE_PASSWORD = "Establecer nueva contraseña"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Dominio no permitido"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "No se puede obtener la lista de mensajes"
|
||||
CANT_GET_MESSAGE = "No se puede obtener el mensaje"
|
||||
CANT_DELETE_MESSAGE = "No se puede eliminar el mensaje"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Mot de passe actuel"
|
|||
LABEL_NEW_PASSWORD = "Nouveau mot de passe"
|
||||
LABEL_REPEAT_PASSWORD = "Confirmation du nouveau mot de passe"
|
||||
BUTTON_UPDATE_PASSWORD = "Enregistrer le nouveau mot de passe"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Ce domaine n'est pas autorisé"
|
|||
ACCOUNT_NOT_ALLOWED = "Ce compte n'est pas autorisé"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Impossible d'obtenir la liste des messages"
|
||||
CANT_GET_MESSAGE = "Impossible d'obtenir le message"
|
||||
CANT_DELETE_MESSAGE = "Impossible de supprimer le message"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Current password"
|
|||
LABEL_NEW_PASSWORD = "New password"
|
||||
LABEL_REPEAT_PASSWORD = "New password again"
|
||||
BUTTON_UPDATE_PASSWORD = "Set New Password"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Domain is not allowed"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Can't get message list"
|
||||
CANT_GET_MESSAGE = "Can't get message"
|
||||
CANT_DELETE_MESSAGE = "Can't delete message"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Núverandi lykilorð"
|
|||
LABEL_NEW_PASSWORD = "Nýtt lykilorð"
|
||||
LABEL_REPEAT_PASSWORD = "Nýtt lykilorð aftur"
|
||||
BUTTON_UPDATE_PASSWORD = "Setja nýtt lykilorð"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Lén ekki leyft"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Get ekki sótt bréfa lista"
|
||||
CANT_GET_MESSAGE = "Get ekki sótt bréf"
|
||||
CANT_DELETE_MESSAGE = "Get ekki eytt bréfi"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Password attuale"
|
|||
LABEL_NEW_PASSWORD = "Nuova password"
|
||||
LABEL_REPEAT_PASSWORD = "Ripeti nuova password"
|
||||
BUTTON_UPDATE_PASSWORD = "Cambia password"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Il dominio non è autorizzato"
|
|||
ACCOUNT_NOT_ALLOWED = "L'account non è autorizzato"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Impossibile ottenere la lista dei messaggi"
|
||||
CANT_GET_MESSAGE = "Impossibile ottenere il messaggio"
|
||||
CANT_DELETE_MESSAGE = "Impossibile cancellare il messaggio"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "現在のパスワード"
|
|||
LABEL_NEW_PASSWORD = "新しいパスワード"
|
||||
LABEL_REPEAT_PASSWORD = "新しいパスワードの確認"
|
||||
BUTTON_UPDATE_PASSWORD = "パスワードを変更"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Domain is not allowed"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Can't get message list"
|
||||
CANT_GET_MESSAGE = "Can't get message"
|
||||
CANT_DELETE_MESSAGE = "Can't delete message"
|
||||
|
|
|
@ -454,6 +454,7 @@ LABEL_CURRENT_PASSWORD = "현재 비밀번호"
|
|||
LABEL_NEW_PASSWORD = "새 비밀번호"
|
||||
LABEL_REPEAT_PASSWORD = "비밀번호 재입력"
|
||||
BUTTON_UPDATE_PASSWORD = "비밀번호 변경"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -528,6 +529,11 @@ DOMAIN_NOT_ALLOWED = "허용된 도메인이 아닙니다."
|
|||
ACCOUNT_NOT_ALLOWED = "허용된 계정이 아닙니다."
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "메시지 목록을 불러 올 수 없습니다."
|
||||
CANT_GET_MESSAGE = "메시지를 가져올 수 없습니다."
|
||||
CANT_DELETE_MESSAGE = "메시지를 삭제할 수 없습니다."
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Tagadējā parole"
|
|||
LABEL_NEW_PASSWORD = "Jaunā parole"
|
||||
LABEL_REPEAT_PASSWORD = "Jaunā parole vēlreiz"
|
||||
BUTTON_UPDATE_PASSWORD = "Saglabāt paroli"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Šis domēns nav atļauts"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Nevar ielādēt ziņojumu sarakstu"
|
||||
CANT_GET_MESSAGE = "Nevar ielādēt ziņojumu"
|
||||
CANT_DELETE_MESSAGE = "Nevar izdzēst ziņojumu"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Huidig paswoord"
|
|||
LABEL_NEW_PASSWORD = "Nieuw paswoord"
|
||||
LABEL_REPEAT_PASSWORD = "Nieuw paswoord opnieuw"
|
||||
BUTTON_UPDATE_PASSWORD = "Instellen nieuw paswoord"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "domein is niet toegestaan"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is niet toegestaan"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Can't get message list"
|
||||
CANT_GET_MESSAGE = "Can't get message"
|
||||
CANT_DELETE_MESSAGE = "Kan bericht niet verwijderen"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Gjeldende passord"
|
|||
LABEL_NEW_PASSWORD = "Nytt passord"
|
||||
LABEL_REPEAT_PASSWORD = "Nytt passord på nytt"
|
||||
BUTTON_UPDATE_PASSWORD = "Sett nytt passord"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Domene er ikke tillatt"
|
|||
ACCOUNT_NOT_ALLOWED = "Kontoen er ikke tillatt"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Kan ikke få meldingsliste"
|
||||
CANT_GET_MESSAGE = "Kan ikke få meldingen"
|
||||
CANT_DELETE_MESSAGE = "Kan ikke slette meldingen"
|
||||
|
|
|
@ -456,6 +456,7 @@ LABEL_CURRENT_PASSWORD = "Aktualne hasło"
|
|||
LABEL_NEW_PASSWORD = "Nowe hasło"
|
||||
LABEL_REPEAT_PASSWORD = "Powtórz nowe hasło"
|
||||
BUTTON_UPDATE_PASSWORD = "Zmień hasło na nowe"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -530,6 +531,11 @@ DOMAIN_NOT_ALLOWED = "Domena nie dozwolona"
|
|||
ACCOUNT_NOT_ALLOWED = "Konto nie jest dozwolone"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Nie jest możliwe pobranie listy wiadomości"
|
||||
CANT_GET_MESSAGE = "Nie można pobrać wiadomości"
|
||||
CANT_DELETE_MESSAGE = "Nie można usunąć wiadomości"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Senha atual"
|
|||
LABEL_NEW_PASSWORD = "Nova senha"
|
||||
LABEL_REPEAT_PASSWORD = "Repita a nova senha"
|
||||
BUTTON_UPDATE_PASSWORD = "Defina a nova senha"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -530,6 +531,11 @@ DOMAIN_NOT_ALLOWED = "Este domínio não é permitido"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Não é possível obter a lista de mensagens"
|
||||
CANT_GET_MESSAGE = "Não é possível obter a mensagem"
|
||||
CANT_DELETE_MESSAGE = "Não é possível excluir a mensagem"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Senha atual"
|
|||
LABEL_NEW_PASSWORD = "Nova senha"
|
||||
LABEL_REPEAT_PASSWORD = "Repita a nova senha"
|
||||
BUTTON_UPDATE_PASSWORD = "Defina a nova senha"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Este domínio não é permitido"
|
|||
ACCOUNT_NOT_ALLOWED = "Account is not allowed"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Não é possível obter a lista de mensagens"
|
||||
CANT_GET_MESSAGE = "Não é possível obter a mensagem"
|
||||
CANT_DELETE_MESSAGE = "Não é possível excluir a mensagem"
|
||||
|
|
|
@ -456,6 +456,7 @@ LABEL_CURRENT_PASSWORD = "Parola curentă"
|
|||
LABEL_NEW_PASSWORD = "Noua parolă"
|
||||
LABEL_REPEAT_PASSWORD = "Confirmați parola"
|
||||
BUTTON_UPDATE_PASSWORD = "Salvați noua parolă"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -530,6 +531,11 @@ DOMAIN_NOT_ALLOWED = "Domeniul nu apartine de Wey5"
|
|||
ACCOUNT_NOT_ALLOWED = "Contul nu are permisiunea de conectare"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Nu găsesc o lista de scrisori"
|
||||
CANT_GET_MESSAGE = "Nu pot obține scrisoarea. Încercați din nou"
|
||||
CANT_DELETE_MESSAGE = "Nu pot șterge scrisoarea. Încercați din nou"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Текущий пароль"
|
|||
LABEL_NEW_PASSWORD = "Новый пароль"
|
||||
LABEL_REPEAT_PASSWORD = "Повторить"
|
||||
BUTTON_UPDATE_PASSWORD = "Установить Новый Пароль"
|
||||
ERROR_PASSWORD_MISMATCH = "Пароли не совпадают, попробуйте еще раз"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -532,6 +533,11 @@ DOMAIN_NOT_ALLOWED = "Данный домен не разрешен"
|
|||
ACCOUNT_NOT_ALLOWED = "Данный аккаунт не разрешен"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Необходима двухфакторная верификация"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Ошибка двухфакторной верификации"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Не удалось сохранить новый пароль"
|
||||
CURRENT_PASSWORD_INCORRECT = "Текущий пароль неверный"
|
||||
NEW_PASSWORD_SHORT = "Пароль слишком короткий"
|
||||
NEW_PASSWORD_WEAK = "Пароль слишком простой"
|
||||
NEW_PASSWORD_FORBIDDENT = "Пароль содержит запрещенные символы"
|
||||
CANT_GET_MESSAGE_LIST = "Не могу получить список писем"
|
||||
CANT_GET_MESSAGE = "Не могу получить письмо"
|
||||
CANT_DELETE_MESSAGE = "Не могу удалить письмо"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "Súčasné heslo"
|
|||
LABEL_NEW_PASSWORD = "Nové heslo"
|
||||
LABEL_REPEAT_PASSWORD = "Nové heslo znova"
|
||||
BUTTON_UPDATE_PASSWORD = "Nastaviť nové heslo"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "Doména nie je povolená"
|
|||
ACCOUNT_NOT_ALLOWED = "Účet nie je povolený"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "Chyba pri vytváraní zoznamu správ."
|
||||
CANT_GET_MESSAGE = "Správu sa nepodarilo načítať"
|
||||
CANT_DELETE_MESSAGE = "Správu sa nepodarilo odstrániť"
|
||||
|
|
|
@ -457,6 +457,7 @@ LABEL_CURRENT_PASSWORD = "当前密码"
|
|||
LABEL_NEW_PASSWORD = "新密码"
|
||||
LABEL_REPEAT_PASSWORD = "再次新密码"
|
||||
BUTTON_UPDATE_PASSWORD = "设置新密码"
|
||||
ERROR_PASSWORD_MISMATCH = "Passwords do not match, please try again"
|
||||
|
||||
[SETTINGS_OPEN_PGP]
|
||||
LEGEND_OPEN_PGP = "OpenPGP"
|
||||
|
@ -531,6 +532,11 @@ DOMAIN_NOT_ALLOWED = "域不允许"
|
|||
ACCOUNT_NOT_ALLOWED = "账户不允许"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_REQUIRED = "Two factor verification required"
|
||||
ACCOUNT_TWO_FACTOR_AUTH_ERROR = "Two factor verification error"
|
||||
COULD_NOT_SAVE_NEW_PASSWORD = "Could not save new password"
|
||||
CURRENT_PASSWORD_INCORRECT = "Current password incorrect"
|
||||
NEW_PASSWORD_SHORT = "Password is too short"
|
||||
NEW_PASSWORD_WEAK = "Password is too easy"
|
||||
NEW_PASSWORD_FORBIDDENT = "Password contains forbidden characters"
|
||||
CANT_GET_MESSAGE_LIST = "无法获取邮件列表"
|
||||
CANT_GET_MESSAGE = "无法获取邮件"
|
||||
CANT_DELETE_MESSAGE = "无法删除邮件"
|
||||
|
|
|
@ -6460,6 +6460,12 @@ html.no-rgba .modal {
|
|||
.picker.picker-dialog {
|
||||
z-index: 2001 !important;
|
||||
}
|
||||
.form-horizontal.long-label .control-group .control-label {
|
||||
width: 160px;
|
||||
}
|
||||
.form-horizontal.long-label .control-group .controls {
|
||||
margin-left: 180px;
|
||||
}
|
||||
.control-label.remove-padding-top {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
|
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
2
rainloop/v/0.0.0/static/css/app.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -689,6 +689,12 @@ Enums.Notification = {
|
|||
'AccountTwoFactorAuthRequired': 120,
|
||||
'AccountTwoFactorAuthError': 121,
|
||||
|
||||
'CouldNotSaveNewPassword': 130,
|
||||
'CurrentPasswordIncorrect': 131,
|
||||
'NewPasswordShort': 132,
|
||||
'NewPasswordWeak': 133,
|
||||
'NewPasswordForbidden': 134,
|
||||
|
||||
'CantGetMessageList': 201,
|
||||
'CantGetMessage': 202,
|
||||
'CantDeleteMessage': 203,
|
||||
|
@ -1301,6 +1307,12 @@ Utils.initNotificationLanguage = function ()
|
|||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthRequired] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED');
|
||||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthError] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR');
|
||||
|
||||
NotificationI18N[Enums.Notification.CouldNotSaveNewPassword] = Utils.i18n('NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD');
|
||||
NotificationI18N[Enums.Notification.CurrentPasswordIncorrect] = Utils.i18n('NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordShort] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_SHORT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordWeak] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_WEAK');
|
||||
NotificationI18N[Enums.Notification.NewPasswordForbidden] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT');
|
||||
|
||||
NotificationI18N[Enums.Notification.CantGetMessageList] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST');
|
||||
NotificationI18N[Enums.Notification.CantGetMessage] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE');
|
||||
NotificationI18N[Enums.Notification.CantDeleteMessage] = Utils.i18n('NOTIFICATIONS/CANT_DELETE_MESSAGE');
|
||||
|
|
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
2
rainloop/v/0.0.0/static/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -693,6 +693,12 @@ Enums.Notification = {
|
|||
'AccountTwoFactorAuthRequired': 120,
|
||||
'AccountTwoFactorAuthError': 121,
|
||||
|
||||
'CouldNotSaveNewPassword': 130,
|
||||
'CurrentPasswordIncorrect': 131,
|
||||
'NewPasswordShort': 132,
|
||||
'NewPasswordWeak': 133,
|
||||
'NewPasswordForbidden': 134,
|
||||
|
||||
'CantGetMessageList': 201,
|
||||
'CantGetMessage': 202,
|
||||
'CantDeleteMessage': 203,
|
||||
|
@ -1305,6 +1311,12 @@ Utils.initNotificationLanguage = function ()
|
|||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthRequired] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED');
|
||||
NotificationI18N[Enums.Notification.AccountTwoFactorAuthError] = Utils.i18n('NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR');
|
||||
|
||||
NotificationI18N[Enums.Notification.CouldNotSaveNewPassword] = Utils.i18n('NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD');
|
||||
NotificationI18N[Enums.Notification.CurrentPasswordIncorrect] = Utils.i18n('NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordShort] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_SHORT');
|
||||
NotificationI18N[Enums.Notification.NewPasswordWeak] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_WEAK');
|
||||
NotificationI18N[Enums.Notification.NewPasswordForbidden] = Utils.i18n('NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT');
|
||||
|
||||
NotificationI18N[Enums.Notification.CantGetMessageList] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE_LIST');
|
||||
NotificationI18N[Enums.Notification.CantGetMessage] = Utils.i18n('NOTIFICATIONS/CANT_GET_MESSAGE');
|
||||
NotificationI18N[Enums.Notification.CantDeleteMessage] = Utils.i18n('NOTIFICATIONS/CANT_DELETE_MESSAGE');
|
||||
|
@ -14404,33 +14416,57 @@ function SettingsChangePasswordScreen()
|
|||
{
|
||||
this.changeProcess = ko.observable(false);
|
||||
|
||||
this.errorDescription = ko.observable('');
|
||||
this.passwordMismatch = ko.observable(false);
|
||||
this.passwordUpdateError = ko.observable(false);
|
||||
this.passwordUpdateSuccess = ko.observable(false);
|
||||
|
||||
this.currentPassword = ko.observable('');
|
||||
this.currentPassword.error = ko.observable(false);
|
||||
this.newPassword = ko.observable('');
|
||||
this.newPassword2 = ko.observable('');
|
||||
|
||||
this.currentPassword.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.currentPassword.error(false);
|
||||
}, this);
|
||||
|
||||
this.newPassword.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.passwordMismatch(false);
|
||||
}, this);
|
||||
|
||||
this.newPassword2.subscribe(function () {
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.passwordMismatch(false);
|
||||
}, this);
|
||||
|
||||
this.saveNewPasswordCommand = Utils.createCommand(this, function () {
|
||||
|
||||
this.changeProcess(true);
|
||||
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
if (this.newPassword() !== this.newPassword2())
|
||||
{
|
||||
this.passwordMismatch(true);
|
||||
this.errorDescription(Utils.i18n('SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH'));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.changeProcess(true);
|
||||
|
||||
RL.remote().changePassword(this.onChangePasswordResponse, this.currentPassword(), this.newPassword());
|
||||
this.passwordUpdateError(false);
|
||||
this.passwordUpdateSuccess(false);
|
||||
this.currentPassword.error(false);
|
||||
this.passwordMismatch(false);
|
||||
this.errorDescription('');
|
||||
|
||||
RL.remote().changePassword(this.onChangePasswordResponse, this.currentPassword(), this.newPassword());
|
||||
}
|
||||
|
||||
}, function () {
|
||||
return !this.changeProcess() && '' !== this.currentPassword() && '' !== this.newPassword();
|
||||
return !this.changeProcess() && '' !== this.currentPassword() &&
|
||||
'' !== this.newPassword() && '' !== this.newPassword2();
|
||||
});
|
||||
|
||||
this.onChangePasswordResponse = _.bind(this.onChangePasswordResponse, this);
|
||||
|
@ -14443,21 +14479,38 @@ SettingsChangePasswordScreen.prototype.onHide = function ()
|
|||
this.changeProcess(false);
|
||||
this.currentPassword('');
|
||||
this.newPassword('');
|
||||
this.newPassword2('');
|
||||
this.errorDescription('');
|
||||
this.passwordMismatch(false);
|
||||
this.currentPassword.error(false);
|
||||
};
|
||||
|
||||
SettingsChangePasswordScreen.prototype.onChangePasswordResponse = function (sResult, oData)
|
||||
{
|
||||
this.changeProcess(false);
|
||||
this.passwordMismatch(false);
|
||||
this.errorDescription('');
|
||||
this.currentPassword.error(false);
|
||||
|
||||
if (Enums.StorageResultType.Success === sResult && oData && oData.Result)
|
||||
{
|
||||
this.currentPassword('');
|
||||
this.newPassword('');
|
||||
|
||||
this.newPassword2('');
|
||||
|
||||
this.passwordUpdateSuccess(true);
|
||||
this.currentPassword.error(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (oData && Enums.Notification.CurrentPasswordIncorrect === oData.ErrorCode)
|
||||
{
|
||||
this.currentPassword.error(true);
|
||||
}
|
||||
|
||||
this.passwordUpdateError(true);
|
||||
this.errorDescription(oData && oData.ErrorCode ? Utils.getNotification(oData.ErrorCode) :
|
||||
Utils.getNotification(Enums.Notification.CouldNotSaveNewPassword));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
16
rainloop/v/0.0.0/static/js/app.min.js
vendored
16
rainloop/v/0.0.0/static/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue