commit 54730b8950ff188cfadc1dfd462fbb1b5f6ad939
parent 8369ed09ef61c4e607fe03d9a9bab5bebe101b5a
Author: dankert <devnull@localhost>
Date: Thu, 16 Nov 2006 20:58:57 +0100
Pflicht zu Kennwort?nderung ermitteln.
Diffstat:
1 file changed, 35 insertions(+), 9 deletions(-)
diff --git a/objectClasses/User.class.php b/objectClasses/User.class.php
@@ -20,7 +20,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// ---------------------------------------------------------------------------
// $Log$
-// Revision 1.14 2006-08-30 19:15:26 dankert
+// Revision 1.15 2006-11-16 19:58:57 dankert
+// Pflicht zu Kennwort?nderung ermitteln.
+//
+// Revision 1.14 2006/08/30 19:15:26 dankert
// Erzeugen Kennwort und Laden ?ber Benutzername.
//
// Revision 1.13 2005/04/16 22:25:06 dankert
@@ -83,6 +86,8 @@ class User
var $isAdmin;
var $projects;
var $rights;
+
+ var $mustChangePassword = false;
// Konstruktor
@@ -256,12 +261,13 @@ class User
*/
function loadWithName( $name )
{
+ global $conf;
$db = db_connection();
// Benutzer über Namen suchen
$sql = new Sql( 'SELECT id FROM {t_user}'.
' WHERE name={name}' );
- $sql->setInt( 'name',$name );
+ $sql->setString( 'name',$name );
$userId = $db->getOne( $sql->query );
// Benutzer über Id instanziieren
@@ -385,6 +391,7 @@ class User
$sql->setString ( 'mail' ,$this->mail );
$sql->setString ( 'style' ,$this->style );
$sql->setBoolean( 'isAdmin' ,$this->isAdmin );
+
// Datenbankabfrage ausfuehren
$db->query( $sql->query );
}
@@ -526,10 +533,15 @@ class User
}
else
{
-// Logger::debug( 'checking md5-password '.md5($password).' against database' );
-
// Pruefen ob Kennwort mit Datenbank uebereinstimmt
- if ( $row_user['password'] == md5( $password ) )
+ if ( $row_user['password'] == $password )
+ {
+ $this->mustChangePassword = true;
+
+ // Juchuu, Login ist erfolgreich
+ return true;
+ }
+ elseif ( $row_user['password'] == md5( $password ) )
{
// Juchuu, Login ist erfolgreich
return true;
@@ -542,14 +554,24 @@ class User
}
- // Neues Kennwort fuer diesen Benutzer setzen
- function setPassword( $password )
+ /**
+ * Setzt ein neues Kennwort für diesen Benutzer.
+ *
+ * @param password Kennwortt
+ * @param always true, wenn Kennwort dauerhaft.
+ */
+ function setPassword( $password, $always=true )
{
$db = db_connection();
$sql = new Sql( 'UPDATE {t_user} SET password={password}'.
'WHERE id={userid}' );
- $sql->setString('password',md5($password) );
+
+ if ( $always )
+ $sql->setString('password',md5($password) );
+ else
+ $sql->setString('password',$password );
+
$sql->setInt ('userid' ,$this->userid );
$db->query( $sql->query );
@@ -867,16 +889,20 @@ class User
* Erzeugt ein aussprechbares Kennwort.
*
* Inspired by http://www.phpbuilder.com/annotate/message.php3?id=1014451
+ *
+ * @return String Zufälliges Kennwort
*/
function createPassword()
{
+ global $conf;
+
$pw = '';
$c = 'bcdfghjklmnprstvwz'; //consonants except hard to speak ones
$v = 'aeiou'; //vowels
$a = $c.$v; //both
//use two syllables...
- for ( $i=0; $i < 2; $i++ )
+ for ( $i=0; $i < intval($conf['security']['password']['min_length'])/3; $i++ )
{
$pw .= $c[rand(0, strlen($c)-1)];
$pw .= $v[rand(0, strlen($v)-1)];