[Typo3-UG Italy] Permessi di accesso

Roberto Torresani erreti at siel.it
Fri Oct 21 14:14:16 CEST 2005


Ciao!

Tempo fa avevo scritto alla ml chiedendo aiuto su un problema di permessi:
io avevo bisogno di dare come limitazione ad una pagina piu' gruppi e rendere
quella pagina visibile solo dagli utenti che appartenevano a tutti i gruppi.

Dopo vari tentativi sono arrivato alla soluzione. Spero di non aver creato
dei buchi di cui non mi sono accorto, nel caso provvedero' a correggerli e
farvi sapere.

Ho installato il modulo "ingmar_accessctrl" che permette di assegnare ad
una pagina (o componente) piu' gruppi di accesso. Questo non mi andava
bene perche' permetteva a chiunque appartenesse ad uno o piu' dei gruppi
inseriti di visualizzare la pagina.

Ho modificato il file "typo3conf/ext/ingmar_accessctrl/class.ux_t3lib_pageSelect.php" 
sostituendo la funzione "getMultipleGroupsWhereClause($field)" con il 
seguente codice:

        function getMultipleGroupsWhereClause($field) {
                $memberGroups = t3lib_div::intExplode(",",$GLOBALS['TSFE']->gr_list);
                $orChecks=array();
                $orChecks[]=$field.'=""';       // If the field is empty, then OK
                $orChecks[]=$field.'="0"';      // If the field contsains zero, then OK
                $orChecksRoby=array();
                $roby_elenco="";


                $query = "SELECT * FROM PAGES";

                $res = mysql(TYPO3_db,$query);
                //echo mysql_error();

                //$count = mysql_num_rows($res);

                foreach($memberGroups as $value)        {
                        if  ($value <= 0)       {
                                $orChecks[]='('.$field.' LIKE "%,'.$value.',%" OR '.
                                                                $field.' LIKE "'.$value.',%" OR '.
                                                                $field.' LIKE "%,'.$value.'" OR '.
                                                                $field.'="'.$value.'")';
                        } else {
                                $orChecks[]='('.$field.'="'.$value.'")';
                                if ($roby_elenco=="") {
                                        $roby_elenco=$value;
                                } else {
                                        $roby_elenco=$roby_elenco.",".$value;
                                }
                        }
                        if ($roby_elenco) $orChecks[]='('.$field.'="'.$roby_elenco.'")';
                }
                return ' AND ('.implode(' OR ',$orChecks).')';

        }


Riporto anche una tabellina su come si comportano i permessi (1 e 2 sono 
i gruppi):

Permessi pagina       Permessi utente     Visualizza pagina
       1                   1                    SI
       1                   2                    NO
       1                   1,2                  SI
       1,2                 1                    NO
       1,2                 2                    NO
       1,2                 1,2                  SI


Spero che a qualcuno possa essere utile la cosa o se vedete qualche problema
che ho creato....

Grazie

Roberto




More information about the TYPO3-UG-italy mailing list