Joomla! Discussion Forums



It is currently Wed Nov 25, 2009 8:44 pm (All times are UTC )

 





Post new topic Reply to topic  [ 11 posts ] 
Author Message
Posted: Thu Feb 21, 2008 4:15 am 
User avatar
Joomla! Intern
Joomla! Intern
Offline

Joined: Sat Dec 17, 2005 12:31 am
Posts: 65
Location: Venezuela
Traduje este tuto porque me resultó muy útil para algo que estoy haciendo ahora:

Texto original: Give Joomla backend managers access to any component! Control who has access!.
Autor: Fotis Evangelou - Joomla Works.

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.

1.- Restringir acceso a Administradores (no Super administradores) a módulos y mambots:

Aproximadamente en la línea 136, agrega barras de comentario a estas líneas, tal como aparecen a continuación:

Code:
// 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.

2. Habilitar acceso a los Managers y Administradores a ciertos componentes:

Aprox. en la línea 152 donde dice:

Code:
// uncomment following to allow managers to edit modules
//array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' );


Reemplaza este código:

Code:
// 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:

Code:
// 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' );


De esta manera 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.

Conclusión

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.


Top
   
 
Posted: Wed Feb 27, 2008 3:07 pm 
User avatar
Joomla! Ace
Joomla! Ace
Offline

Joined: Thu Aug 18, 2005 10:11 pm
Posts: 1289
Location: San Juan - Argentina
Gracias por el aporte metacortex
Traduccion Perfecta !! 8)

_________________
twitter.com/kabeza
Freelance Joomla/codeIgniter Developer
Portfolio: http://www.beza.com.ar


Top
  E-mail  
 
Posted: Sat Mar 01, 2008 10:33 am 
User avatar
Joomla! Intern
Joomla! Intern
Offline

Joined: Sat Dec 17, 2005 12:31 am
Posts: 65
Location: Venezuela
Gracias quiquedcode. Sólo para notificar que la modificación funciona correctamente en la última versión 1.0.X.

Particularmente este procedimiento me parece estupendo, ya que "estira" un poco más las limitadas funciones de usuarios que tiene Joomla!, un mal que -por cierto- no es exclusivo de éste sino de la gran mayoría de los gestores de contenidos. Ese cambio en el comportamiento de los niveles de acceso nos permite utilizar esos 3 rangos del backend de forma más creativa.

La semana pasada estaba experimentando con agregar nuevos rangos y usar esta función de forma más extendida. No tuve éxito pero ya saldrá ;).


Top
   
 
Posted: Tue Aug 12, 2008 5:58 pm 
Joomla! Fledgling
Joomla! Fledgling
Offline

Joined: Tue Aug 12, 2008 5:24 pm
Posts: 1
Hola, me parece excelente este hack para joomla, yo tengo el mismo problema para joomla 1.5.4, pero el diseño del core de joomla ha cambiado mucho, si alguien sabe de algún hack no comercial que permita crear grupos de usuarios sería de gran ayuda, gracias!


Top
  E-mail  
 
Posted: Wed Sep 24, 2008 5:27 pm 
Joomla! Apprentice
Joomla! Apprentice
Offline

Joined: Wed Sep 24, 2008 4:43 pm
Posts: 5
buen tutorial se agradece. XD


Top
  E-mail  
 
Posted: Fri Oct 10, 2008 8:03 pm 
Joomla! Fledgling
Joomla! Fledgling
Offline

Joined: Fri Oct 10, 2008 7:51 pm
Posts: 3
hola, muy buen topico, aunque estoy haciendo algo un tanto diferente a ver si me puedes dar una opinion.

solo manejamos un tipo de usuario registrado.
quiero manejar distintos contenidos para usuarios registrados
lo que hice fue crear modulos distintos con distintos contenidos pero me atore en
darle la asignacion, ya que un usuario con el simple estatus de registrado tiene acceso a todos los contenidos registrados, lo que deseo es ser selectivo a pesar de su estatus registrado.
no se si conozcas algun plugin o alguna extension que pudiera usar o algun truco como el que nos explicaste

