wp_options; } /** * @return string|null */ public function get_twofas_email() { return get_option( self::TWOFAS_EMAIL, null ); } /** * @return string|null */ public function get_twofas_password() { return get_option( self::TWOFAS_PASSWORD, null ); } /** * @param string $email */ public function set_twofas_email( $email ) { update_option( self::TWOFAS_EMAIL, $email ); } public function delete_twofas_password() { delete_option( self::TWOFAS_PASSWORD ); } public function delete_twofas_enabled() { delete_option( self::TWOFAS_ENABLED ); } /** * @return string|null */ public function get_twofas_integration_login() { return get_option( self::TWOFAS_INTEGRATION_LOGIN, null ); } /** * @param string $login */ public function set_twofas_integration_login( $login ) { update_option( self::TWOFAS_INTEGRATION_LOGIN, $login ); } /** * @return string|null */ public function get_twofas_key_token() { return get_option( self::TWOFAS_KEY_TOKEN, null ); } /** * @param string $token */ public function set_twofas_key_token( $token ) { update_option( self::TWOFAS_KEY_TOKEN, $token ); } /** * @return string|false */ public function get_twofas_encryption_key() { return get_option( self::TWOFAS_ENCRYPTION_KEY ); } /** * @param string $key */ public function set_twofas_encryption_key( $key ) { update_option( self::TWOFAS_ENCRYPTION_KEY, $key ); } /** * @return string|false */ public function get_twofas_plugin_version() { return get_option( self::TWOFAS_PLUGIN_VERSION ); } /** * @param string $version */ public function set_twofas_plugin_version( $version ) { update_option( self::TWOFAS_PLUGIN_VERSION, $version ); } /** * @param Key $key */ public function store( Key $key ) { $this->set_twofas_encryption_key( base64_encode( $key->getValue() ) ); } public function save_aes_key() { $this->store( new AESGeneratedKey() ); } /** * @return Key */ public function retrieve() { $key = base64_decode( $this->get_twofas_encryption_key() ); return new AESKey( $key ); } /** * @return bool */ public function is_plugin_enabled() { $status = get_option( self::TWOFAS_PLUGIN_STATUS ); return '1' === $status; } public function enable_plugin() { update_option( self::TWOFAS_PLUGIN_STATUS, '1' ); } public function disable_plugin() { update_option( self::TWOFAS_PLUGIN_STATUS, '0' ); } /** * @param string $plan */ public function set_plan( $plan ) { update_option( self::TWOFAS_PLAN_KEY, $plan ); } public function set_premium_plan() { $this->set_plan( self::PLAN_PREMIUM ); } public function set_basic_plan() { $this->set_plan( self::PLAN_BASIC ); } /** * @return bool */ public function is_plan_premium() { $plan = get_option( self::TWOFAS_PLAN_KEY ); return self::PLAN_PREMIUM === $plan; } /** * @return bool */ public function is_plan_basic() { return ! $this->is_plan_premium(); } /** * @return array * * @throws UnexpectedValueException */ public function get_twofas_roles() { $roles = get_option( self::TWOFAS_ROLES, array() ); if ( is_array( $roles ) ) { return $roles; } throw new UnexpectedValueException( 'Option ' . self::TWOFAS_ROLES . ' should be an array.' ); } /** * @param array $roles */ public function set_twofas_roles( array $roles ) { update_option( self::TWOFAS_ROLES, $roles ); } /** * @param array $user_roles * * @return bool * * @throws UnexpectedValueException */ public function has_twofas_role( array $user_roles ) { $roles = $this->get_twofas_roles(); $intersection = array_intersect( $user_roles, $roles ); return ! empty( $intersection ); } /** * @return string */ public function get_wordpress_app_name() { $name = get_bloginfo( 'name' ); $name = empty( $name ) ? 'WordPress' : $name; $name = html_entity_decode( $name, ENT_QUOTES, 'UTF-8' ); return substr( $name, 0, 255 ); } /** * @return string */ public function get_wordpress_app_url() { return get_site_url(); } public function enable_logging() { update_option( self::TWOFAS_LOGGING_ALLOWED, '1' ); } public function disable_logging() { update_option( self::TWOFAS_LOGGING_ALLOWED, '0' ); } /** * @return bool */ public function is_logging_allowed() { return (bool) get_option( self::TWOFAS_LOGGING_ALLOWED, false ); } public function delete_wp_options() { foreach ( $this->wp_options as $option_name ) { delete_option( $option_name ); } } /** * @param string $except */ public function delete_wp_options_except( $except ) { foreach ( $this->wp_options as $option_name ) { if ( $option_name !== $except ) { delete_option( $option_name ); } } } }