_try_login(); } else { print $this->_login_form(); } } private function _try_login() { $form = $this->_login_form(); $valid = $form->validate(); if ($valid) { $user = ORM::factory("user")->where("name", $form->login->inputs["name"]->value)->find(); if (!$user->loaded || !user::is_correct_password($user, $form->login->password->value)) { log::warning( "user", t("Failed login for {{name}}", array("username" => $form->login->inputs["name"]->value))); $form->login->inputs["name"]->add_error("invalid_login", 1); $valid = false; } } if ($valid) { user::login($user); log::info("user", t("User {{name}} logged in", array("name" => $user->name))); print json_encode( array("result" => "success")); } else { print json_encode( array("result" => "error", "form" => $form->__toString())); } } private function _login_form() { $form = new Forge(url::current(true), "", "post", array("id" => "gLoginForm")); $group = $form->group("login")->label(t("Login")); $group->input("name")->label(t("Name"))->id("gName")->class(null); $group->password("password")->label(t("Password"))->id("gPassword")->class(null); $group->inputs["name"]->error_messages("invalid_login", t("Invalid name or password")); $group->submit("")->value(t("Login")); return $form; } }