Restringir acceso a páginas de mediawiki por grupos

Restringir el acceso a páginas de mediawiki por grupos

Vamos a utilizar la extension CategoryPermissions para establecer permisos a los artículos de las categorías. De esta manera podemos restringir el acceso a una página de mediawiki ependiendo de si el usuario pertnece a un grupo o no. Como siempre la última versión de como hacerlo esta en mi wiki.

Instalación

Tendremos que añadir el fichero de nombre CategoryPermissions.php a la carpeta extensions de nuestra mediawiki con el contenído que se le indica aquí.

Una vez hecho esto tendremos que añadir al final del archivo LocalSettings.php (que se encuentra en la raiz de nuestra mediawiki) las siguientes lineas:

 require_once("$IP/extensions/CategoryPermissions.php");
 $wgGroupDefaultAllow=true; //set to true to allow everyone access to pages without a category
 $wgCategoryExclusive=array("Category:cat_name","Category:cat2_name");//deny access to these categories for anyone not in the group

Con la variable $wgGroupDefaultAllow indicamos que el accesso a pagínas sin categorias esta permitido.

Uso

Cuando queramos añadir nuevos permisos tendremos que editar el fichero LocalSettings.php (que se encuentra en la raiz de nuestra mediawiki) para añadirle las lineas correspondientes. Las lineas tienen la siguiente estructura:

 $wgGroupPermissions['NOMBRE_GRUPO']['Category:NOMBRE_CATEGORIA_NOMBRE_PERMISO']=VALOR;
  • NOMBRE_GRUPO: Nombre del grupo alq ue se le quiere dar el permiso indicado para la categoria indicada.
  • NOMBRE_CATEGORIA: Nombre de la categoría a la que se le da el permiso indicado para el grupo indicado. Si en vez de Category:NOMBRE_CATEGORIA se pone *, el permiso para el grupo indicado será asignado a todas las categorías.
  • NOMBRE_PERMISO: read, move, edit, create, ...
  • VALOR: true o false.

Ejemplos

  • Si queremos tener una categoría de nombre Seguridad_admin en la que el grupo de usuarios de nombre admin tenga permisos de lectura, escritura, movimiento y creación tendremosq ue añadir als siguientes lineas al archivo LocalSettings.php (que se encuentra en la raiz de nuestra mediawiki):
 $wgGroupPermissions['admin']['Category:Seguridad_admin_read']=true;
 $wgGroupPermissions['admin']['Category:Seguridad_admin_edit']=true;
 $wgGroupPermissions['admin']['Category:Seguridad_admin_move']=true;
 $wgGroupPermissions['admin']['Category:Seguridad_admin_create']=true;
  • Damos permiso de lectura para los usuarios del grupo readers para todas las categorias:
$wgGroupPermissions['readers']['*_read']=true;

Problemas

Cuando utilizamos esta extensión nos encontramos con el problema de que a partir de entonces tienes que definir el accesso de todas las categorias que tengas en la wiki. Si no añades los permisos para una categoría, nadie tendrá permisos para ver el contenido de esta. Esto a mi no me gusta mucho porque lo que quería era tener una serie de categorias para los permisos y otras no.

Pero esto no es irremediable. Mi solución es tener una lista de categorías que empiecen por Seguridad_ que serán a las que se le aplicaran los permisos y a las demás no. Para eso tendremos que editar el fichero CategoryPermissions.php (que se encuentra en la carpeta de extensiones de nuestra mediawiki) y añadir al final del bucle las siguientes lineas:

 foreach( $parentCategories as $category=>$dd)
 {
   ...
   if (!ereg("Seguridad_*", $category)) {
      $user_allowed=true;
   }
 }//foreach( $parentCategories as $category=>$dd)

Comentarios

Solicito ayuda, creo haber seguido todas tus instrucciones al pie de la letra, pero por alguna razón el complemento no está funcionando correctamente me parece, detallo que es lo se tiene y lo que sucede:

Tengo MediaWiki 1.15.0, instalado con XAMP, MYSQL.

Se copió el archivo "CategoryPermissions.php", en la carpeta extensions.

Se instaló el complemento GroupPermissionsManager. que recomiendas en tu pagina.

Con este complemento se creo el grupo "sistemas".

