From 3ac58fb142e3b17987ac6b075a523fb2a09aa51f Mon Sep 17 00:00:00 2001 From: David Siegfried <david.siegfried@uni-vechta.de> Date: Thu, 12 May 2022 13:12:26 +0000 Subject: [PATCH] fix editing passwordadmission, closes #1045 Closes #1045 Merge request studip/studip!613 --- app/controllers/admission/rule.php | 6 +++--- app/views/admission/rule/configure.php | 8 +++++++- .../passwordadmission/PasswordAdmission.class.php | 15 +++++++++------ .../passwordadmission/templates/configure.php | 7 ++++--- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/controllers/admission/rule.php b/app/controllers/admission/rule.php index bc5a88a96ec..205e1a02d70 100644 --- a/app/controllers/admission/rule.php +++ b/app/controllers/admission/rule.php @@ -116,12 +116,12 @@ class Admission_RuleController extends AuthenticatedController * configure a rule of the given type. * * @param String $ruleType Class name of the rule to check. + * @param String $ruleId ID of the rule to save, or empty if this is a new rule. */ - public function validate_action($ruleType) + public function validate_action($ruleType, $ruleId = '') { $rules = AdmissionRule::getAvailableAdmissionRules(); - $rule = new $ruleType(); + $rule = new $ruleType($ruleId); $this->errors = $rule->validate(Request::getInstance()); } - } diff --git a/app/views/admission/rule/configure.php b/app/views/admission/rule/configure.php index 17914dab90f..028b45508dd 100644 --- a/app/views/admission/rule/configure.php +++ b/app/views/admission/rule/configure.php @@ -4,7 +4,13 @@ use Studip\Button, Studip\LinkButton; <div id="errormessage"></div> <form action="<?= $controller->url_for('admission/rule/save', get_class($rule), $rule->getId()) ?>" id="ruleform" class="default" - onsubmit="return STUDIP.Admission.checkAndSaveRule('<?= $rule->getId() ?>', 'errormessage', '<?= $controller->url_for('admission/rule/validate', get_class($rule)) ?>', 'rules', '<?= $controller->url_for('admission/rule/save', get_class($rule), $rule->getId()) ?>')"> + onsubmit="return STUDIP.Admission.checkAndSaveRule( + '<?= $rule->getId() ?>', + 'errormessage', + '<?= $controller->url_for('admission/rule/validate', get_class($rule), $rule->getId()) ?>', + 'rules', + '<?= $controller->url_for('admission/rule/save', get_class($rule), $rule->getId()) ?>' + )"> <?= $ruleTemplate ?> <footer data-dialog-button> <input type="hidden" id="action" name="action" value=""> diff --git a/lib/admissionrules/passwordadmission/PasswordAdmission.class.php b/lib/admissionrules/passwordadmission/PasswordAdmission.class.php index c0aa97070a7..6a99066faf9 100644 --- a/lib/admissionrules/passwordadmission/PasswordAdmission.class.php +++ b/lib/admissionrules/passwordadmission/PasswordAdmission.class.php @@ -19,20 +19,20 @@ require_once 'vendor/phpass/PasswordHash.php'; class PasswordAdmission extends AdmissionRule { - // --- ATTRIBUTES --- /* * Password hasher (phpass library) */ - var $hasher = null; + public $hasher = null; /* * Crypted password. */ - var $password = ''; + public $password = ''; // --- OPERATIONS --- + public $new = false; /** * Standard constructor. * @@ -48,6 +48,7 @@ class PasswordAdmission extends AdmissionRule $this->load(); } else { $this->id = $this->generateId('passwordadmissions'); + $this->new = true; } } @@ -173,7 +174,9 @@ class PasswordAdmission extends AdmissionRule */ public function setAllData($data) { parent::setAllData($data); - $this->setPassword($data['password1']); + if ($this->new || $data['password1'] !== '') { + $this->setPassword($data['password1']); + } return $this; } @@ -227,10 +230,10 @@ class PasswordAdmission extends AdmissionRule public function validate($data) { $errors = parent::validate($data); - if (!$data['password1']) { + if ($data['password1'] === '' && $this->new) { $errors[] = _('Das Passwort darf nicht leer sein.'); } - if ($data['password1'] != $data['password2']) { + if ($data['password1'] !== $data['password2']) { $errors[] = _('Das Passwort stimmt nicht mit der Wiederholung überein.'); } return $errors; diff --git a/lib/admissionrules/passwordadmission/templates/configure.php b/lib/admissionrules/passwordadmission/templates/configure.php index e9ccac1618f..4642dec2805 100644 --- a/lib/admissionrules/passwordadmission/templates/configure.php +++ b/lib/admissionrules/passwordadmission/templates/configure.php @@ -5,10 +5,11 @@ </label> <label> <?= _('Zugangspasswort') ?>: - <input type="password" name="password1" size="25" max="40" value="<?= htmlReady($rule->getPassword()) ?>" required> + <input type="password" name="password1" size="25" max="40" + value="<?= htmlReady(Request::get('password1')) ?>" <?= $rule->new ? 'required' : ''?>> </label> -<br/> <label> <?= _('Passwort wiederholen') ?>: - <input type="password" name="password2" size="25" max="40" value="<?= htmlReady($rule->getPassword()) ?>" required> + <input type="password" name="password2" size="25" max="40" + value="<?= htmlReady(Request::get('password2')) ?>" <?= $rule->new ? 'required' : ''?>> </label> -- GitLab