Example #1
0
function commsy_auth()
{
    global $commsy_auth_commsy_url;
    if (isset($_GET['commsy_session_id'])) {
        // try to authenticate via session
        try {
            if ($GLOBALS['blog_id'] > 1) {
                $options = array();
                if (defined('WP_PROXY_HOST')) {
                    $options['proxy_host'] = WP_PROXY_HOST;
                }
                if (defined('WP_PROXY_PORT')) {
                    $options['proxy_port'] = WP_PROXY_PORT;
                }
                $soapClient = new SoapClient($commsy_auth_commsy_url . '/soap_wsdl.php', $options);
                $user = $soapClient->wordpressAuthenticateViaSession($_GET['commsy_session_id']);
                if (isset($user['login'])) {
                    #$addUserToBlog = (false == get_user_by('login', $user['login']));
                    $user_id = cs_update_user($user);
                    // $blogId ??? (15.11.2010 IJ)
                    $blogId = $GLOBALS['blog_id'];
                    // (12.05.2011 js)
                    $blogusers = get_users(array('blog_id' => $blogId));
                    $addUserToBlog = true;
                    foreach ($blogusers as $bloguser) {
                        if ($bloguser->ID == $user_id) {
                            $addUserToBlog = false;
                        }
                    }
                    if ($addUserToBlog) {
                        add_user_to_blog($blogId, $user_id, get_option('default_role'));
                    }
                }
                if ($user_id) {
                    if (is_user_logged_in()) {
                        wp_logout();
                    }
                    add_filter('authenticate', 'cs_authenticate_hashed', 99, 3);
                    $result = wp_signon(array('user_login' => $user['login'], 'user_password' => $user['password']));
                    if (!is_wp_error($result)) {
                        add_action('get_header', 'commsy_clean_permalink', 0);
                    }
                    remove_filter('authenticate', 'cs_authenticate_hashed');
                    //wp_login();
                }
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            // session not valid, do nothing
        }
    }
}