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; }