diff options
author | Dries Buytaert <dries@buytaert.net> | 2004-08-14 07:00:27 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2004-08-14 07:00:27 +0000 |
commit | 334f24b44893bdce0550ff4741d5609c73572113 (patch) | |
tree | d5d22b42926789b2df198f5c030ef871a8c05cc9 | |
parent | 064089a3fcb6991a3db98ae55bf4a1ad688a8782 (diff) | |
download | brdo-334f24b44893bdce0550ff4741d5609c73572113.tar.gz brdo-334f24b44893bdce0550ff4741d5609c73572113.tar.bz2 |
- Patch by James: made the blogapi work with DA.
* Refactored the "brains" of user_login() to user_authenticate($user, $pass) so that blogapi (and others) can authenticate users (including those using DistAuth) without all the html and drupal_goto calls
* Updates blogapi_validate_user to use user_authenticate.
-rw-r--r-- | modules/blogapi.module | 2 | ||||
-rw-r--r-- | modules/blogapi/blogapi.module | 2 | ||||
-rw-r--r-- | modules/user.module | 89 | ||||
-rw-r--r-- | modules/user/user.module | 89 |
4 files changed, 96 insertions, 86 deletions
diff --git a/modules/blogapi.module b/modules/blogapi.module index 8a3801495..83a55c493 100644 --- a/modules/blogapi.module +++ b/modules/blogapi.module @@ -422,7 +422,7 @@ function blogapi_error($message) { function blogapi_validate_user($username, $password) { global $user; - $user = user_load(array('name' => $username, 'pass' => $password, 'status' => 1)); + $user = user_authenticate($username, $password); if ($user->uid) { if (user_access('edit own blog')) { diff --git a/modules/blogapi/blogapi.module b/modules/blogapi/blogapi.module index 8a3801495..83a55c493 100644 --- a/modules/blogapi/blogapi.module +++ b/modules/blogapi/blogapi.module @@ -422,7 +422,7 @@ function blogapi_error($message) { function blogapi_validate_user($username, $password) { global $user; - $user = user_load(array('name' => $username, 'pass' => $password, 'status' => 1)); + $user = user_authenticate($username, $password); if ($user->uid) { if (user_access('edit own blog')) { diff --git a/modules/user.module b/modules/user.module index 38d199d3e..ffe5d8b77 100644 --- a/modules/user.module +++ b/modules/user.module @@ -760,49 +760,8 @@ function user_login($edit = array(), $msg = '') { } else if ($edit['name'] && $edit['pass']) { - // Try to log in the user locally: if (!$user->uid) { - $name = $edit['name']; - $pass = $edit['pass']; - $user = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1)); - } - - // Strip name and server from ID: - if ($server = strrchr($edit['name'], '@')) { - $name = substr($edit['name'], 0, strlen($edit['name']) - strlen($server)); - $server = substr($server, 1); - $pass = $edit['pass']; - } - - // When possible, determine corresponding external auth source. Invoke - // source, and log in user if successful: - if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) { - if (module_invoke(key($result), 'auth', $name, $pass, $server)) { - $user = user_external_load("$name@$server"); - watchdog('user', t('external load by %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => key($result)))); - } - else { - $error = t('Invalid password for %s.', array('%s' => "<em>$name@$server</em>")); - } - } - - // Try each external authentication source in series. Register user if - // successful. - else if (!$user->uid && $server) { - foreach (module_list() as $module) { - if (module_hook($module, 'auth')) { - if (module_invoke($module, 'auth', $name, $pass, $server)) { - if (variable_get('user_register', 1) == 1) { - $account = user_load(array('name' => "$name@$server")); - if (!$account->uid) { // Register this new user. - $user = user_save('', array('name' => "$name@$server", 'pass' => user_password(), 'init' => "$name@$server", 'status' => 1, "authname_$module" => "$name@$server", 'roles' => array(_user_authenticated_id()))); - watchdog('user', t('new external user: %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => $module)), l(t('edit'), 'user/'. $user->uid .'/edit')); - break; - } - } - } - } - } + $user = user_authenticate($edit['name'], $edit['pass']); } if ($user->uid) { @@ -864,6 +823,52 @@ function user_login($edit = array(), $msg = '') { return form($output, 'post', url('user/login')); } +function user_authenticate($name, $pass) { + global $user; + + // Try to log in the user locally: + $user = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1)); + + // Strip name and server from ID: + if ($server = strrchr($name, '@')) { + $name = substr($name, 0, strlen($name) - strlen($server)); + $server = substr($server, 1); + } + + // When possible, determine corresponding external auth source. Invoke + // source, and log in user if successful: + if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) { + if (module_invoke(key($result), 'auth', $name, $pass, $server)) { + $user = user_external_load("$name@$server"); + watchdog('user', t('external load by %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => key($result)))); + } + else { + $error = t('Invalid password for %s.', array('%s' => "<em>$name@$server</em>")); + } + } + + // Try each external authentication source in series. Register user if + // successful. + else if (!$user->uid && $server) { + foreach (module_list() as $module) { + if (module_hook($module, 'auth')) { + if (module_invoke($module, 'auth', $name, $pass, $server)) { + if (variable_get('user_register', 1) == 1) { + $account = user_load(array('name' => "$name@$server")); + if (!$account->uid) { // Register this new user. + print "gonna register using $module and $name"; + $user = user_save('', array('name' => "$name@$server", 'pass' => user_password(), 'init' => "$name@$server", 'status' => 1, "authname_$module" => "$name@$server", 'roles' => array(_user_authenticated_id()))); + watchdog('user', t('new external user: %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => $module)), l(t('edit'), 'user/'. $user->uid .'/edit')); + break; + } + } + } + } + } + } + return $user; +} + function _user_authenticated_id() { return db_result(db_query("SELECT rid FROM {role} WHERE name = 'authenticated user'")); } diff --git a/modules/user/user.module b/modules/user/user.module index 38d199d3e..ffe5d8b77 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -760,49 +760,8 @@ function user_login($edit = array(), $msg = '') { } else if ($edit['name'] && $edit['pass']) { - // Try to log in the user locally: if (!$user->uid) { - $name = $edit['name']; - $pass = $edit['pass']; - $user = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1)); - } - - // Strip name and server from ID: - if ($server = strrchr($edit['name'], '@')) { - $name = substr($edit['name'], 0, strlen($edit['name']) - strlen($server)); - $server = substr($server, 1); - $pass = $edit['pass']; - } - - // When possible, determine corresponding external auth source. Invoke - // source, and log in user if successful: - if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) { - if (module_invoke(key($result), 'auth', $name, $pass, $server)) { - $user = user_external_load("$name@$server"); - watchdog('user', t('external load by %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => key($result)))); - } - else { - $error = t('Invalid password for %s.', array('%s' => "<em>$name@$server</em>")); - } - } - - // Try each external authentication source in series. Register user if - // successful. - else if (!$user->uid && $server) { - foreach (module_list() as $module) { - if (module_hook($module, 'auth')) { - if (module_invoke($module, 'auth', $name, $pass, $server)) { - if (variable_get('user_register', 1) == 1) { - $account = user_load(array('name' => "$name@$server")); - if (!$account->uid) { // Register this new user. - $user = user_save('', array('name' => "$name@$server", 'pass' => user_password(), 'init' => "$name@$server", 'status' => 1, "authname_$module" => "$name@$server", 'roles' => array(_user_authenticated_id()))); - watchdog('user', t('new external user: %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => $module)), l(t('edit'), 'user/'. $user->uid .'/edit')); - break; - } - } - } - } - } + $user = user_authenticate($edit['name'], $edit['pass']); } if ($user->uid) { @@ -864,6 +823,52 @@ function user_login($edit = array(), $msg = '') { return form($output, 'post', url('user/login')); } +function user_authenticate($name, $pass) { + global $user; + + // Try to log in the user locally: + $user = user_load(array('name' => $name, 'pass' => $pass, 'status' => 1)); + + // Strip name and server from ID: + if ($server = strrchr($name, '@')) { + $name = substr($name, 0, strlen($name) - strlen($server)); + $server = substr($server, 1); + } + + // When possible, determine corresponding external auth source. Invoke + // source, and log in user if successful: + if (!$user->uid && $server && $result = user_get_authmaps("$name@$server")) { + if (module_invoke(key($result), 'auth', $name, $pass, $server)) { + $user = user_external_load("$name@$server"); + watchdog('user', t('external load by %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => key($result)))); + } + else { + $error = t('Invalid password for %s.', array('%s' => "<em>$name@$server</em>")); + } + } + + // Try each external authentication source in series. Register user if + // successful. + else if (!$user->uid && $server) { + foreach (module_list() as $module) { + if (module_hook($module, 'auth')) { + if (module_invoke($module, 'auth', $name, $pass, $server)) { + if (variable_get('user_register', 1) == 1) { + $account = user_load(array('name' => "$name@$server")); + if (!$account->uid) { // Register this new user. + print "gonna register using $module and $name"; + $user = user_save('', array('name' => "$name@$server", 'pass' => user_password(), 'init' => "$name@$server", 'status' => 1, "authname_$module" => "$name@$server", 'roles' => array(_user_authenticated_id()))); + watchdog('user', t('new external user: %user using module "%module".', array('%user' => $name .'@'. $server, '%module' => $module)), l(t('edit'), 'user/'. $user->uid .'/edit')); + break; + } + } + } + } + } + } + return $user; +} + function _user_authenticated_id() { return db_result(db_query("SELECT rid FROM {role} WHERE name = 'authenticated user'")); } |