/** * @fn login * @short Action method to perform a login. */ function login() { if ($this->request->is_post()) { $conn = Db::get_connection(); $user_factory = new User(); $users = $user_factory->find_all(array('where_clause' => "`username` = '{$conn->escape($_POST['username'])}' AND `password` = '" . md5($_POST['password']) . "'", 'limit' => 1)); if (count($users) > 0) { $user = $users[0]; $expires = $_POST['leave_me_registered'] ? Time::next_year() : Time::tomorrow(); Cookie::set('_u', $user->username, $expires, "/", FALSE); Cookie::set('_uid', md5(Login::magic_phrase . $user->password), $expires, "/", FALSE); // Annotates the login in the database $user_login = new UserLogin(); $user_login->user_id = $user->id; $user_login->performed_at = date("Y-m-d H:i:s"); $user_login->save(); $this->flash(sprintf(l('Welcome, %s'), $user->first), 'info'); // When login is required to access a particular action, we may store controller & action in a session, // perform login, then redirect to the action requested in the first place if (isset($_SESSION['redirect_to'])) { $this->redirect_to(array('controller' => $_SESSION['redirect_to']['controller'], 'action' => $_SESSION['redirect_to']['action'])); } else { $this->redirect_to(array('controller' => 'home')); } Db::close_connection($conn); } else { $this->flash(l('Bad username / password'), 'error'); } } $this->redirect_to(array('action' => 'index')); }
/** * @fn test_tomorrow * @short Test method for tomorrow. */ public function test_tomorrow() { $this->assertEquals(time() + 24 * 3600, Time::tomorrow(), 'Bad timestamp'); $this->assertTrue(Time::tomorrow() > time(), 'Bad timestamp'); }