Traducción literal del artículo: Give Joomla backend managers access to any component! Control who has access! por Fotis Evangelou.
Uno de los problemas más comunes que enfrentan los desarrolladores cuando finalizan un proyecto basado en Joomla! Es la administración de acceso de usuarios o, para ser más exactos, la falta de control en el acceso de éstos. Hay numerosas soluciones para solventar este aspecto, tales como un componente comercial de Joomla Solutions llamado JBAM (Joomla Backend Access Management – $125) y el componente gratuito ACLPlus de Byostech. Ambos son hacks a los archivos del core y cada uno tiene sus inconvenientes, lo cual provoca que muchos usuarios/desarrolladores puedan mostrarse escépticos a la hora de usarlos.
No me malinterpreten, pero JACL es dependiente de la versión y JBAM es una forma complicada (y costosa) cuando todo lo que quieres es dar acceso a tus administradores a -por ejemplo- el componente de Encuestas.
Entonces ¿cuáles otras opciones podemos tener? Sólo modifica un poco un archivo por ti mismo y podrás habilitar a cualquier grupo el acceso al componente que quieras.
El archivo es éste: includes/gacl.class.php
Podemos asignar fácilmente acceso a determinados componentes para determinados grupos. Supongamos que quieres darle a tu Administrador los privilegios de añadir/eliminar cuentas de usuarios desde el panel de administración, pero no acceso a módulos o mambots. O bien quisieras habilitar a tus Managers para acceder a componentes de terceros tales como ArtBanners, lo cual resulta bastante lógico si trabajas con mucho contenido y deseas distribuir tareas diferentes a distintas personas.
Así que basta con modificar o añadir algunas líneas en el archivo includes/gacl.class.php y podremos controlar totalmente a qué partes del sitio pueden acceder los 3 grupos predefinidos del backend (Super administrador, Administrador y Manager).
Les daré un ejemplo de lo que usualmente hago.
Aproximadamente en la línea 136, agrega barras de comentario a estas líneas, tal como aparecen a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 | / access to modules //$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'modules', 'all' ); $this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'modules', 'all' ); //$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'modules', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'modules', 'all' ); // access to mambots //$this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'mambots', 'all' ); $this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'mambots', 'all' ); //$this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'mambots', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'mambots', 'all' ); |
Como puedes ver, se han comentado todas las líneas referentes a “administrator”. Así que cada vez que abra una nueva cuenta de usuario y darle privilegios de Administrador, sabré que nunca llegará a ver los menús de módulos y mambots.
Aprox. en la línea 152 donde dice:
1 2 | / uncomment following to allow managers to edit modules //array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' ); |
Reemplaza este código…
1 2 3 4 5 6 7 8 9 10 11 | // access to components $this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'install', 'users', 'super administrator', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'super administrator', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_newsflash' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_frontpage' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_media' ); // ** add additional components for a manager as desired, or give access to all |
… con las siguientes líneas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Custom Access - Start // added for administrators' access $this->_mos_add_acl( 'administration', 'install', 'users', 'administrator', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_massmail' ); $this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_massmail' ); $this->_mos_add_acl( 'administration', 'manage', 'users', 'administrator', 'components', 'com_trash' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_poll' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_media' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_joomfish' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_yanc' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_artbanners' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'administrator', 'components', 'com_virtuemart' ); // added for managers' access $this->_mos_add_acl( 'administration', 'install', 'users', 'manager', 'components', 'all' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_massmail' ); $this->_mos_add_acl( 'administration', 'manage', 'users', 'manager', 'components', 'com_massmail' ); $this->_mos_add_acl( 'administration', 'manage', 'users', 'manager', 'components', 'com_trash' ); $this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_poll' ); |
Con esto hemos permitido el acceso de Administradores a los componentes: Correo masivo, Papelera, Encuestas, JoomFish y ArtBanners, pero NO a YanC o VirtueMart (el acceso al administrador de media es dado como estándar). Esto no sería posible con los controles predeterminados de Joomla! para el control de accesos de usuarios.
De esta manera podemos “distribuir” fácilmente los privilegios de acceso de 2 grupos de usuarios (Administrador y Manager) a determinados componentes sin necesidad de instalar un componente fabricado por terceros.
Nota que existen algunas restricciones para ciertos grupos de usuarios en Joomla! de forma predeterminada que no pueden ser cambiados por los “hacks” mencionados. Por ejemplo, los Managers no pueden manejar la Administración de Usuarios ni pueden accesar a la configuración Global.
Pero en la mayoría de los casos, todo lo que necesitarás es habilitar acceso a tus Managers a los componentes de terceros, y probablemente restringir a los Administradores para que no “jueguen” con módulos y mambots.
Publicado en Joomla. 8 Comentarios »
hola buen dia
probe este codigo y si funciona muy bn grax por darlo a conocer.:)
pero lo que yo quisiera que el manager tambien pudiera ver el virtuemart ya que mi pagina es un carrito de compras, se puede hacer eso?????
agradeceria su ayuda
saludos
Genial el TIP, la verdad es que mientras no se libere la 1.6 con permisos granulados, esta opción que comentas es extremadamente interesante.
Gracias por el aporte. :)
Hola @gnumax, me alegra que hayas encontrado utilidad en el artículo. De todas formas te recomiendo darle un vistazo a los últimos comentarios del artículo original creado por Fotis.
Saludos.
muy buen dato man!! a mi me gusta mucho buscar cambios asi de sencillos para estar instalando extensiones, molestas que a veces en vez de ayudar empeoran las cosas.
pero tengo una pregunta:
¿Se podrá hacer restrincciones de la misma manera para categorias de contenidos? Por ejemplo para que un manager solo accesa a los artículos de la categoría A mientras que no pueda modificar artículos de una categoría B. ¿Esto será posible?
Hola Misterioaqo,
Todos los datos de usuario provienen de la base de datos y desde luego es posible programar un componente (si es que ya no existe) que asigne privilegios tal como mencionas. Sin embargo actualmente no puedo darte una guía, dado que abandoné Joomla desde hace mucho tiempo y he perdido el toque con éste.
No importa, ya conseguí lo que necesitaba, el cliente que quería este trabajo tenía instalado el componente noixACL pero no funcionaba bien en Joomla 1.5 y tuve que hacerle las modificaciones necesarias. Un dato interesante que encontré y utilicé, son los rangos que usa Joomla para el ID de los grupos. Por ejemplo, para cualquier grupo externo que se cree, siempre van a tener un ID mayor a 30. Los grupos que vienen por defecto en Joomla tienen ID entre 20 y 30. Ya los que saben alguito de programación fácil me entenderán :P
si me parece barbaro que no se usen los componentes para grupos ya que son muy complicados y te joden el sitio, se te tranca todo y no podes entrar nunca mas fue lo que me paso a mi
asi que modifico el archivo a manito, y listo muy bueno el articulo aplasusos
Hola, de haber sabido esto antes no me hubiese quemado tanto las pestañas… logre hacer todo esto despues de mucho cabecearme… y ahora he migrado a joomla 1.5 pero los archivos no son igual y aun no doy en el clavo…. alguien a logrado hacer esto mismo pero en joomla 1.5??? escribanme por favor… moisesneveu [at] gmail
@Jk en ¿”WatchTower” o “CashPower”?: Hola! Solo queria decirte algo de corazon, no soy testigo, pero muchas veces...
@Glass en ¿Joomla Vs. Wordpress? (1ª parte): Muy interesante post, aunque algo parecido leí en alguna parte pero en inglés, aunque aquí se tocan...
@Ricardo Olivera en ¿Joomla Vs. Wordpress? (1ª parte): Muy interesante el post y los comentarios. Yo quiero poner una tienda tipo carrito de...
@Antonio García en ¿Joomla Vs. Wordpress? (1ª parte): Creo que la comparación no debería tomarse tan literalmente, creo que muchos usuarios no tan...
@Daniel Gonzalez en ¿Joomla Vs. Wordpress? (1ª parte): Sobre la comparación de lo que puede o no puede hacer wordpress y joomla, sería interesante...
@Bandolera en ¿Joomla Vs. Wordpress? (1ª parte): Hola chicos malos: Según he leido el artículo y los comentarios dejados, me doy cuenta que en...
@ABTOP en Construir letras capitulares en Wordpress. Parte I – PHP: Similar, but slightly different approach: http://newrussianamerica.co...
@claudia santiesteban hernandez en Malos consejos: yo tengo una enemiga por mis espaldas y hasta le tengo y me quito a angel eso me da miedo y...
Darío Ferrer — Blog personal
Sitio desarrollado con Wordpress, software libre para un mundo libre.
61 consultas a la BD en 0.902 segundos. Blog alojado en DreamHost