/**
  * 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>";
 }
Beispiel #2
0
 /**
  * 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);
 }