Dsao_Model_User_Login Klassenreferenz

Model-Klasse fuer Login-Controller. Mehr ...

Klassendiagramm für Dsao_Model_User_Login:

Dsao_Model_Abstract

Aufstellung aller Elemente

Öffentliche Methoden

 cookieLogin ()
 Versucht, den Benutzer mit den übergebenen Cookie-Daten einzuloggen.
 login (Dsao_User $user, $autologin=false)
 Authentifiziert Benutzer durch uebergebenen Benutzernamen und Passwort.
 logout ()
 Loescht Sessiondaten und -cookie.
 sendNewPasswordMail (Dsao_User $user)
 Versendet Mail mit neuem Passwort.

Geschützte Methoden

 _cookieRegenerate ()
 Regneriert den Hash des Autologin-Cookies oder erstellt einen neuen.
 _init ()
 Initialisiert Auth-Objekt.
 _writeUserToSession ()
 Lädt Benutzerdaten neu und schreibt den Benutzer dann in die Session.

Geschützte Attribute

 $_auth = null
 Zend_Auth, Auth-Objekt.
 $_user = null
 stdClass, Sessiondaten


Ausführliche Beschreibung

Model-Klasse fuer Login-Controller.

Die Klasse enthaelt Methoden, um dem Login-Controller die noetige Funktionalitaet zur Verfuegung zu stellen.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Login.php 512 2009-06-19 08:11:48Z saviola777 $

Definiert in Zeile 12 der Datei Login.php.


Dokumentation der Elementfunktionen

Dsao_Model_User_Login::_cookieRegenerate (  )  [protected]

Regneriert den Hash des Autologin-Cookies oder erstellt einen neuen.

Rückgabe:
void

Definiert in Zeile 29 der Datei Login.php.

Benutzt Dsao_Hash_User::factory().

Wird benutzt von cookieLogin() und login().

00030   {
00031     // Hash erstellen und Duplikate löschen
00032     $hashAutologin = Dsao_Hash_User::factory(null, '/user/login/autologin',
00033       array('idUser' => $this->_user->getId()))->insert()->deleteDuplicates();
00034 
00035     // Cookie erstellen, in den ein relativer URI geschrieben wird
00036     setrawcookie('autologin',
00037       $hashAutologin->getUri()->getUriString(),
00038       time()+(60*60*24*30), // einen Monat gueltig
00039       '/', // Gueltig auf dem ganzen Server
00040       $_SERVER['SERVER_NAME'], // Gueltig fuer alle Subdomains
00041       false, // Auch ohne https uebertragen
00042       true); // Nur ueber HTTP auslesbar (nicht ueber JS o.ae.)
00043   }

Dsao_Model_User_Login::_init (  )  [protected]

Initialisiert Auth-Objekt.

Rückgabe:
void

Erneute Implementation von Dsao_Model_Abstract.

Definiert in Zeile 50 der Datei Login.php.

00051   {
00052     $this->_auth = Zend_Auth::getInstance();
00053   }

Dsao_Model_User_Login::_writeUserToSession (  )  [protected]

Lädt Benutzerdaten neu und schreibt den Benutzer dann in die Session.

Rückgabe:
void

Definiert in Zeile 60 der Datei Login.php.

Wird benutzt von cookieLogin() und login().

00061   {
00062     // Benutzerdaten laden
00063     $this->_user->refresh();
00064 
00065     // Benutzer als gültig und schreibgeschützt markieren
00066     $this->_user->setValid()->setReadOnly();
00067 
00068     // Sessiondaten speichern
00069     $this->_auth->getStorage()->write(serialize($this->_user));
00070 
00071     // Session Fixierung
00072     $defaultNamespace = new Zend_Session_Namespace();
00073 
00074     // Falls Session noch nicht initialisiert
00075     if (!isset($defaultNamespace->initialized))
00076     {
00077         Zend_Session::regenerateId();
00078         $defaultNamespace->initialized = true;
00079     }
00080   }

Dsao_Model_User_Login::cookieLogin (  ) 

Versucht, den Benutzer mit den übergebenen Cookie-Daten einzuloggen.

Rückgabe:
bool, ob Einloggen erfolgreich war

Definiert in Zeile 87 der Datei Login.php.

