Changeset 2343
- Timestamp:
- 10/06/06 17:08:43 (6 years ago)
- Files:
-
- plugins/sfGuardPlugin/config/schema.xml (modified) (1 diff)
- plugins/sfGuardPlugin/lib/model/sfGuardRememberKey.php (added)
- plugins/sfGuardPlugin/lib/model/sfGuardRememberKeyPeer.php (added)
- plugins/sfGuardPlugin/lib/sfGuardBasicSecurityFilter.class.php (added)
- plugins/sfGuardPlugin/lib/user/sfGuardSecurityUser.class.php (modified) (3 diffs)
- plugins/sfGuardPlugin/lib/validator/sfGuardUserValidator.class.php (modified) (4 diffs)
- plugins/sfGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php (modified) (1 diff)
- plugins/sfGuardPlugin/modules/sfGuardAuth/validate/signin.yml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/sfGuardPlugin/config/schema.xml
r2208 r2343 66 66 <column name="module_name" type="VARCHAR" size="100" required="true" primaryKey="true" /> 67 67 </table> 68 <table name="sf_guard_remember_key" phpName="sfGuardPlugin" package="plugins.sfGuardPlugin.lib.model"> 69 <column name="user_id" type="integer" primaryKey="true"/> 70 <foreign-key foreignTable="sf_guard_user" onDelete="cascade"> 71 <reference local="user_id" foreign="id"/> 72 </foreign-key> 73 <column name="remember_key" type="varchar(32)" /> 74 <column name="ip_address" type="varchar(15)" primaryKey="true"/> 75 <column name="created_at" type="TIMESTAMP" /> 76 77 </table> 68 78 </database> 69 79 plugins/sfGuardPlugin/lib/user/sfGuardSecurityUser.class.php
r2207 r2343 139 139 } 140 140 141 public function signIn($user )141 public function signIn($user, $remember = false) 142 142 { 143 143 // signin … … 150 150 $user->setLastLogin(time()); 151 151 $user->save(); 152 } 153 152 153 // remember? 154 if ($remember) 155 { 156 // remove old keys 157 $c = new Criteria(); 158 $expiration_age = sfConfig::get('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); 159 $c->add(sfGuardRememberKeyPeer::CREATED_AT, time()-$expiration_age, Criteria::LESS_THAN); 160 sfGuardRememberKeyPeer::doDelete($c); 161 // generate new keys 162 $key = $this->generate_random_key(); 163 // save key 164 $rk = new sfGuardRememberKey(); 165 $rk->setRememberKey($key); 166 $rk->setSfGuardUser($user); 167 $rk->setIpAddress($_SERVER['REMOTE_ADDR']); 168 $rk->save(); 169 // make key as a cookie 170 sfContext::getInstance()->getResponse()->setCookie('remember', $key, time()+$expiration_age); 171 } 172 } 173 174 protected function generate_random_key ($len = 20) 175 { 176 $string = ''; 177 $pool = 'abcdefghijklmnopqrstuvwzyzABCDEFGHIJKLMNOPQRSTUVWZYZ0123456789'; 178 for ($i = 1; $i <= $len; $i++) { 179 $string .= substr($pool, rand(0,61), 1); 180 } 181 182 return md5($string); 183 } 154 184 public function signOut() 155 185 { … … 158 188 $this->clearCredentials(); 159 189 $this->setAuthenticated(false); 190 $expiration_age = sfConfig::get('app_sf_guard_plugin_remember_key_expiration_age', 15 * 24 * 3600); 191 sfContext::getInstance()->getResponse()->setCookie('remember', '', time()-$expiration_age); 192 160 193 } 161 194 plugins/sfGuardPlugin/lib/validator/sfGuardUserValidator.class.php
r1949 r2343 26 26 $this->getParameterHolder()->set('username_error', 'Username or password is not valid.'); 27 27 $this->getParameterHolder()->set('password_field', 'password'); 28 $this->getParameterHolder()->set('remember_field', 'remember'); 29 28 30 29 31 $this->getParameterHolder()->add($parameters); … … 37 39 $password = $this->getContext()->getRequest()->getParameter($password_field); 38 40 41 $remember = false; 42 $remember_field = $this->getParameterHolder()->get('remember_field'); 43 $remember = $this->getContext()->getRequest()->getParameter($remember_field); 44 45 46 39 47 $username = $value; 40 48 … … 47 55 if ($user->checkPassword($password)) 48 56 { 49 $this->getContext()->getUser()->signIn($user );57 $this->getContext()->getUser()->signIn($user, $remember); 50 58 51 59 return true; … … 53 61 } 54 62 55 $error = $this->getParameterHolder()->get(' login_error');63 $error = $this->getParameterHolder()->get('username_error'); 56 64 57 65 return false; plugins/sfGuardPlugin/modules/sfGuardAuth/templates/signinSuccess.php
r1949 r2343 16 16 <?php echo input_password_tag('password') ?> 17 17 </div> 18 18 <div class="form-row"> 19 <label for="remember">Rememeber me?</label> 20 <?php echo checkbox_tag('remember')?> 21 </div> 19 22 </fieldset> 20 23 21 24 <?php echo input_hidden_tag('referer', $sf_request->getParameter('referer')) ?> 25 22 26 <?php echo submit_tag('sign in') ?> 23 27 <?php echo link_to('Forgot your password?', '@sf_guard_password') ?> plugins/sfGuardPlugin/modules/sfGuardAuth/validate/signin.yml
r1949 r2343 16 16 param: 17 17 password: password 18 remember: remember