| @@ -42,65 +42,65 @@ | ||
| 42 | 42 | public function register_meta_fields() { |
| 43 | 43 | register_meta( 'post', 'passster_activate_protection', array( |
| 44 | 44 | 'single' => true, |
| 45 | 45 | 'type' => 'boolean', |
| 46 | - 'show_in_rest' => true, | |
| 46 | + 'show_in_rest' => false, | |
| 47 | 47 | 'default' => false, |
| 48 | 48 | ) ); |
| 49 | 49 | register_meta( 'post', 'passster_protect_child_pages', array( |
| 50 | 50 | 'single' => true, |
| 51 | - 'show_in_rest' => true, | |
| 51 | + 'show_in_rest' => false, | |
| 52 | 52 | ) ); |
| 53 | 53 | register_meta( 'post', 'passster_protection_type', array( |
| 54 | 54 | 'single' => true, |
| 55 | - 'show_in_rest' => true, | |
| 55 | + 'show_in_rest' => false, | |
| 56 | 56 | 'default' => 'password', |
| 57 | 57 | ) ); |
| 58 | 58 | register_meta( 'post', 'passster_password', array( |
| 59 | 59 | 'single' => true, |
| 60 | - 'show_in_rest' => true, | |
| 60 | + 'show_in_rest' => false, | |
| 61 | 61 | ) ); |
| 62 | 62 | register_meta( 'post', 'passster_activate_overwrite_defaults', array( |
| 63 | 63 | 'single' => true, |
| 64 | - 'show_in_rest' => true, | |
| 64 | + 'show_in_rest' => false, | |
| 65 | 65 | ) ); |
| 66 | 66 | register_meta( 'post', 'passster_headline', array( |
| 67 | 67 | 'single' => true, |
| 68 | - 'show_in_rest' => true, | |
| 68 | + 'show_in_rest' => false, | |
| 69 | 69 | ) ); |
| 70 | 70 | register_meta( 'post', 'passster_instruction', array( |
| 71 | 71 | 'single' => true, |
| 72 | - 'show_in_rest' => true, | |
| 72 | + 'show_in_rest' => false, | |
| 73 | 73 | ) ); |
| 74 | 74 | register_meta( 'post', 'passster_placeholder', array( |
| 75 | 75 | 'single' => true, |
| 76 | - 'show_in_rest' => true, | |
| 76 | + 'show_in_rest' => false, | |
| 77 | 77 | ) ); |
| 78 | 78 | register_meta( 'post', 'passster_button', array( |
| 79 | 79 | 'single' => true, |
| 80 | - 'show_in_rest' => true, | |
| 80 | + 'show_in_rest' => false, | |
| 81 | 81 | ) ); |
| 82 | 82 | register_meta( 'post', 'passster_id', array( |
| 83 | 83 | 'single' => true, |
| 84 | - 'show_in_rest' => true, | |
| 84 | + 'show_in_rest' => false, | |
| 85 | 85 | ) ); |
| 86 | 86 | register_meta( 'post', 'passster_activate_misc_settings', array( |
| 87 | 87 | 'single' => true, |
| 88 | - 'show_in_rest' => true, | |
| 88 | + 'show_in_rest' => false, | |
| 89 | 89 | ) ); |
| 90 | 90 | register_meta( 'post', 'passster_redirect_url', array( |
| 91 | 91 | 'single' => true, |
| 92 | - 'show_in_rest' => true, | |
| 92 | + 'show_in_rest' => false, | |
| 93 | 93 | 'default' => '', |
| 94 | 94 | ) ); |
| 95 | 95 | register_meta( 'post', 'passster_hide', array( |
| 96 | 96 | 'single' => true, |
| 97 | - 'show_in_rest' => true, | |
| 97 | + 'show_in_rest' => false, | |
| 98 | 98 | 'default' => 'no', |
| 99 | 99 | ) ); |
| 100 | 100 | register_meta( 'post', 'passster_area_shortcode', array( |
| 101 | 101 | 'single' => true, |
| 102 | - 'show_in_rest' => true, | |
| 102 | + 'show_in_rest' => false, | |
| 103 | 103 | ) ); |
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | /** |
| @@ -109,11 +109,15 @@ | ||
| 109 | 109 | * @return void |
| 110 | 110 | */ |
| 111 | 111 | public function add_meta_scripts() { |
| 112 | 112 | $screen = get_current_screen(); |
| 113 | - if ( $screen->base !== 'post' ) { | |
| 113 | + if ( 'post' !== $screen->base ) { | |
| 114 | 114 | return; |
| 115 | 115 | } |
| 116 | + $action = ( isset( $_GET['action'] ) ? sanitize_text_field( wp_unslash( $_GET['action'] ) ) : '' ); | |
| 117 | + if ( 'elementor' === $action ) { | |
| 118 | + return; | |
| 119 | + } | |
| 116 | 120 | wp_enqueue_script( |
| 117 | 121 | 'passster-settings', |
| 118 | 122 | PASSSTER_URL . '/inc/admin/build/index.js', |
| 119 | 123 | array( |
| @@ -155,20 +159,25 @@ | ||
| 155 | 159 | // Optionally adding some settings. |
| 156 | 160 | if ( isset( $options['password_length'] ) ) { |
| 157 | 161 | $args['password_length'] = esc_html( $options['password_length'] ); |
| 158 | 162 | } else { |
| 159 | - $args['password_length'] = 6; | |
| 163 | + $args['password_length'] = 12; | |
| 160 | 164 | } |
| 161 | 165 | if ( isset( $options['include_uppercase'] ) ) { |
| 162 | 166 | $args['include_uppercase'] = esc_html( $options['include_uppercase'] ); |
| 163 | 167 | } else { |
| 164 | - $args['include_uppercase'] = false; | |
| 168 | + $args['include_uppercase'] = true; | |
| 165 | 169 | } |
| 166 | 170 | if ( isset( $options['include_numbers'] ) ) { |
| 167 | 171 | $args['include_numbers'] = esc_html( $options['include_numbers'] ); |
| 168 | 172 | } else { |
| 169 | - $args['include_numbers'] = false; | |
| 173 | + $args['include_numbers'] = true; | |
| 170 | 174 | } |
| 175 | + if ( isset( $options['include_symbols'] ) ) { | |
| 176 | + $args['include_symbols'] = esc_html( $options['include_symbols'] ); | |
| 177 | + } else { | |
| 178 | + $args['include_symbols'] = true; | |
| 179 | + } | |
| 171 | 180 | if ( isset( $options['global_protection_id'] ) ) { |
| 172 | 181 | $args['global_protection_id'] = esc_html( $options['global_protection_id'] ); |
| 173 | 182 | } |
| 174 | 183 | wp_localize_script( 'passster-settings', 'options', $args ); |
| @@ -206,9 +215,9 @@ | ||
| 206 | 215 | * @return void |
| 207 | 216 | */ |
| 208 | 217 | public function render_settings() { |
| 209 | 218 | ?> |
| 210 | - <div id="passster-metabox"></div> | |
| 219 | + <div id="passster-metabox"></div> | |
| 211 | 220 | <?php |
| 212 | 221 | } |
| 213 | 222 | |
| 214 | 223 | /** |
| @@ -218,9 +227,9 @@ | ||
| 218 | 227 | */ |
| 219 | 228 | public function rest_api_init() { |
| 220 | 229 | register_rest_route( 'passster/v1', '/meta', array( |
| 221 | 230 | 'methods' => 'POST', |
| 222 | - 'callback' => [$this, 'save_meta'], | |
| 231 | + 'callback' => array($this, 'save_meta'), | |
| 223 | 232 | 'permission_callback' => function () { |
| 224 | 233 | return current_user_can( apply_filters( 'passster_user_capability', 'manage_options' ) ); |
| 225 | 234 | }, |
| 226 | 235 | ) ); |
| @@ -225,9 +234,9 @@ | ||
| 225 | 234 | }, |
| 226 | 235 | ) ); |
| 227 | 236 | register_rest_route( 'passster/v1', '/meta', array( |
| 228 | 237 | 'methods' => 'GET', |
| 229 | - 'callback' => [$this, 'get_meta'], | |
| 238 | + 'callback' => array($this, 'get_meta'), | |
| 230 | 239 | 'permission_callback' => function () { |
| 231 | 240 | return current_user_can( apply_filters( 'passster_user_capability', 'manage_options' ) ); |
| 232 | 241 | }, |
| 233 | 242 | ) ); |
| @@ -232,9 +241,9 @@ | ||
| 232 | 241 | }, |
| 233 | 242 | ) ); |
| 234 | 243 | register_rest_route( 'passster/v1', '/areas', array( |
| 235 | 244 | 'methods' => 'GET', |
| 236 | - 'callback' => [$this, 'get_areas'], | |
| 245 | + 'callback' => array($this, 'get_areas'), | |
| 237 | 246 | 'permission_callback' => function () { |
| 238 | 247 | return current_user_can( apply_filters( 'passster_user_capability', 'manage_options' ) ); |
| 239 | 248 | }, |
| 240 | 249 | ) ); |
| @@ -249,23 +258,26 @@ | ||
| 249 | 258 | */ |
| 250 | 259 | public function save_meta( object $request ) { |
| 251 | 260 | if ( $request->get_params() ) { |
| 252 | 261 | $params = $request->get_params(); |
| 253 | - $post_id = esc_html( $params['post_id'] ); | |
| 254 | - $meta_key = esc_html( $params['meta_key'] ); | |
| 262 | + $post_id = absint( $params['post_id'] ); | |
| 263 | + $meta_key = sanitize_key( $params['meta_key'] ); | |
| 255 | 264 | // Check which action to perform. |
| 256 | 265 | if ( isset( $params['meta_value'] ) ) { |
| 257 | - $meta_value = sanitize_meta( $meta_key, $params['meta_value'], 'post' ); | |
| 266 | + // Allow HTML in instruction field (links, basic formatting) | |
| 267 | + if ( 'passster_instruction' === $meta_key ) { | |
| 268 | + $meta_value = wp_kses_post( $params['meta_value'] ); | |
| 269 | + } else { | |
| 270 | + $meta_value = sanitize_meta( $meta_key, $params['meta_value'], 'post' ); | |
| 271 | + } | |
| 258 | 272 | update_post_meta( $post_id, $meta_key, $meta_value ); |
| 259 | - } else { | |
| 260 | - if ( isset( $params['delete'] ) ) { | |
| 261 | - delete_post_meta( $post_id, $meta_key ); | |
| 262 | - } | |
| 273 | + } elseif ( isset( $params['delete'] ) ) { | |
| 274 | + delete_post_meta( $post_id, $meta_key ); | |
| 263 | 275 | } |
| 264 | - return wp_json_encode( [ | |
| 265 | - "status" => 200, | |
| 266 | - "message" => "Ok", | |
| 267 | - ] ); | |
| 276 | + return wp_json_encode( array( | |
| 277 | + 'status' => 200, | |
| 278 | + 'message' => 'Ok', | |
| 279 | + ) ); | |
| 268 | 280 | } |
| 269 | 281 | } |
| 270 | 282 | |
| 271 | 283 | /** |
| @@ -277,23 +289,23 @@ | ||
| 277 | 289 | */ |
| 278 | 290 | public function get_meta( object $request ) { |
| 279 | 291 | if ( $request->get_params() ) { |
| 280 | 292 | $params = $request->get_params(); |
| 281 | - $post_id = esc_html( $params['post_id'] ); | |
| 282 | - $meta_key = esc_html( $params['meta_key'] ); | |
| 293 | + $post_id = absint( $params['post_id'] ); | |
| 294 | + $meta_key = sanitize_key( $params['meta_key'] ); | |
| 283 | 295 | $meta = get_post_meta( $post_id, $meta_key, true ); |
| 284 | 296 | if ( !empty( $meta ) ) { |
| 285 | - return wp_json_encode( [ | |
| 286 | - "status" => 200, | |
| 287 | - "message" => "Ok", | |
| 288 | - "data" => $meta, | |
| 289 | - ] ); | |
| 297 | + return wp_json_encode( array( | |
| 298 | + 'status' => 200, | |
| 299 | + 'message' => 'Ok', | |
| 300 | + 'data' => $meta, | |
| 301 | + ) ); | |
| 290 | 302 | } else { |
| 291 | - return wp_json_encode( [ | |
| 292 | - "status" => 400, | |
| 293 | - "message" => "Empty value", | |
| 294 | - "data" => '', | |
| 295 | - ] ); | |
| 303 | + return wp_json_encode( array( | |
| 304 | + 'status' => 400, | |
| 305 | + 'message' => 'Empty value', | |
| 306 | + 'data' => '', | |
| 307 | + ) ); | |
| 296 | 308 | } |
| 297 | 309 | } |
| 298 | 310 | } |
| 299 | 311 | |