Skip to content

Commit

Permalink
Fixed issue #17698: Change of email address for survey administrator …
Browse files Browse the repository at this point in the history
…confusing (#2152)

Co-authored-by: encuestabizdevgit <devgit@encuesta.biz>
  • Loading branch information
gabrieljenik and encuestabizdevgit committed Nov 26, 2021
1 parent 76e9c57 commit 8a093fd
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 32 deletions.
32 changes: 24 additions & 8 deletions application/controllers/admin/useraction.php
Expand Up @@ -644,19 +644,16 @@ public function personalsettings()

$oldPassword = Yii::app()->request->getPost('oldpassword');

$newPassword = Yii::app()->request->getPost('password');
$repeatPassword = Yii::app()->request->getPost('repeatpassword');
$oUserModel->email = Yii::app()->request->getPost('email');

//if only email should be changed, then just check the current password
// Check the current password
$currentPasswordOk = $oUserModel->checkPassword($oldPassword);
if ($currentPasswordOk) {
$uresult = $oUserModel->save();
} else {
if (!$currentPasswordOk) {
Yii::app()->setFlashMessage(gT('The current password is not correct.'), 'error');
$this->getController()->redirect(array("admin/user/sa/personalsettings"));
}

$newPassword = Yii::app()->request->getPost('password');
$repeatPassword = Yii::app()->request->getPost('repeatpassword');

if ($newPassword !== '' && $repeatPassword !== '') {
$error = $oUserModel->validateNewPassword($newPassword, $oldPassword, $repeatPassword);

Expand All @@ -670,6 +667,25 @@ public function personalsettings()
}
}

if (Yii::app()->request->getPost('newemailshown') == "1") {
if (Yii::app()->getConfig('demoMode')) {
Yii::app()->setFlashMessage(gT("You can't change email if demo mode is active."), 'error');
$this->getController()->redirect(array("admin/user/sa/personalsettings"));
}

$oldPassword = Yii::app()->request->getPost('oldpassword');

// Check the current password
$currentPasswordOk = $oUserModel->checkPassword($oldPassword);
if (!$currentPasswordOk) {
Yii::app()->setFlashMessage(gT('The current password is not correct.'), 'error');
$this->getController()->redirect(array("admin/user/sa/personalsettings"));
}

$oUserModel->email = Yii::app()->request->getPost('newemail');
$uresult = $oUserModel->save();
}

$oUserModel->lang = Yii::app()->request->getPost('lang');
$oUserModel->dateformat = Yii::app()->request->getPost('dateformat');
$oUserModel->htmleditormode = Yii::app()->request->getPost('htmleditormode');
Expand Down
50 changes: 26 additions & 24 deletions application/views/admin/user/personalsettings.php
Expand Up @@ -122,22 +122,32 @@
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="form-group">
<?php echo TbHtml::label(gT("Email:"), 'lang', ['class' => " control-label"]); ?>
<div class="">
<?php echo TbHtml::emailField('email', $sEmailAdress, ['readonly' => true, 'class' => 'form-control', 'maxlength' => 254]); ?>
</div>
</div>
</div>
</div>
<div class="row">
<hr/>
</div>
<div class="row">
<div class="col-md-3">
<button class="btn btn-default btn-warning " id="selector__showChangePassword" style="color: white; outline: none;">
<div class="col-md-6">
<button type="button" class="btn btn-default btn-warning " id="selector__showChangePassword" style="color: white; outline: none;">
<i class="fa fa-lock"></i>
<?= gT("Change password and/or Email") ?>
<?= gT("Change password") ?>
</button>
<button type="button" class="btn btn-default btn-warning " id="selector__showChangeEmail" style="color: white; outline: none;">
<i class="fa fa-lock"></i>
<?= gT("Change email") ?>
</button>

<br/>
</div>
</div>
<div class="row selector__password-row hidden">
<input type="hidden" id="newpasswordshown" name="newpasswordshown" value="0"/>
<div class="row selector__oldpassword-row hidden">
<div class="col-md-6">
<div class="form-group">
<label for="oldpassword" class="control-label">
Expand All @@ -149,8 +159,9 @@
</div>
</div>
</div>
<div class="col-md-6">
</div>
</div>
<div class="row selector__password-row hidden">
<input type="hidden" id="newpasswordshown" name="newpasswordshown" value="0"/>
<div class="col-md-6">
<div class="form-group">
<?php echo TbHtml::label(gT("New password:"), 'lang', ['class' => " control-label"]); ?>
Expand All @@ -170,11 +181,14 @@
</div>
</div>
</div>
</div>
<div class="row selector__email-row hidden">
<input type="hidden" id="newemailshown" name="newemailshown" value="0"/>
<div class="col-sm-12 col-md-6">
<div class="form-group">
<?php echo TbHtml::label(gT("Email:"), 'lang', ['class' => " control-label"]); ?>
<?php echo TbHtml::label(gT("New email:"), 'lang', ['class' => " control-label"]); ?>
<div class="">
<?php echo TbHtml::emailField('email', $sEmailAdress, ['class' => 'form-control', 'maxlength' => 254]); ?>
<?php echo TbHtml::emailField('newemail', $sEmailAdress, ['class' => 'form-control', 'maxlength' => 254]); ?>
</div>
</div>
</div>
Expand Down Expand Up @@ -412,17 +426,5 @@

</div>

<?php App()->getClientScript()->registerScript(
"personalSettings",
"$('#selector__showChangePassword').on('click', function(e){
e.preventDefault();
$('#newpasswordshown').val('1');
$('.selector__password-row').removeClass('hidden').find('input').each(
function(i,item){
$(item).prop('disabled', false);
}
);
$(this).closest('div').remove();
});",
LSYii_ClientScript::POS_POSTSCRIPT
);
<?php
Yii::app()->getClientScript()->registerScriptFile(Yii::app()->getConfig('adminscripts') . 'personalsettings.js');
23 changes: 23 additions & 0 deletions assets/scripts/admin/personalsettings.js
@@ -0,0 +1,23 @@
$(document).on('click', '#selector__showChangePassword', function(e){
e.preventDefault();
$('#newpasswordshown').val('1');
showHiddenRow('.selector__oldpassword-row');
showHiddenRow('.selector__password-row');
$(this).closest('div').remove();
});

$(document).on('click', '#selector__showChangeEmail', function(e){
e.preventDefault();
$('#newemailshown').val('1');
showHiddenRow('.selector__oldpassword-row');
showHiddenRow('.selector__email-row');
$(this).closest('div').remove();
});

function showHiddenRow(selector) {
$(selector).removeClass('hidden').find('input').each(
function(i,item){
$(item).prop('disabled', false);
}
);
}

0 comments on commit 8a093fd

Please sign in to comment.