En mediawiki se creó la categoría "Sistemas".

Sobre esa categoría una pagina "Oracle Portal", por ejemplo.

en el archivo "LocalSettings.php" se agregó las lineas:

require_once("$IP/extensions/CategoryPermissions.php");
$wgGroupDefaultAllow=true; //set to true to allow everyone access to pages without a category
$wgCategoryExclusive=array("Category:cat_name","Category:cat2_name");//deny access to these categories for anyone not in the group

$wgGroupPermissions['sistemas']['Category:Sistemas_read']=true;
$wgGroupPermissions['sistemas']['Category:Sistemas_edit']=true;
$wgGroupPermissions['sistemas']['Category:Sistemas_move']=true;
$wgGroupPermissions['sistemas']['Category:Sistemas_create']=true;

Y al usuario Lcardenas, se le agregó el grupo "sistemas",

Entonces entro con ese usuario, y el mensaje (haga lo que haga) siempre es:

Error de permisos

De Documentos

 

La acción que ha solicitado está restringida a los usuarios de uno de estos 3 grupos: *, Usuarios, sistemas.

Volver a Página Principal.

 

 

Favor le pido su ayuda, necesito este tipo de restriccion pero hasta el momento no me ha dado resultado.

¿Si entras con un usuario que no esta en el grupo sistemas te sale el mismo error?

Saludos

Asi es, por ejemplo tengo el usuario Administrador sin el privilegio, y el usuario Lcardenas dentro del grupo "sistemas", y ambios me dan el mismo mensaje.

Pues parece que todo esta correcto, solo se me ocurre confirmar ciertas cosas para saber que estan bien. Ya se que algunas son obvias, pero por probar que no quede:

  • Vamos a Páginas especiales, luego en Usuarios y Permisos le damos a Configuración de permisos de usuarios, en el campo que nos sale ponemos el nombre del usuario que queremos que tenga los permisos (en tu caso Lcardenas) y le damos al botón de Modificar grupos de usuario. Comprobamos que tiene activado el grupo que usamos para los permisos (en tu caso es Sistemas), sino esta lo activamos y le damos al botón Guardar grupos de usuarios.
  • Vamos a Páginas especiales, luego en Usuarios y Permisos le damos a Permisos del grupo de usuarios y en la lista de grupos de usuarios comprobamos que solo hay un grupo llamado como nuestro grupo (en tu caso Sistemas). Te comento esto porque intente usar el grupo de Usuarios que tiene mediawiki por defecto, pero no me lo cogia y me salía otro ahi.
  • Vamos a Páginas especiales, luego en Usuarios y Permisos le damos a Permisos del grupo de usuarios. En la lista de grupos de usuarios buscamos nuestro grupo (en tu caso Sistemas), le damos al enlace que tendrá debajo (ver los miembros de este grupo) y comprobamos que sale nuestro usuario (En tu caso Sistemas).
  • Entra con al cuenta (en tu caso Lcardenas) y confirma que arriba a la derecha te aparecen los siguientes enlaces: Lcardenas - Mi discusión - Mis preferencias - Lista de seguimiento - Mis contribuciones - Salir, e intenta entrar en la página protegida.

Prueba esto, si se me ocurre más te digo.

Saludos

cuando intento instalar GroupPermissionsManager me sale lo siguente en mi pagina de wiki: Warning: require_once(D:\Sitios\mediawiki/extensions/GroupPermissionsManager/GroupPermissionsManager.php): failed to open stream: No such file or directory in D:\Sitios\mediawiki\LocalSettings.php on line 134 ayuda porfa... gracias

Ya te he respondido en el otro post.

Hola que tal, le agradezco la ayuda por este estupendo tutorial que has hecho, pero desafortunadamente he seguidos los pasos al pie de la letra y me encuentro con el mismo problema que el usuario "Anónimo" con el error de los permisos.

Según leo en la página de la extensión, hay que cambiar la palabra Category por Categoría en el código, y comento esto por que pienso que puede que sea la causa, por que no encuentro otra alternativa.

He creado el grupo primero, luego los permisos de ese grupo y su categoría correspondiente como bien indicas.

Agradecería su ayuda enormemente

Un Saludo

Añadir nuevo comentario