basename = plugin_basename( __FILE__ );
$ip_checker = new WP_Auth0_Ip_Check();
$ip_checker->init();
$this->a0_options = WP_Auth0_Options::Instance();
$this->db_manager = new WP_Auth0_DBManager($this->a0_options);
$this->db_manager->init();
add_action( 'init', array( $this, 'wp_init' ) );
// Add hooks for install uninstall and update.
register_activation_hook( WPA0_PLUGIN_FILE, array( $this, 'install' ) );
register_deactivation_hook( WPA0_PLUGIN_FILE, array( $this, 'deactivate' ) );
register_uninstall_hook( WPA0_PLUGIN_FILE, array( 'WP_Auth0', 'uninstall' ) );
add_action( 'activated_plugin', array( $this, 'on_activate_redirect' ) );
add_filter( 'get_avatar' , array( $this, 'filter_get_avatar') , 1 , 5 );
// Add an action to append a stylesheet for the login page.
add_action( 'login_enqueue_scripts', array( $this, 'render_auth0_login_css' ) );
// Add a hook to add Auth0 code on the login page.
add_filter( 'login_message', array( $this, 'render_form'), 5);
add_shortcode( 'auth0', array( $this, 'shortcode' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'wp_enqueue' ) );
add_action( 'widgets_init', array( $this, 'wp_register_widget' ) );
add_filter( 'query_vars', array( $this, 'a0_register_query_vars' ) );
add_filter( 'plugin_action_links_' . $this->basename, array( $this, 'wp_add_plugin_settings_link' ) );
if ( isset( $_GET['message'] ) ) {
add_action( 'wp_footer', array( $this, 'a0_render_message' ) );
}
$initial_setup = new WP_Auth0_InitialSetup( $this->a0_options );
$initial_setup->init();
$users_repo = new WP_Auth0_UsersRepo( $this->a0_options );
$users_repo->init();
$login_manager = new WP_Auth0_LoginManager( $users_repo, $this->a0_options );
$login_manager->init();
$this->router = new WP_Auth0_Routes( $this->a0_options );
$this->router->init();
$metrics = new WP_Auth0_Metrics( $this->a0_options );
$metrics->init();
$auth0_admin = new WP_Auth0_Admin( $this->a0_options, $this->router );
$auth0_admin->init();
$error_log = new WP_Auth0_ErrorLog();
$error_log->init();
$configure_jwt_auth = new WP_Auth0_Configure_JWTAUTH( $this->a0_options );
$configure_jwt_auth->init();
$dashboard_widgets = new WP_Auth0_Dashboard_Widgets( $this->a0_options, $this->db_manager );
$dashboard_widgets->init();
$woocommerce_override = new WP_Auth0_WooCommerceOverrides( $this );
$woocommerce_override->init();
$users_exporter = new WP_Auth0_Export_Users( $this->db_manager );
$users_exporter->init();
$import_settings = new WP_Auth0_Import_Settings( $this->a0_options );
$import_settings->init();
$settings_section = new WP_Auth0_Settings_Section( $this->a0_options, $initial_setup, $users_exporter, $configure_jwt_auth, $error_log, $auth0_admin, $import_settings );
$settings_section->init();
$this->social_amplificator = new WP_Auth0_Amplificator( $this->db_manager, $this->a0_options );
$this->social_amplificator->init();
$edit_profile = new WP_Auth0_EditProfile( $this->db_manager, $users_repo, $this->a0_options );
$edit_profile->init();
$this->check_signup_status();
WP_Auth0_Email_Verification::init();
}
/**
* Checks it it should update the database connection no enable or disable signups and create or delete
* the rule that will disable social signups.
*/
function check_signup_status() {
$app_token = $this->a0_options->get( 'auth0_app_token' );
if ( $app_token ) {
$disable_signup_rule = $this->a0_options->get( 'disable_signup_rule' );
$is_wp_registration_enabled = $this->a0_options->is_wp_registration_enabled();
if ( $is_wp_registration_enabled != $this->a0_options->get( 'registration_enabled' ) ) {
$this->a0_options->set( 'registration_enabled', $is_wp_registration_enabled );
$operations = new WP_Auth0_Api_Operations( $this->a0_options );
$operations->disable_signup_wordpress_connection( $app_token, !$is_wp_registration_enabled );
$rule_name = WP_Auth0_RulesLib::$disable_social_signup['name'] . '-' . get_bloginfo('name');
$rule_script = WP_Auth0_RulesLib::$disable_social_signup['script'];
$rule_script = str_replace( 'REPLACE_WITH_YOUR_CLIENT_ID', $this->a0_options->get( 'client_id' ), $rule_script );
try {
if ($is_wp_registration_enabled && $disable_signup_rule === null) {
return;
}
$disable_signup_rule = $operations->toggle_rule( $app_token, ( $is_wp_registration_enabled ? $disable_signup_rule : null ), $rule_name, $rule_script );
$this->a0_options->set( 'disable_signup_rule', $disable_signup_rule );
} catch(Exception $e) {
}
}
}
}
/**
* Filter the avatar to use the Auth0 profile image
*
* @param string $avatar - avatar HTML
* @param int|string|WP_User|WP_Comment|WP_Post $id_or_email - user identifier
* @param int $size - width and height of avatar
* @param string $default - what to do if nothing
* @param string $alt - alt text for the tag
*
* @return string
*/
function filter_get_avatar( $avatar, $id_or_email, $size, $default, $alt ) {
if ( ! $this->a0_options->get( 'override_wp_avatars' ) ) {
return $avatar;
}
$user_id = null;
if ( $id_or_email instanceof WP_User ) {
$user_id = $id_or_email->ID;
} elseif ( $id_or_email instanceof WP_Comment ) {
$user_id = $id_or_email->user_id;
} elseif ( $id_or_email instanceof WP_Post ) {
$user_id = $id_or_email->post_author;
} elseif ( is_email( $id_or_email ) ) {
$maybe_user = get_user_by( 'email', $id_or_email );
if ( $maybe_user instanceof WP_User ) {
$user_id = $maybe_user->ID;
}
} elseif ( is_numeric( $id_or_email ) ) {
$user_id = absint( $id_or_email );
}
if ( ! $user_id ) {
return $avatar;
}
$auth0Profile = get_auth0userinfo( $user_id );
if ( ! $auth0Profile || empty( $auth0Profile->picture ) ) {
return $avatar;
}
return sprintf(
'
',
esc_attr( $alt ),
esc_url( $auth0Profile->picture ),
absint( $size ),
absint( $size ),
absint( $size )
);
}
function on_activate_redirect( $plugin ) {
if ( !defined( 'WP_CLI' ) && $plugin == $this->basename ) {
$this->router->setup_rewrites();
flush_rewrite_rules();
$client_id = $this->a0_options->get( 'client_id' );
$client_secret = $this->a0_options->get( 'client_secret' );
$domain = $this->a0_options->get( 'domain' );
$show_initial_setup = ( ( ! $client_id ) || ( ! $client_secret ) || ( ! $domain ) ) ;
if ( $show_initial_setup ) {
exit( wp_redirect( admin_url( 'admin.php?page=wpa0-setup&activation=1' ) ) );
} else {
exit( wp_redirect( admin_url( 'admin.php?page=wpa0' ) ) );
}
}
}
public static function get_plugin_dir_url() {
return plugin_dir_url( __FILE__ );
}
public function a0_register_query_vars( $qvars ) {
$qvars[] = 'error_description';
$qvars[] = 'a0_action';
$qvars[] = 'auth0';
$qvars[] = 'code';
return $qvars;
}
public function a0_render_message() {
$message = null;
if ( $message ) {
echo "