Benutzt _cookieRegenerate(), _writeUserToSession() und Dsao_Hash_User::factory().

00088   {
00089     // Falls kein Cookie vorhanden
00090     if (!isset($_COOKIE['autologin']))
00091     {
00092       return false;
00093     }
00094 
00095     // Hash aus Cookie erstellen
00096     $hashAutologin = Dsao_Hash_User::factory(null, $_COOKIE['autologin']);
00097 
00098     // Falls Cookie gültig ist
00099     if ($hashAutologin->isValid())
00100     {
00101       $this->_user = new Dsao_User(array('id' => $hashAutologin->idUser));
00102 
00103       $this->_writeUserToSession();
00104 
00105       $this->_cookieRegenerate();
00106 
00107       return true;
00108     }
00109 
00110     return false;
00111   }

Dsao_Model_User_Login::login ( Dsao_User user,
autologin = false 
)

Authentifiziert Benutzer durch uebergebenen Benutzernamen und Passwort.

Parameter:
$user Dsao_User, Benutzer
$autologin bool, ob Autologin-Cookie gesetzt werden soll
Rückgabe:
bool, ob Login erfolgreich war

Definiert in Zeile 120 der Datei Login.php.

Benutzt _cookieRegenerate() und _writeUserToSession().

00121   {
00122     // Auth-Adapter für die DB vorbereiten
00123     $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get('db'));
00124     $authAdapter->setTableName('user_data')
00125                 ->setIdentityColumn('username')
00126                 ->setCredentialColumn('password')
00127                 ->setIdentity($user->username)
00128                 ->setCredential($user->password);
00129 
00130     // Zend_Auth_Result, Resultat der Authentifizierung
00131     $result = $this->_auth->authenticate($authAdapter);
00132 
00133     // Falls Authentifizierung erfolgreich
00134     if ($result->isValid())
00135     {
00136       // Benutzer-ID auslesen und Benutzerobjekt erstellen
00137       $this->_user = new Dsao_User(array(
00138         'id' => $authAdapter->getResultRowObject('id')->id));
00139 
00140       $this->_writeUserToSession();
00141 
00142       // Falls Autologin-Cookie gesetzt werden soll
00143       if ($autologin)
00144       {
00145         $this->_cookieRegenerate();
00146       }
00147 
00148       return true;
00149     }
00150 
00151     return false;
00152   }

Dsao_Model_User_Login::logout (  ) 

Loescht Sessiondaten und -cookie.

Rückgabe:
void

Definiert in Zeile 159 der Datei Login.php.

00160   {
00161     // Autologin Cookie zuruecksetzen
00162     if (isset($_COOKIE['autologin']))
00163     {
00164       setrawcookie('autologin',
00165         '', // leerer Inhalt
00166         time()-3600, // Ist schon abgelaufen -> Browser soll Cookie loeschen
00167         '/',
00168         '.'.$_SERVER['SERVER_NAME'],
00169         false,
00170         true);
00171     }
00172 
00173     // Benutzerdaten aus Session loeschen
00174     Zend_Auth::getInstance()->clearIdentity();
00175 
00176     // Session komplett loeschen
00177     Zend_Session::destroy(true);
00178   }

Dsao_Model_User_Login::sendNewPasswordMail ( Dsao_User user  ) 

Versendet Mail mit neuem Passwort.

Parameter:
$user Dsao_User, Objekt mit Benutzerdaten
Rückgabe:
bool, ob Verschicken der Mail erfolgreich war

Definiert in Zeile 186 der Datei Login.php.

Benutzt Dsao_View_Smarty::sprintf().

00187   {
00188     // E-Mail vorbereiten
00189     $content = Dsao_View_Smarty::sprintf
00190       ('user_login_password_email_content',
00191       array
00192         (
00193           'password'      => $user->passwordNew->getPassword(),
00194           'uri'           => $user->hash->getUri()
00195             ->getUriString(true, false, true),
00196         ));
00197 
00198     // string, Betreff
00199     $subject  = Zend_Registry::get('translate')->
00200                   _('user_login_password_email_subject');
00201 
00202     $mail = new Dsao_Mail($user, $subject, $content);
00203 
00204     // E-Mail versenden
00205     return $mail->send();
00206   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:12 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1