diff options
-rw-r--r-- | modules/user/controllers/login.php | 42 | ||||
-rw-r--r-- | modules/user/controllers/logout.php | 21 | ||||
-rw-r--r-- | modules/user/controllers/user.php | 39 | ||||
-rw-r--r-- | modules/user/libraries/Login_Form.php | 44 | ||||
-rw-r--r-- | modules/user/views/login.html.php | 12 | ||||
-rw-r--r-- | themes/default/js/login.js | 11 | ||||
-rw-r--r-- | themes/default/views/header.html.php | 11 | ||||
-rw-r--r-- | themes/default/views/page.html.php | 1 |
8 files changed, 173 insertions, 8 deletions
diff --git a/modules/user/controllers/login.php b/modules/user/controllers/login.php new file mode 100644 index 00000000..25e2abea --- /dev/null +++ b/modules/user/controllers/login.php @@ -0,0 +1,42 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class Login_Controller extends Controller { + public function index() { + $this->template->title = "User Login"; + + $form = new Login_Form(); + + if ($form->validate()) { + // Load the user + $user = ORM::factory("user")->where("display_name", $form->username->value)->find(); + if (!$user->loaded) { + $form->error_message = "Invalid username or password"; + } else { + if (user_password::is_correct_password($user,$form->password->value)) { + user::login($user); + url::redirect("user/success.html"); + } else { + $form->error_message = "Invalid username or password"; + } + } + } + $form->render(); + } +}
\ No newline at end of file diff --git a/modules/user/controllers/logout.php b/modules/user/controllers/logout.php new file mode 100644 index 00000000..c26c6776 --- /dev/null +++ b/modules/user/controllers/logout.php @@ -0,0 +1,21 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class Logout_Controller extends Controller { +}
\ No newline at end of file diff --git a/modules/user/controllers/user.php b/modules/user/controllers/user.php index 9b41a11e..b2160cda 100644 --- a/modules/user/controllers/user.php +++ b/modules/user/controllers/user.php @@ -17,16 +17,41 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class User_Controller extends Controller { - public function login() { - +class User_Controller extends REST_Controller { + protected $resource_type = "user"; + + /** + * @see Rest_Controller::_get($resource) + */ + public function _get($user) { + $template = new View("user_registration.html"); + + // @todo: this needs to be data-driven + $theme = new Theme("default", $template); + + $template->set_global('user', Session::instance()->get('user', null)); + + print $template->render(); + } + + /** + * @see Rest_Controller::_put($resource) + */ + public function _put($resource) { + throw new Exception("@todo User_Controller::_put NOT IMPLEMENTED"); } - public function logout() { - + /** + * @see Rest_Controller::_post($resource) + */ + public function _post($resource) { + throw new Exception("@todo User_Controller::_post NOT IMPLEMENTED"); } - public function register() { - + /** + * @see Rest_Controller::_delete($resource) + */ + public function _delete($resource) { + throw new Exception("@todo User_Controller::_delete NOT IMPLEMENTED"); } }
\ No newline at end of file diff --git a/modules/user/libraries/Login_Form.php b/modules/user/libraries/Login_Form.php new file mode 100644 index 00000000..6874cbd4 --- /dev/null +++ b/modules/user/libraries/Login_Form.php @@ -0,0 +1,44 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class Login_Form_Core extends Forge { + protected $error_message; + + public static function factory() { + return new Login_Form(); + } + + public function __construct() { + parent::__construct("login.html"); + $this->legend="Login"; + $this->input("username")->rules("required|length[4,32]"); + $this->password("password")->rules("required|length[5,40]"); + $this->submit("Login"); + } + + public function render($template = 'login.html', $custom = true) { + $form = parent::render($template, $custom); + $form->error_message = $this->error_message; + return $form; + } + + public function __set($key, $value) { + $this->$key = $value; + } +}
\ No newline at end of file diff --git a/modules/user/views/login.html.php b/modules/user/views/login.html.php new file mode 100644 index 00000000..cfb22062 --- /dev/null +++ b/modules/user/views/login.html.php @@ -0,0 +1,12 @@ +<form id="gLogin"> + <label for="username">Username</label> + <input type="text" class="text" id="username" /> + <label for="password">Password</label> + <input type="password" class="password" id="password" /> + <input type="submit" class="submit" value="<?= _("Login")?>" /> + <? if (!empty($error_message)): ?> + <p class="error"> + <?= $error_message ?> + </p> + <? endif;?> +</form> diff --git a/themes/default/js/login.js b/themes/default/js/login.js new file mode 100644 index 00000000..bc18fe41 --- /dev/null +++ b/themes/default/js/login.js @@ -0,0 +1,11 @@ +function show_login() { + $("#gLoginLink").fadeOut("fast"); + $("#gLoginForm").fadeIn("fast"); + $("#gLoginClose").fadeIn("fast"); +} + +function close_login() { + $("#gLoginLink").fadeIn("fast"); + $("#gLoginForm").fadeOut("fast"); + $("#gLoginClose").fadeOut("fast"); +}
\ No newline at end of file diff --git a/themes/default/views/header.html.php b/themes/default/views/header.html.php index 59e1f161..8ebc1295 100644 --- a/themes/default/views/header.html.php +++ b/themes/default/views/header.html.php @@ -4,12 +4,21 @@ <div id="gLoginMenu"> <? if (!user::is_logged_in($user)): ?> + <a href="#"><?=_("Recover password") ?></a> | <a href="<?= url::site("user/register")?>"><?= _("Register") ?></a> | - <a href="<?= url::site("login")?>"><?= _("Login") ?></a> + <span id="gLoginLink"> + <a href="javascript:show_login()"><?= _("Login") ?></a> + </span> + <span id="gLoginClose" class="gDisplayNone"> + <?= _("Login") ?> | <a href="javascript:close_login()">X</a> + </span> <? else: ?> <a href="<?= url::site("user/update")?>"><?= _("Modify Profile") ?></a> | <a href="<?= url::site("logout")?>"><?= _("Logout") ?></a> <? endif; ?> + <span id="gLoginForm" class="gDisplayNone" > + <?= Login_Form::factory()->render() ?> + </span> </div> <ul id="gSiteMenu"> <li><a href="<?= url::base() ?>"><?= _("HOME") ?></a></li> diff --git a/themes/default/views/page.html.php b/themes/default/views/page.html.php index 2f6a30d4..b8655c18 100644 --- a/themes/default/views/page.html.php +++ b/themes/default/views/page.html.php @@ -13,6 +13,7 @@ media="screen,print,projection" /> <script src="<?= url::file("lib/jquery.js") ?>" type="text/javascript"></script> <script src="<?= url::file("lib/jquery.jeditable.js") ?>" type="text/javascript"></script> + <script src="<?= $theme->url("js/login.js") ?>" type="text/javascript"></script> </head> <body> |