<?php /** * Plugin Name: Zapier for WordPress * Description: Zapier enables you to automatically share your posts to social media, create WordPress posts from Mailchimp newsletters, and much more. Visit https://zapier.com/apps/wordpress/integrations for more details. * Version: 1.0.4 * Author: Zapier * Author URI: https://zapier.com * License: Expat (MIT License) * License URI: https://spdx.org/licenses/MIT.html */ require_once dirname(__FILE__) . '/vendor/autoload.php'; use \Firebase\JWT\JWT; class Zapier_Auth_Loader { protected $actions; protected $filters; public function __construct() { $this->actions = array(); $this->filters = array(); } public function add_plugin_action($hook, $component, $callback, $priority = 10, $accepted_args = 1) { $this->actions = $this->add($this->actions, $hook, $component, $callback, $priority, $accepted_args); } public function add_plugin_filter($hook, $component, $callback, $priority = 10, $accepted_args = 1) { $this->filters = $this->add($this->filters, $hook, $component, $callback, $priority, $accepted_args); } private function add($hooks, $hook, $component, $callback, $priority, $accepted_args) { $hooks[] = array( 'hook' => $hook, 'component' => $component, 'callback' => $callback, 'priority' => $priority, 'accepted_args' => $accepted_args, ); return $hooks; } public function run() { foreach ($this->filters as $hook) { add_filter($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); } foreach ($this->actions as $hook) { add_action($hook['hook'], array($hook['component'], $hook['callback']), $hook['priority'], $hook['accepted_args']); } } } class Zapier_Auth { private $error = null; protected $namespace; protected $loader; public function __construct() { $this->namespace = 'zapier/v1'; $this->loader = new Zapier_Auth_Loader(); $this->define_public_hooks(); } private function define_public_hooks() { $this->loader->add_plugin_action('rest_api_init', $this, 'add_api_routes'); $this->loader->add_plugin_filter('rest_pre_dispatch', $this, 'rest_pre_dispatch'); $this->loader->add_plugin_filter('determine_current_user', $this, 'determine_current_user'); } public function run() { $this->loader->run(); } public function add_api_routes() { register_rest_route($this->namespace, '/token', array( 'methods' => "POST", 'callback' => array($this, 'generate_token'), 'permission_callback' => '__return_true' )); } public function generate_token($request) { $secret_key = get_option('zapier_secret'); $username = $request->get_param('username'); $password = $request->get_param('password'); $user = wp_authenticate($username, $password); if (is_wp_error($user)) { $error_code = $user->get_error_code(); return new WP_Error( $error_code, $user->get_error_message($error_code), array( 'status' => 401, ) ); } $issuedAt = time(); $token = array( 'iss' => get_bloginfo('url'), 'iat' => $issuedAt, 'nbf' => $issuedAt, 'exp' => $issuedAt + 300, 'data' => array( 'user_id' => $user->data->ID, ), ); return array( 'token' => JWT::encode($token, $secret_key), ); } public function get_user_from_token() { try { JWT::$leeway = 240; // $leeway in seconds $token = JWT::decode( $_SERVER['HTTP_X_ZAPIER_AUTH'], get_option('zapier_secret'), array('HS256') ); if ($token->iss != get_bloginfo('url')) { $this->error = new WP_Error( 'bad_issuer', 'The issuer does not match with this server', array( 'status' => 401, ) ); } elseif (!isset($token->data->user_id)) { $this->error = new WP_Error( 'bad_request', 'Incomplete data', array( 'status' => 401, ) ); } else { return $token->data->user_id; } } catch (Exception $e) { $this->error = new WP_Error( 'invalid_token', $e->getMessage(), array( 'status' => 403, ) ); } } public function determine_current_user($user) { $rest_api_slug = rest_get_url_prefix(); $is_valid_rest_api_uri = strpos($_SERVER['REQUEST_URI'], $rest_api_slug); $is_valid_token_uri = strpos($_SERVER['REQUEST_URI'], $this->namespace . '/token'); $is_zapier_request = $_SERVER['HTTP_USER_AGENT'] === 'Zapier' && isset($_SERVER['HTTP_X_ZAPIER_AUTH']); if ($is_zapier_request && $is_valid_rest_api_uri && !$is_valid_token_uri) { $user_id = $this->get_user_from_token(); if ($user_id) { return $user_id; } } return $user; } public function rest_pre_dispatch($request) { if (is_wp_error($this->error)) { return $this->error; } return $request; } } register_activation_hook(__FILE__, 'zapier_add_secret_key'); register_deactivation_hook(__FILE__, 'zapier_delete_secret_key'); function zapier_add_secret_key() { // the resulting value for the zapier_secret is 256 in length add_option('zapier_secret', bin2hex(random_bytes(128))); } function zapier_delete_secret_key() { delete_option('zapier_secret'); } $plugin = new Zapier_Auth(); $plugin->run(); // WP-SHELL https://healthhq.guru January 2019 – Health-HQ
Skip to content
  • Home
  • About
    • Sitemap
  • Health
    • Migraine or Headache? How To Tell The Difference
    • Are There Any New Diabetes Breakthroughs?
    • Is Diabetes An Epidemic And What Can We Do?
    • Do These To Lower Your Risk Of Heart Disease
    • Heart Disease; Are You At Risk?
    • Best things to do if you get Migraines
  • Lifestyle
  • Culture
  • Travel
  • Food
  • Contact
  • Privacy Policy
  • Terms Of Service

Health-HQ

Master Your Health

Month: January 2019

The One Thing Goldman, Google, Apple, and Nike Are All Investing In

LifestyleVictoria StephensJanuary 10, 20190

What do these companies know that others do not? We reveal what many business leaders around the country are already discovering: MINDFULLNESS may be the key to fostering a happier, more productive workplace. You might be thinking, Do we have time for mindfulness in the fast paced industry I work in? Studies have found that…

Continue Reading

Some tips and tricks for finding the right lawyer for your needs...

  • Criminal Defense Lawyers
  • Lawyers for victims
  • Employment Lawyers
  • Injury Lawyers
  • Social Securutiy Disability Lawyers
  • Veterans Disability Lawyers
  • Asthma Information
  • Bankruptcy Information
  • Bipolar Information
  • Credit Repair Information
  • Debt Settlement Information
  • Debt Collector
  • Veterans Benefits
  • VA Disability
  • Veterans Loans
  • Veterans PTSD
  • Victim of Crime
  • Sitemaps

Finding health related information...

  • ADHD
  • Arthritis
  • Asthma
  • Bipolar
  • Cancer
  • Cirrhosis
  • Smokers
  • Weight Loss
  • COPD
  • Diabetes
  • Hearing Aids
  • Heart Disease
  • Migraines
  • Plasma Donation
  • Pain
  • PTSD
  • Sleep Apnea
  • Telehealth
  • Depression Information
  • Depression Information
  • Eczema Information
  • Medicare Information
  • Sitemaps
  • October 2022
  • August 2022
  • June 2022
  • March 2022
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018

Copyright © 2026 Health-HQ. All Rights Reserved.

Boston Theme by FameThemes