sql = "AND u.username = ?";
$user_select_sql->parameters = array("s", $username);
$allow_password_change = false;
$session_autologout = false;
return true;
}
else // Invalid response from WordPress
{
wordpress_sso_fail();
}
}
}
else // We have a cookie, check it is valid
{
debug("wordpress_sso - checking cookie: " . $wordpress_sso);
$s=explode("|",$wordpress_sso);
if (count($s)==2)
{
$username=$s[0];
if ($username=="")
{wordpress_sso_fail();}
debug("wordpress_sso - wordpress_sso cookie has username");
$hash=$s[1];
$today = date("Ymd");
if ($hash !== md5($baseurl . $wordpress_sso_secret . $username . $today))
{
// Invalid hash. Redirect to Wordpress to reauthenticate.
debug("wordpress_sso - wordpress_sso cookie has invalid hash");
wordpress_sso_redirect(false,false);
}
// cookie is valid, check user still exists
$c = ps_value("select count(*) value from user where username = ?", array("s", $username), 0);
if ($c==0)
{
if ($wordpress_sso_auto_create)
{
debug("wordpress_sso - need to create new user. Redirecting to get details");
wordpress_sso_redirect(true,false);
}
else
{
debug("wordpress_sso - no ResourceSpace account present and auto creation not enabled. Exiting.");
wordpress_sso_fail();
}
}
debug("wordpress_sso - found matching ResourceSpace user");
$dummyrequest=uniqid(); # use to prevent subsequent authentication using same querystring
ps_query("UPDATE user SET wp_authrequest = ? WHERE username = ?", array("s", $dummyrequest, "s", $username));
setcookie("wordpress_sso_test",$dummyrequest,0,"/");
//allow login
$user_select_sql = new PreparedStatementQuery();
$user_select_sql->sql = "AND u.username = ?";
$user_select_sql->parameters = array("s", $username);
$hashsql="";
return true;
}
else // Invalid cookie
{
debug("wordpress_sso: invalid cookie");
wordpress_sso_fail();
}
}
}
function HookWordpress_ssoLoginLoginformlink()
{
// Add a link to login.php, which is still used if $wordpress_sso_allow_standard_login is set to true
global $wordpress_sso_url,$lang;
?>
" . ' ' . $lang["wordpress_sso_use_wp_login"];?>
0)
{
?>
0)
{
return true;
}
return false;
}