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:
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.