summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/user/controllers/login.php42
-rw-r--r--modules/user/controllers/logout.php21
-rw-r--r--modules/user/controllers/user.php39
-rw-r--r--modules/user/libraries/Login_Form.php44
-rw-r--r--modules/user/views/login.html.php12
-rw-r--r--themes/default/js/login.js11
-rw-r--r--themes/default/views/header.html.php11
-rw-r--r--themes/default/views/page.html.php1
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>