/** * 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; }