openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 7e3d0affa7eebf90ab7d5431471948dd489b5c24
parent 9221f76743aaa03db7fae2dc12560b53df7a2587
Author: Jan Dankert <devnull@localhost>
Date:   Sat,  2 Dec 2017 01:59:34 +0100

Fix: Ändern des Kennwortes ist wieder möglich. Zusätzlich wird dabei nun auch die Kennwortlänge geprüft.

Diffstat:
action/ProfileAction.class.php | 4++++
model/User.class.php | 26+++++++++++++++++++++++++-
2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/action/ProfileAction.class.php b/action/ProfileAction.class.php @@ -207,6 +207,10 @@ class ProfileAction extends Action { $this->addValidationError('password2','PASSWORDS_DO_NOT_MATCH'); } + elseif ( strlen($this->getRequestVar('password1'))<intval(config('security','password','min_length')) ) + { + $this->addValidationError('password1','PASSWORD_MINLENGTH',array('minlength'=>config('security','password','min_length'))); + } else { $this->user->setPassword( $this->getRequestVar('password1') ); diff --git a/model/User.class.php b/model/User.class.php @@ -44,7 +44,9 @@ class User extends ModelBase var $language; var $timezone; - var $pwExpires; + var $passwordExpires; + var $passwordAlgo; + var $lastLogin; var $otpSecret; var $hotp ; @@ -868,6 +870,28 @@ SQL return $styles; } + /** + * Ueberpruefen des Kennwortes. + * + * Es wird festgestellt, ob das Kennwort dem des Benutzers entspricht. + * Es wird dabei nur gegen die interne Datenbank geprüft. Weitere + * Loginmodule werden nicht aufgerufen! + * Diese Methode darf kein Bestandteil des Logins sein, da nur das Kennwort geprüft wird! + * Kennwortablauf und Token werden nicht geprüft! + */ + function checkPassword( $password ) + { + $db = db_connection(); + // Laden des Benutzers aus der Datenbank, um Password-Hash zu ermitteln. + $sql = $db->sql( 'SELECT * FROM {{user}}'. + ' WHERE id={userid}' ); + $sql->setInt( 'userid',$this->userid ); + $row_user = $sql->getRow( $sql ); + + // Pruefen ob Kennwort mit Datenbank uebereinstimmt. + return Password::check($this->pepperPassword($password),$row_user['password_hash'],$row_user['password_algo']); + } + /** * Erzeugt ein aussprechbares Kennwort.