
Ö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 | |
Die Klasse enthaelt Methoden, um dem Login-Controller die noetige Funktionalitaet zur Verfuegung zu stellen.
Definiert in Zeile 12 der Datei Login.php.
| Dsao_Model_User_Login::_cookieRegenerate | ( | ) | [protected] |
Regneriert den Hash des Autologin-Cookies oder erstellt einen neuen.
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.
Erneute Implementation von Dsao_Model_Abstract.
Definiert in Zeile 50 der Datei Login.php.
| Dsao_Model_User_Login::_writeUserToSession | ( | ) | [protected] |
Lädt Benutzerdaten neu und schreibt den Benutzer dann in die Session.
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.
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.
| $user | Dsao_User, Benutzer | |
| $autologin | bool, ob Autologin-Cookie gesetzt werden soll |
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.
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.
| $user | Dsao_User, Objekt mit Benutzerdaten |
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 }
1.5.7.1