/**
  * 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');
    }
}
Beispiel #12
0
 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;
 }
Beispiel #18
0
 /**
  * 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;
     }
 }