diff options
author | Friendika <info@friendika.com> | 2010-12-24 15:59:12 -0800 |
---|---|---|
committer | Friendika <info@friendika.com> | 2010-12-24 15:59:12 -0800 |
commit | c217e9da345d6c6c0d42da3a0de39294a4454f6f (patch) | |
tree | 22b3984073463333fd002cf43b28ecd3d6f84589 /include/auth.php | |
parent | 1438b3d67de99a68b1790ad07dde88db8a41a2b8 (diff) | |
download | volse-hubzilla-c217e9da345d6c6c0d42da3a0de39294a4454f6f.tar.gz volse-hubzilla-c217e9da345d6c6c0d42da3a0de39294a4454f6f.tar.bz2 volse-hubzilla-c217e9da345d6c6c0d42da3a0de39294a4454f6f.zip |
add authentication plugin hooks
Diffstat (limited to 'include/auth.php')
-rw-r--r-- | include/auth.php | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/include/auth.php b/include/auth.php index fe09ef160..bc77e5dbc 100644 --- a/include/auth.php +++ b/include/auth.php @@ -132,17 +132,38 @@ else { } if((x($_POST,'auth-params')) && $_POST['auth-params'] === 'login') { - // process login request - - $r = q("SELECT * FROM `user` - WHERE ( `email` = '%s' OR `nickname` = '%s' ) AND `password` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1", - dbesc(trim($_POST['openid_url'])), - dbesc(trim($_POST['openid_url'])), - dbesc($encrypted)); - if(($r === false) || (! count($r))) { - notice( t('Login failed.') . EOL ); - goaway($a->get_baseurl()); - } + + $addon_auth = array( + 'name' => trim($_POST['openid_url']), + 'password' => trim($_POST['password']), + 'authenticated' => 0 + ); + + /** + * + * A plugin indicates successful login by setting 'authenticated' to non-zero value + * Plugins should never set 'authenticated' except to indicate success - as hooks may be chained + * and later plugins should not interfere with an earlier one that succeeded. + * + */ + + call_hooks('authenticate', $addon_auth); + + if(! $addon_auth['authenticated']) { + // process login request + + $r = q("SELECT * FROM `user` WHERE ( `email` = '%s' OR `nickname` = '%s' ) + AND `password` = '%s' AND `blocked` = 0 AND `verified` = 1 LIMIT 1", + dbesc(trim($_POST['openid_url'])), + dbesc(trim($_POST['openid_url'])), + dbesc($encrypted) + ); + if(($r === false) || (! count($r))) { + notice( t('Login failed.') . EOL ); + goaway($a->get_baseurl()); + } + } + $_SESSION['uid'] = $r[0]['uid']; $_SESSION['theme'] = $r[0]['theme']; $_SESSION['authenticated'] = 1; @@ -167,6 +188,8 @@ else { intval($_SESSION['uid']) ); + call_hooks('logged_in', $a->user); + header('X-Account-Management-Status: active; name="' . $a->user['username'] . '"; id="' . $a->user['nickname'] .'"'); if(($a->module !== 'home') && isset($_SESSION['return_url'])) goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); |