/** * Verify the user authentication */ function handle_verify_request() { # Get session ID if (!isset($_COOKIE["vf_session_id"])) { return new WP_Error("verifyne", "No active session. Please try again."); } # Get ticket ID if (!isset($_REQUEST["ticketid"])) { return new WP_Error("verifyne", "No ticket ID set."); } # Read and check session data $vf_data = get_transient($_REQUEST["ticketid"]); if ($vf_data === false) { return new WP_Error("verifyne", "Session expired."); } if ($vf_data["session"] !== $_COOKIE["vf_session_id"]) { return new WP_Error("verifyne", "Invalid session identifier."); } $ticket_data = $vf_data["ticket"]; if (!isset($ticket_data["ticketid"]) || !isset($ticket_data["purpose"]) || !isset($ticket_data["nonce"])) { return new WP_Error("verifyne", "Wrong session state"); } # Verify authentication $ret = Wordpress_Verifyne_API::verify_authentication($ticket_data["ticketid"], $ticket_data["purpose"], $ticket_data["nonce"]); if (is_wp_error($ret)) { return $ret; } $verifyne_user_id = $ret["userid"]; print "<div id='verifyne-state-div'>Authenticated:<br>" . $verifyne_user_id . "</div>"; $this->set_linked_verifyne_id($verifyne_user_id); print "<script>location.replace(window.location.origin + window.location.pathname + '#verifyne')</script>"; }
/** * User has scanned the ticket. Verify the signature and extract the user_id from the ticket. * * @return Returns an instance of WP_Error on failure, otherwise reloads page with parameter action set to "vf_login" */ function handle_verify_request() { # Get session ID if (!isset($_COOKIE["vf_session_id"])) { return new WP_Error("verifyne", "No session ID set."); } # Get ticket ID if (!isset($_REQUEST["ticketid"])) { return new WP_Error("verifyne", "No ticket ID set."); } # Read and check session data $vf_data = get_transient($_REQUEST["ticketid"]); if ($vf_data === false) { return new WP_Error("verifyne", "Session expired."); } if ($vf_data["session"] !== $_COOKIE["vf_session_id"]) { return new WP_Error("verifyne", "Invalid session identifier."); } $ticket_data = $vf_data["ticket"]; if (!isset($ticket_data["ticketid"]) || !isset($ticket_data["purpose"]) || !isset($ticket_data["nonce"])) { return new WP_Error("verifyne", "Wrong session state"); } # Verify authentication $ret = Wordpress_Verifyne_API::verify_authentication($ticket_data["ticketid"], $ticket_data["purpose"], $ticket_data["nonce"]); if (is_wp_error($ret)) { return $ret; } $verifyne_user_id = $ret["userid"]; $ret = get_users(array("meta_key" => "verifyne_user_id", "meta_value" => $verifyne_user_id)); if (!is_array($ret) || sizeof($ret) < 1 || !is_a($ret[0], "WP_User")) { return new WP_Error("verifyne", "This identity is not registered."); } if (sizeof($ret) > 1) { return new WP_Error("verifyne", "This identity is registered for multiple accounts."); } # # At this point the user is authenticated. # # This is the user $wpuser = $ret[0]; $this->log_user_in($wpuser->ID); }