request = $request; $this->config = $config; $this->environment = $environment; $this->plugin_status = $plugin_status; $this->options_storage = $options_storage; } public function register_hook() { add_action( 'login_enqueue_scripts', array( $this, 'enqueue_login' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin' ) ); } public function enqueue_login() { $this->enqueue_common(); wp_enqueue_script( 'twofas-login', TWOFAS_ASSETS_URL . 'js/login.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); if ( $this->plugin_status->client_completed_registration() ) { $this->enqueue_pusher(); } } public function enqueue_admin() { $this->enqueue_common(); if ( $this->is_plugin_page() ) { $this->enqueue_international_telephone_input(); $this->enqueue_video_js(); $this->enqueue_bootstrap(); $this->enqueue_chart_js(); $this->enqueue_dashboard(); } } private function enqueue_common() { $this->enqueue_sentry(); wp_enqueue_style( 'google-fonts-roboto', 'https://fonts.googleapis.com/css?family=Roboto:400,500,700', array(), null ); wp_enqueue_style( 'twofas', TWOFAS_ASSETS_URL . 'css/twofas.min.css', array(), TWOFAS_PLUGIN_VERSION ); wp_enqueue_script( 'twofas-modal', TWOFAS_ASSETS_URL . 'js/modal.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); wp_enqueue_script( 'twofas-totp-secret', TWOFAS_ASSETS_URL . 'js/totp-secret.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); wp_enqueue_script( 'twofas-mobile-detect', TWOFAS_ASSETS_URL . 'js/mobile-detect.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); wp_enqueue_script( 'twofas-device-type', TWOFAS_ASSETS_URL . 'js/device-type.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); } private function enqueue_international_telephone_input() { wp_enqueue_style( 'international-telephone-input', TWOFAS_ASSETS_URL . 'css/intlTelInput.css', array(), '9.2.0' ); wp_enqueue_script( 'international-telephone-input-library', TWOFAS_ASSETS_URL . 'js/intlTelInput.min.js', array( 'jquery' ), '9.2.0', true ); } private function enqueue_video_js() { wp_enqueue_style( 'video-js', TWOFAS_ASSETS_URL . 'css/video-js.min.css', array(), '6.2.7' ); wp_enqueue_script( 'video-js-library', TWOFAS_ASSETS_URL . 'js/video.min.js', array( 'jquery' ), '6.2.7', true ); } private function enqueue_pusher() { wp_enqueue_script( 'pusher', 'https://js.pusher.com/4.2.2/pusher.min.js', array( 'jquery' ), '4.2.2', true ); wp_enqueue_script( 'twofas-pusher-events', TWOFAS_ASSETS_URL . 'js/pusher-events.min.js', array( 'pusher', 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); $this->localize_script( 'twofas-pusher-events' ); } private function enqueue_sentry() { wp_enqueue_script( 'sentry', 'https://browser.sentry-cdn.com/4.1.1/bundle.min.js', array( 'jquery' ), '4.1.1', true ); wp_enqueue_script( 'twofas-sentry', TWOFAS_ASSETS_URL . 'js/sentry.min.js', array( 'sentry' ), TWOFAS_PLUGIN_VERSION, true ); $data = array( 'sentryDsn' => $this->config->get_sentry_dsn(), 'whitelistUrls' => TWOFAS_ASSETS_URL . 'js', 'loggingAllowed' => $this->options_storage->is_logging_allowed(), 'release' => TWOFAS_PLUGIN_VERSION, 'wp_version' => $this->environment->get_wordpress_version(), 'api_sdk_version' => API::VERSION, 'account_sdk_version' => Account::VERSION ); wp_localize_script( 'twofas-sentry', 'twofasSentry', $data ); } private function enqueue_bootstrap() { wp_enqueue_style( 'twofas-bootstrap', TWOFAS_ASSETS_URL . 'css/bootstrap.min.css', array(), '3.3.7' ); } private function enqueue_chart_js() { wp_enqueue_script( 'twofas-chart-js', TWOFAS_ASSETS_URL . 'js/chart.min.js', array(), '2.6.0', true ); } private function enqueue_dashboard() { wp_enqueue_script( 'twofas-dashboard', TWOFAS_ASSETS_URL . 'js/dashboard.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); wp_enqueue_script( 'twofas-user', TWOFAS_ASSETS_URL . 'js/user.min.js', array( 'jquery' ), TWOFAS_PLUGIN_VERSION, true ); $this->localize_script( 'twofas-dashboard' ); } /** * @param string $handle */ private function localize_script( $handle ) { $pusher_key = $this->config->get_pusher_key(); $page = Route::SUBMENU_AJAX; $action = Route::ACTION_AUTHENTICATE_CHANNEL; $auth_url = admin_url( 'admin.php' ); $auth_url = add_query_arg( array( Route::PAGE_KEY => $page, Route::TWOFAS_ACTION_KEY => $action, ), $auth_url ); $data = array( 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'utilsUrl' => TWOFAS_ASSETS_URL . 'js/utils.js', 'pusherKey' => $pusher_key, 'authEndpoint' => $auth_url, ); wp_localize_script( $handle, 'twofas', $data ); } /** * @return bool */ private function is_plugin_page() { $page = $this->request->get( Route::PAGE_KEY ); return $page === Route::SUBMENU_DASHBOARD || $page === Route::SUBMENU_CHANNEL; } }