¿Cómo proteger las cargas en varios sitios si el usuario no ha iniciado sesión?

4

Estoy tratando de configurar una intranet multisitio (usando subdominios) donde el contenido de cada subsitio solo es accesible para los usuarios registrados en sus respectivos sitios. El problema que tengo es intentar restringir el acceso a los archivos cargados (por ejemplo, enlace ) para solo usuarios registrados.

Similar a Cómo proteger las subidas, Si el usuario no ha iniciado sesión? , ¿cómo habilitaría una de las soluciones propuestas por hakre o Frank Bueltge para una instalación en varios sitios?

He estado recorriendo la red y Wordress Answers pero no he logrado encontrar algo con lo que pueda trabajar. Las respuestas relacionadas son:

Además, soy nuevo en PHP y todavía estoy aprendiendo cómo funciona WordPress bajo el capó, así que información detallada sobre lo que debo hacer y lo que sucede donde sería muy apreciado.

¡Gracias!

    
pregunta acdesigns 29.08.2012 - 01:11

1 respuesta

2

Buena pregunta!

Hurgando un poco alrededor, esto parece estar funcionando (más pruebas y un aspecto más calificado son bienvenidos :). Probado solo en una instalación de desarrollo localhost con subdominios. Sin mapeo de dominio.

Cambie la siguiente regla de reescritura de .htaccess :

# uploaded files
# RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteRule ^files/(.+) dl-files.php?file=$1 [L]

Haga una copia de /wp-includes/ms-files.php y colóquela en la raíz con el nombre dl-files.php .

Deshabilite SHORTINIT , modifique la ruta wp-load.php y agregue un cheque current_user_can() al principio, por lo que se convierte en:

<?php
/**
 * Modified Multisite upload handler.
 *
 * @since 3.0.0
 *
 * @package WordPress
 * @subpackage Multisite
 */

//define( 'SHORTINIT', true );
require_once( 'wp-load.php' );

if( !is_multisite() )
    die( 'Multisite support not enabled' );

if( !current_user_can( 'subscriber' ) ) {
    status_header( 403 );
    die( '403 &#8212; Forbidden.' );
}

ms_file_constants();

/* ... rest of the original file ... */

Tenga en cuenta que eliminar SHORTINIT aumenta el tiempo de carga y el consumo de memoria. Lea en alguna parte que podría ser un aumento de diez veces (!?).

Discusiones interesantes en la lista de wp-edu (no he encontrado nada en wp-hackers):

respondido por el brasofilo 15.11.2012 - 03:06

Lea otras preguntas en las etiquetas