aboutsummaryrefslogtreecommitdiff
path: root/actions
diff options
context:
space:
mode:
Diffstat (limited to 'actions')
-rw-r--r--actions/login.php64
1 files changed, 28 insertions, 36 deletions
diff --git a/actions/login.php b/actions/login.php
index 936d0a7d9..1b4fbe1fd 100644
--- a/actions/login.php
+++ b/actions/login.php
@@ -12,53 +12,45 @@ $persistent = get_input("persistent", FALSE);
$result = FALSE;
if (empty($username) || empty($password)) {
- register_error(elgg_echo('loginerror'));
+ register_error(elgg_echo('login:empty'));
forward();
}
-// check first if logging in with email address
+// check if logging in with email address
+// @todo Are usernames with @ not allowed?
if (strpos($username, '@') !== FALSE && ($users = get_user_by_email($username))) {
$username = $users[0]->username;
}
-if ($user = authenticate($username, $password)) {
- $result = login($user, $persistent);
+$result = elgg_authenticate($username, $password);
+if ($result !== true) {
+ register_error($result);
+ forward(REFERER);
}
-// forward to correct page
-if ($result) {
- system_message(elgg_echo('loginok'));
+$user = get_user_by_username($username);
+if (!$user) {
+ register_error(elgg_echo('login:baduser'));
+ forward(REFERER);
+}
- if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
- $forward_url = $_SESSION['last_forward_from'];
- unset($_SESSION['last_forward_from']);
+try {
+ login($user, $persistent);
+} catch (LoginException $e) {
+ register_error($e->getMessage());
+ forward(REFERER);
+}
- forward($forward_url);
- } else {
- if (get_input('returntoreferer')) {
- forward(REFERER);
- } else {
- // forward to index for front page overrides.
- // index will forward to dashboard if appropriate.
- forward('index.php');
- }
- }
+// forward to correct page
+if (isset($_SESSION['last_forward_from']) && $_SESSION['last_forward_from']) {
+ $forward_url = $_SESSION['last_forward_from'];
+ unset($_SESSION['last_forward_from']);
+} elseif (get_input('returntoreferer')) {
+ $forward_url = REFERER;
} else {
- register_error(elgg_echo('loginerror'));
- // // let a plugin hook say why login failed or react to it.
- // $params = array(
- // 'username' => $username,
- // 'password' => $password,
- // 'persistent' => $persistent,
- // 'user' => $user
- // );
- //
- // // Returning FALSE to this function will generate a standard
- // // "Could not log you in" message.
- // // Plugins should use this hook to provide details, and then return TRUE.
- // if (!elgg_trigger_plugin_hook('failed_login', 'user', $params, FALSE)) {
- // register_error(elgg_echo('loginerror'));
- // }
+ // forward to main index page
+ $forward_url = '';
}
-forward(REFERRER);
+system_message(elgg_echo('loginok'));
+forward($forward_url);