/**
  * Login action : user login action
  * @access public
  * @return void
  */
 public function login()
 {
     $this->form = new LoginForm();
     if ($this->request->is_post()) {
         if ($this->form->is_valid($this->params['user'])) {
             try {
                 $this->user = User::$objects->get('login = ?', 'password = ?', array($this->params['user']['login'], $this->params['user']['password']));
                 $this->session['user'] = $this->user;
                 if ($this->params['user']['persistent']) {
                     $psession = new Psession();
                     $psession->user = $this->user;
                     $psession->touch();
                     $this->session['psession'] = $psession;
                 }
                 if (isset($this->params['return_to'])) {
                     $this->redirect_to($this->params['return_to']);
                 } else {
                     $this->redirect_to(home_url());
                 }
                 $logger = new SLogger('../log/connection.log');
                 $logger->info("{$this->user->login} ({$this->user->id}) connects");
                 return;
             } catch (SRecordNotFound $e) {
             }
         }
         $this->flash['error'] = __('Fail to connect : User not found or password may be wrong.');
         return;
     }
 }
 /**
  * true if user is logged in
  * @access protected
  * @return boolean
  */
 protected function authenticate()
 {
     if (isset($this->session['user'])) {
         return true;
     }
     //else
     $psession = Psession::retrieve();
     if ($psession) {
         $user = $psession->user->target();
         $this->session['psession'] = $psession;
         $this->session['user'] = $user;
         return true;
     }
     return false;
 }