add('empty_username', __('ERROR: The username field is empty.'));
if ( empty($password) )
$error->add('empty_password', __('ERROR: The password field is empty.'));
return $error;
}
$uminfo = sul_get_user($username, $password);
if (is_array($uminfo)) {
$user = get_userdatabylogin($username);
if ( !$user || (strtolower($user->user_login) != strtolower($username)) ) {
// No existing WP user, can we create?
switch(get_option('simpleum_login_mode')) {
case "mode_create_all":
$new_user_id = sul_create_wp_user($uminfo);
if (!is_a($new_user_id, 'WP_Error')) {
//It worked
return new WP_User($new_user_id);
} else {
do_action( 'wp_login_failed', $username );
return new WP_Error('invalid_username', __('Simple UM Login Error: UM credentials are correct and user creation is allowed but an error occurred creating the user in Wordpress. Actual WordPress error: '.$new_user_id->get_error_message()));
}
break;
case "mode_create_group":
if (sul_is_in_group($uminfo)) {
$new_user_id = sul_create_wp_user($uminfo);
if(!is_a($new_user_id, 'WP_Error')) {
//It worked
return new WP_User($new_user_id);
} else {
do_action( 'wp_login_failed', $username );
return new WP_Error('invalid_username', __('Simple UM Login Error: UM credentials are correct and user creation is allowed and you are in the correct group but an error occurred creating the user in Wordpress. Actual WordPress error: '.$new_user_id->get_error_message()));
}
} else {
do_action( 'wp_login_failed', $username );
return new WP_Error('invalid_username', __('Simple UM Login Error: UM Login credentials are correct and user creation is allowed but UM user was not in correct UM group.'));
}
break;
default:
do_action( 'wp_login_failed', $username );
return new WP_Error('invalid_username', __('Simple UM Login Error: Simple UM Login mode does not permit account creation.'));
}
} else {
// Wordpress user exists, should we check group membership?
if (get_option('simpleum_login_mode') == "mode_create_group") {
if (sul_is_in_group($uminfo)) {
return new WP_User($user->ID);
} else {
do_action( 'wp_login_failed', $username );
return new WP_Error('invalid_username', __('Simple UM Login Error: UM credentials were correct but user is not in the correct group.'));
}
} else {
// Otherwise, we're ready to return the user
return new WP_User($user->ID);
}
}
} else {
return new WP_Error('invalid_username', __('Simple UM Login Error: Simple UM Login could not authenticate your credentials. The security settings do not permit trying the Wordpress user database as a fallback.'));
}
}
function sul_get_user($username, $password) {
$cookiejar = tempnam(dirname(__FILE__).'/tmp', 'jar');
$umclient = new umClient(get_option('simpleum_url'), $cookiejar);
$result = $umclient->get_userinfo($username, $password);
unlink($cookiejar);
return $result;
}
function sul_is_in_group($userinfo) {
// TODO
return true;
}
function sul_create_wp_user($userinfo) {
$result = 0;
$userData = array(
'user_pass' => microtime(),
'user_login' => $userinfo['username'],
'user_nicename' => sanitize_title($userinfo['firstname'].' '.$userinfo['lastname']),
'user_email' => $userinfo['email'],
'display_name' => $userinfo['firstname'].' '.$userinfo['lastname'],
'first_name' => $userinfo['firstname'],
'last_name' => $userinfo['lastname'],
'role' => strtolower(get_option('simpleum_account_type'))
);
$result = wp_insert_user($userData);
return $result;
}
//Temporary fix for e-mail exists bug
if ( !function_exists('get_user_by_email') ) :
/**
* Retrieve user info by email.
*
* @since 2.5
*
* @param string $email User's email address
* @return bool|object False on failure, User DB row object
*/
function get_user_by_email($email) {
if(strlen($email) == 0 || empty($email) || $email == "" || strpos($email, "@") == false) {
return false;
} else {
return get_user_by('email', $email);
}
}
endif;
register_activation_hook( __FILE__, 'simpleum_activation_hook' );
?>