/** * Create Trusted Devices Widget container for WP Dashboard * * @return string */ public function getTDMWidget() { $result = ''; if (RublonHelper::isSiteRegistered()) { if (RublonHelper::canShowTDMWidget()) { $current_user = wp_get_current_user(); $protection_type = RublonHelper::YES; RublonHelper::isUserProtected($current_user, $protection_type); switch ($protection_type) { case RublonHelper::PROTECTION_TYPE_MOBILE: $result .= '<p>' . sprintf(__('Your account is protected by <a href="%s" target="_blank">Rublon</a>.', 'rublon'), RublonHelper::rubloncomUrl()) . '</p>'; break; case RublonHelper::PROTECTION_TYPE_EMAIL: $result .= '<p>' . sprintf(__('Your account is protected by <a href="%s" target="_blank">Rublon</a>.', 'rublon'), RublonHelper::rubloncomUrl()) . ' ' . sprintf(__('Get the <a href="%s/get" target="_blank">Rublon mobile app</a> for more security.', 'rublon'), RublonHelper::rubloncomUrl()) . '</p>'; break; case RublonHelper::PROTECTION_TYPE_NONE: $lang = RublonHelper::getBlogLanguage(); $result .= '<p>' . sprintf('<span style="color: red; font-weight: bold;">' . __('Warning!', 'rublon') . '</span>' . ' ' . __('Your account is not protected. Go to <a href="%s">your profile page</a> to enable account protection.', 'rublon'), admin_url(RublonHelper::WP_PROFILE_PAGE . RublonHelper::WP_PROFILE_EMAIL2FA_SECTION)) . '</p>'; break; } $result .= $this->getDeviceWidget(); } else { $result = '<p>' . __('Your account isn\'t protected by Rublon and thus vulnerable to password theft and brute force attacks. Please contact your administrator. ') . '</p>'; } } return $result; }
public function subscribeToNewsletter($email) { if (RublonHelper::isSiteRegistered()) { require_once dirname(__FILE__) . '/libs/RublonImplemented/RublonAPINewsletterSignup.php'; $signup = new RublonAPINewsletterSignup($this->rublon, $email); try { $signup->perform(); $result = $signup->subscribedSuccessfully(); } catch (RublonException $e) { if ($e instanceof RublonAPIException) { $response = $e->getClient()->getResponse(); if (!empty($response[RublonAPINewsletterSignup::FIELD_RESULT]) && !empty($response[RublonAPINewsletterSignup::FIELD_RESULT]['exception']) && $response[RublonAPINewsletterSignup::FIELD_RESULT]['exception'] == 'AlreadySubscribed_NewsletterException') { $result = self::ERROR_ALREADY_SUBSCRIBED; } else { $result = self::ERROR_NL_API; } } else { $result = self::ERROR_NL_RUBLON_API; } } return $result !== false ? $result : self::ERROR_NL_RUBLON_API; } else { return self::ERROR_RUBLON_NOT_CONFIGURED; } }
public static function deleteTransient($key) { $transient_settings = RublonHelper::getSettings('transient'); if (!empty($transient_settings[$key])) { unset($transient_settings[$key]); RublonHelper::saveSettings($transient_settings, 'transient'); } }
/** * Initialize */ function rublon2factor_plugins_loaded() { // Initialize Rublon plugin helper RublonHelper::plugins_loaded(); // Check if plugin registration should be attempted // in this run RublonHelper::checkRegistration(); // check for Rublon-type actions RublonHelper::checkForActions(); }
/** * Get minimum protection type for given role. * If the protection type saved in settings is not available * for this consumer, then get the next available lower protection type. * * @param string $role * @return string */ static function getRoleProtectionType($role) { $settings = RublonHelper::getSettings('additional'); $role_id = RublonHelper::prepareRoleId($role); if (isset($settings[$role_id])) { return self::getMinimumProtectionType($settings[$role_id]); } else { return RublonHelper::PROTECTION_TYPE_NONE; } }
/** * Constructor. * * @param Rublon $rublon * @param string $url * @param array $params */ public function __construct(RublonConsumer $rublon, $params) { parent::__construct($rublon); if (!$rublon->isConfigured()) { trigger_error(RublonConsumer::TEMPLATE_CONFIG_ERROR, E_USER_ERROR); } $consumerRegistrationData = RublonHelper::getConsumerRegistrationData(); $url = $consumerRegistrationData['url'] . $consumerRegistrationData['action'] . $this->urlPath; // Set request URL and parameters $this->setRequestURL($url)->setRequestParams($params); }
private function removeOldRublonTransients() { $transient_settings = RublonHelper::getSettings('transient'); $new_transient_settings = array(); foreach ($transient_settings as $key => $setting) { if ($setting[Rublon_Transients::EXPIRES_KEY] >= time()) { $new_transient_settings[$key] = $setting; } } RublonHelper::saveSettings($new_transient_settings, 'transient'); }
public function apiRegistration() { $current_user = wp_get_current_user(); $email = RublonHelper::getUserEmail($current_user); $selector = '#wpadminbar'; $content = '<h3>' . __('Rublon API registration', 'rublon') . '</h3>'; $content .= '<div class="rublon-apireg-half-column rublon-apireg-description">'; $content .= '<p>' . __('Rublon Account Security works by talking to the Rublon API. This requires an API key, which needs to be generated specifically for your website.', 'rublon') . '</p>'; $content .= '<p>' . sprintf(__('Due to security reasons, this requires a registration with your email address: <strong>%s</strong>. In order to register with a different email address, change it in your <a href="%s">profile settings</a>.', 'rublon'), $email, admin_url('profile.php')) . '</p>'; $content .= '<fieldset class="rublon-apireg-fieldset"><label for="rublon-apireg-terms-agreed">' . '<input type="checkbox" id="rublon-apireg-terms-agreed" name="apiregTermsAgreed" value="1" />' . sprintf(__('I agree to the <a href="%s" target="_blank">Rublon API Terms of Service</a>', 'rublon'), 'https://developers.rublon.com/54/Terms-of-Service') . '</fieldset>'; $content .= '<fieldset class="rublon-apireg-fieldset"><label for="rublon-apireg-newsletter-signup">' . '<input type="checkbox" id="rublon-apireg-newsletter-signup" name="apiregNewsletterSignup" value="1" />' . __('Subscribe to our newsletter', 'rublon') . '</fieldset>'; $content .= '</div>'; $content .= '<div class="rublon-apireg-half-column rublon-apireg-image"><img src="' . RUBLON2FACTOR_PLUGIN_URL . '/assets/images/rublon_visual.gif" class="rublon-apireg-visual rublon-image" /></div>'; $content .= $this->_apireg_form; $options = array('content' => $content, 'position' => array('edge' => 'top', 'align' => 'center'), 'pointerClass' => 'wp-pointer rublon-apireg-pointer', 'pointerClassSelector' => '.wp-pointer.rublon-apireg-pointer', 'showFunction' => 'showApiRegPointer'); $dismiss_nonce = wp_create_nonce(self::API_REGISTRATION_DISMISSED); $buttons = array('button1' => array('text' => __('Cancel', 'rublon'), 'function' => 'RublonWP.pointers.apiReg.answer("no", ' . json_encode($dismiss_nonce) . ')', 'id' => 'rublon-apireg-button-cancel', 'close_on_click' => true), 'button2' => array('text' => __('Activate', 'rublon'), 'function' => 'RublonWP.pointers.apiReg.answer("yes", ' . json_encode($dismiss_nonce) . ')', 'additional_class' => 'disabled', 'id' => 'rublon-apireg-button-activate'), 'placement' => array('additional_class' => 'rublon-apireg-buttons', 'append_to' => '.rublon-apireg-description'), 'appearance' => array('connection' => 'before')); $other_settings = RublonHelper::getSettings('other'); if (!empty($other_settings[self::API_REGISTRATION_DISMISSED])) { $event_binding = ' $(document).ready(function() { RublonWP.pointers.apiReg.show = showApiRegPointer; RublonWP.pointers.apiReg.prepareHidden(); }); '; } else { $event_binding = ' if (rublon_pointer_options.position && rublon_pointer_options.position.defer_loading) { $(window).bind("load.wp-pointers", function() { RublonWP.pointers.apiReg.show = showApiRegPointer; showApiRegPointer(); RublonWP.pointers.apiReg.addBehaviour(); RublonWP.pointers.disableClicks(); }); } else { $(document).ready(function() { RublonWP.pointers.apiReg.show = showApiRegPointer; showApiRegPointer(); RublonWP.pointers.apiReg.addBehaviour(); RublonWP.pointers.disableClicks(); }); } '; } $constants_binding = ' RublonWP.pointers.apiReg.DISMISSED_ACTION = ' . json_encode(self::AJAX_API_REGISTRATION_ACTION) . '; RublonWP.pointers.apiReg.BUTTON_ACTIVATE_SELECTOR = "#" + ' . json_encode($buttons['button2']['id']) . '; '; $bindings = array($event_binding, $constants_binding); $this->_printPointer($selector, $options, $buttons, $bindings); }
public function getAPIDomain() { return RublonHelper::getAPIDomain(); }
/** * Get project's additional data. * * The data returned will be used upon consumer's registration * and are required. If any additional data is needed, * this method may be overwritten. * * @return string */ protected function getProjectData() { $project_data = parent::getProjectData(); $project_data[self::FIELD_PROJECT_DESCRIPTION] = get_bloginfo('description'); $project_data[self::FIELD_PROJECT_LANG] = RublonHelper::getBlogLanguage(); return $project_data; }
function hide_business_edition_upgrade_box() { $userId = $_POST['data']; if (!RublonHelper::saveHideBusinessEditionUpgradeBox($userId)) { echo __('Error'); } else { echo __('Saved'); } }
function pluginsLoaded() { parent::pluginsLoaded(); if ($this->isTheAction() and RublonConfirmations::$dataRestored or !$this->isConfirmationRequired()) { // Update user protection type $current_user = wp_get_current_user(); if (!empty($_POST[RublonHelper::FIELD_USER_PROTECTION_TYPE]) and $_POST[RublonHelper::FIELD_USER_PROTECTION_TYPE] != RublonHelper::userProtectionType($current_user)) { RublonHelper::setUserProtectionType($current_user, $_POST[RublonHelper::FIELD_USER_PROTECTION_TYPE]); } if (!empty($_POST['email']) && $_POST['email'] !== RublonHelper::getUserEmail($current_user)) { RublonHelper::clearMobileUserStatus($current_user); } } }
/** * Check if a single site registration is needed. * * If the multisite network has been registered * in Rublon, perform a single site registration. * * @param WP_User|null $user (optional) WordPress user * @return void */ public static function checkSubprojectRegistration($user = null) { if (self::isNetworkRegistered() && !is_main_site() && !RublonHelper::isSiteRegistered()) { if (!empty($user) && $user instanceof WP_User) { $current_user = $user; $user_can_register_subproject = true; } else { $current_user = wp_get_current_user(); $user_can_register_subproject = is_user_logged_in(); } if ($current_user instanceof WP_User && $user_can_register_subproject) { self::performSiteRegistration(); } } }
/** * Retrieve auth cookie params (if they're set) * * @return array */ private static function _getAuthCookieParams() { $cookie_params = array(); $settings = RublonHelper::getSettings(); if (!empty($settings['wp_cookie_params'])) { $cookie_params = $settings['wp_cookie_params']; } return $cookie_params; }
/** * Add edition name and version number to the admin footer */ function footer_add_rublon_version() { echo '<div style="position: absolute; bottom: 0; left: 0; right: 0; margin: 0 auto; width: 300px; height: 30px; padding: 10px 20px; text-align: center;"><p style="color: #777;">' . __('Protected by') . ' <i>Rublon ' . (RublonHelper::isPersonalEdition() ? __('Personal Edition') : __('Business Edition')) . '</i> v.' . RublonHelper::getCurrentPluginVersion() . '</p></div>'; }
static function pluginsLoaded() { if (RublonHelper::isSiteRegistered()) { foreach (self::$strategies as $action) { if ($strategy = RublonConfirmStrategy::getStrategyInstance($action)) { $strategy->pluginsLoaded(); } } } }
protected function getProjectData() { $projectData = parent::getProjectData(); $projectData['project-description'] = get_bloginfo('description'); $projectData['plugin-version'] = RublonHelper::getCurrentPluginVersion(); $projectData['lang'] = RublonHelper::getBlogLanguage(); $current_user = wp_get_current_user(); $email = RublonHelper::getUserEmail($current_user); $projectData['project-owner-email'] = $email; $projectData['project-owner-email-hash'] = self::hash($email); $projectData[RublonConsumerRegistrationCommon::FIELD_PARTNER_KEY] = RublonHelper::getPartnerKey(); return $projectData; }
/** * Get the features list from Rublon server. * * @return NULL|array */ static function getFeaturesFromServer() { if (!RublonHelper::isSiteRegistered()) { return null; } try { $client = new RublonAPIGetAvailableFeatures(RublonHelper::getRublon()); $client->perform(); return $client->getFeatures(); } catch (RublonException $e) { return null; } }