te agradezco tus comentarios
atte
usuario novato


Top
  E-mail  
 
Posted: Tue Oct 14, 2008 10:21 pm 
Joomla! Apprentice
Joomla! Apprentice
Offline

Joined: Tue Oct 14, 2008 10:10 pm
Posts: 9
Hola estoy realizando un portal en los cuales necesito administrar los accesos a los usuarios pero por parte de la pagina no del administrador osea a los registrados especiales y publicos como puedo asignarles modulos especificos a cada uno como hiciste por el lado del administrador desde el core... de verdad agradezco tu ayuda ya q estaba intentando con joomla 1.5 pero es totalmente diferente y ya q en joomla 1.0 encontro esa solucion... De antemano le agradezco la ayuda que me pueda dar


Top
  E-mail  
 
Posted: Thu Nov 06, 2008 10:05 pm 
Joomla! Apprentice
Joomla! Apprentice
Offline

Joined: Tue Oct 14, 2008 10:10 pm
Posts: 9
Hola gracias por la ayuda con community pude resolver un problema de aumentar un nuevo campo en el registro del usuario..... de verdad gracias.... pero lo interesante es q exactamente en un componente de avisos de autos aumente unos campos del vendedor ya se visualizan en la parte d la pagina incluso presento en el admimistrador, pero no se como guardar en la base no s en q archivo en q parte se hace eso xq si ingreso datos directamente d la base no s presenta ningun problema, podrias decir dond puedo encontrar información sobre eso...... y si es en español mucho mejor....
de verdad mil gracias x la ayuda... espero haber explicado mi duda ah estoy usando joomla 1.5.3


Top
  E-mail  
 
Posted: Wed Dec 17, 2008 11:24 pm 
Joomla! Apprentice
Joomla! Apprentice
Offline

Joined: Sat Nov 15, 2008 2:36 pm
Posts: 14
GENIAL!!!! venia buscando esto hace meses MUCHAS GRACIAS.


Lo que si me gustaría pedirte si no es mucho es si sabes la manera de ocultar al usuario manager la pestaña de "Menús y Ayuda"

Solo me falta eso para dejarlo perfecto.

Muchas gracias nuevamente.

Saludos.


Top
  E-mail  
 
Posted: Fri Feb 13, 2009 7:46 pm 
User avatar
Joomla! Intern
Joomla! Intern
Offline

Joined: Fri Jul 28, 2006 8:00 pm
Posts: 55
Location: Buenos Aires, Argentina
En el J 1.5.9 parece no existir mas ese codigo en includes/gacl.class.php por lo que no puedo modificarlo

EDITADO: Me parece que lo encontre, el codigo esta en: /libraries/joomla/user/authorization.php


Top
  E-mail  
 
Posted: Tue Apr 07, 2009 8:56 pm 
User avatar
Joomla! Fledgling
Joomla! Fledgling
Offline

Joined: Wed Apr 01, 2009 10:21 pm
Posts: 1
Location: Venezuela
Hola a todos... soy novato en esto y me pregunto si los usuarios pertenecientes al grupo de publicadores se puede controlar que solo la pagina de inicio es la que pueden editar y publicar y restringirles las edicciones y las publicaciones a los demás menús.

Como se haría eso?

Llevo buscando información a esto desde hace varias semanas pero esto fue lo mas parecido a lo que estoy buscando...

Por favor si saben de algún tutorial que hable de eso les agradecería...

tengo el joomla 1.5.10 sin community builder ni nada por el estilo.

Gracias.

_________________
El pensamiento de la amistad de la humanidad, es que nosotros pensamos mejor que yo.
http://www.kumakarecords.com


Top
  E-mail  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

Quick reply

 



Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group