• User Attivo

    modifica manuale su permessi manager

    Salve a tutti ragazzi, ho la necessità di limitare alcuni accessi in Admin all'utente Manager, esattamente ne ho due, il primo è il compontente JSecure e il secondo è il componente swMenuFree, nel primo il Manager può entrare tranquillamente e modificare tutti i parametri, mentre nel secondo quando ci entra viene fuori una scritta che non ha i permessi necessari...io vorrei eliminarli entrambi dal menù dei componenti e di conseguenza evitare l'accesso ovviamente il tutto sempre riferito solo per i Manager.

    Facendo una ricerca su questo forumo ho trovato una discussione dove però si parlava (limitatamente) solo di estendere i permessi ma non di limitarli...in ogni caso ho aperto il file libraries/joomla/user/authoritazion.php e ho provato a cercare qualcosa che avesse a che fare con questi due componenti ma non ho trovato nulla, allora ho provato ad aggiungere io qualcosa, ho iniziato con il primo componente e ho inserito questo:

    $this->addACL( 'com_jsecure', 'manage', 'users', 'super administrator' );
    $this->addACL( 'com_jsecure', 'manage', 'users', 'administrator' );
    $this->addACL( 'com_jsecure', 'block user', 'users', 'manager' );
    ```cioè come per dire permetti l'uso di questo componente al **super administrator**, all'**administrator** ma bloccalo al **manager**, ma non funziona, nel senso che il manager continua ancora a vedere e ad usare il componente...quinsi sicuramente ho capito male io tutto il funzionamento :(
    Qualcuno più esperto in materia potrebbe darmi qualche cosniglio per rimuovere questi due componenti ma solo per il Manager?
    Grazie a tutti in anticipo :)

  • User Attivo

    Ciao lupin,
    un piccolo hack, che NON elimina la voce del menù, ma fa apparire la scritta
    "Non sei autorizzato a visualizzare questa risorsa."

    All'inizio della pagina admin del componente, ad esempio "componente prova" che sarà quindi...

    /administrator/components/com_prova/admin.prova.php

    dopo

    
    defined( "_VALID_MOS" ) || defined( "_JEXEC" ) || exit("Restricted access");
    defined( "_xxx_" ) || define( "_xxx_", true );
    
    
    ```Inserisci...dopo aver inserito al posto di "com_prova" il nome del tuo componente...
    
    

    // Authorize
    $user = & JFactory::getUser();
    $acl = & JFactory::getACL();

    // Fudge ACL for Administrators
    $acl->addACL( 'com_prova', $task, 'users', 'super administrator' );
    $acl->addACL( 'com_prova', $task, 'users', 'administrator' );
    // Uncomment to allow Manager access
    //$acl->addACL( 'com_prova', $task, 'users', 'manager' );

    if (!$user->authorize( 'com_prova', $task )) {
    $mainframe->redirect( 'index.php', JText::_('ALERTNOTAUTH') );
    }

    > forum.joomla.org/viewtopic.php?p=1600522Spero sia utile, ciao...
    :ciauz:

  • User Attivo

    ...ah grazie, anche solo la scritta "Non sei autorizzato a visualizzare questa risorsa." è già qualcosa, magari faccio qualche prova e poi vedo meglio anche l'altra discussione che mi hai indicato e ti faccio sapere, forse potrebbe essere utile pure ad altri 😉


  • User Attivo

    Ciao kre0, ho provato a vedere il link che mi hai indicato ma un pò non tanto ci ho capito (conosco poco l'inglese) ma soprattutto non tratta esattamente ciò che cercavo, anche se la discussione tratta un argomento simile...in ogni caso ora ho provato la tua soluzione, cioè quella di limitare solo i permessi ma e funziona, ma a me servirebbe proprio eliminare la voce dal menù (ovviamente solo per i Manager), tu per caso sai come si fa? oppure qualcun'altro potrebbe darmi qualche consiglio utile?
    Grazie 🙂


  • User Attivo

    Lupin,
    continuando a cercare ho trovato queste 2 guide...invece di modificare il core di Joomla, fanno installare dei componenti.
    Le guide sono italiano, ma bisognerebbe fare delle prove per capire se permettono la differenziazione tra manager ed administrator, ammesso che la cosa possa andarti bene :arrabbiato: 😄

    joomla.it/articoli-della-community/944-backend-facilitato-parte-1.html
    joomla.it/articoli-della-community/946-backend-facilitato-per-joomla-15-parte-2.html

    :ciauz:


  • User Attivo

    Ciao kre0, ti ringrazio veramente molto per l'interessamento, le guide che mi hai indicato le ho trovate veramente interessanti e me le sono salvate, unica cosa è che io per questo sito sto unsando un template diverso per l'Administrator e non so se queste modifiche sono adatte (anche perché alcune di queste icone già ci sono), inoltre io il menù di navigazione principale (quello in altro in orizzontale per intederci) non vorrei eliminarlo, ma soprattutto mi sembrano dei procedimenti troppo lunghi e macchinosi per ciò che devo fare io, io devo solo eliminare due voci di menù, tutto il resto non mi interessa, quindi alla fine si tratterebbe solo di eliminare/aggiungere/commentare solo qualche stringa di codice...può essere mai che nessuno sappia come fare? non è mai capitato a nessuno? dico questo perché ho aperto anche altri annuncio su altri forum ma addirittura non ho ricevuto nessuna risposta! eppure non mi sembra una cosa così complicata, almeno per chi, a differenza di me, è esperto di Joomla 😞
    Scusa per lo sfogo finale e grazie mille ugualmente per l'interessamento 😉


  • User Attivo

    Figurati,
    il problema è che e 2-3 linee di codice da commentare, fanno parte del core di Joomla...pratica evitata vivamente dai "maggiori esperti"...continuo a cercare, se trovo qualcosa :bho:


  • User Attivo

    ...scusa la domanda, ma la modifica che mi hai consigliato tu inizialmente (e che al momento ho adottato) pure quella modifica il core di joomla? credo di no perché alla fine ho modificato un file di un componente, però chiedo per sicurezza...

    Oltre a questo, volevo dire che sono d'accordissimo che è meglio evitare questo tipo di modifiche, cioè quelle del core di Joomla, però è vero pure che alla fine si tratta solo di due cavolatine che non credo possano compromettere granché, inoltre se un domani dovessi aggiornare qualcosa e le modifiche si ripristinano io posso sempre rimodificare nuovamente i files interessati, anche perché alla fine si tratta di commentare solo qualche stringa.

    Per la ricerca, ovviamente mi fa piacere, però se non trovi nulla fa lo stesso, ovviamente se trovi qualcosa mi fa più piacere 🙂 inoltre possiamo scrivere tutto sul forum perché credo che possa interessare veramente a molti, ho trovato molte discussioni in merito ma alla fine nessuno ha ottenuto dei risultati...


  • User Attivo

    La modifica che ti avevo proposto è relativa ad un componente...ma...leggendo qua e la, mettendo insieme i pezzi e facendo varie prove sono giunto a...rullo di tamburi...una cosa che funziona :yuppi:...ma per i motivi scritti prima non mi assumo alcun tipo di responsabilità sulla sicurezza o meno dell'utilizzo... :vai:

    Primo passo è FONDAMENTALE effettuare il salvataggio del file che andremo a modificare...il file in oggetto è...

    /administrator/modules/mod_menu/helper.php

    Circa alla riga 126 troviamo la query che sceglie i componenti da visualizzare

    
      $query = 'SELECT *' .
                    ' FROM #__components' .
                    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
                    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
                    ' AND enabled = 1' .
                    ' ORDER BY ordering, name';
    
    ```Ora possiamo utilizzare il livello di accesso per modificare la query a piacimento utilizzando la variabile...
    

    $user =& JFactory::getUser();
    $user_type = $user->get('usertype');

    Nell' esempio successivo ho sostituito alla query principale, la lettura dalla varibile e le 2 query.
    La prima delle due query è quella standard che però renderemo visibile solamente ad Administrator e Super Administrator.
    La seconda per i Manager ai quali non faremo visualizzare il componente "com_prova".
    
    Ovviamente è personalizzabile a piacere...
    
    

    $user =& JFactory::getUser();
    $user_type = $user->get('usertype');

    if ($usertype !== "Manager") {
    $query = 'SELECT *' .
    ' FROM' .
    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
    ' AND enabled = 1' .
    ' ORDER BY ordering, name';
    }
    else {
    $query = 'SELECT *' .
    ' FROM' .
    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
    ' AND '.$db->NameQuote( 'option' ).' <> "com_prova"' .
    ' AND enabled = 1' .
    ' ORDER BY ordering, name';
    }

    
    :ciauz:

  • User Attivo

    Ciao kre0, come a sempre grazie mille in anticipo, sicuramente funzionerà e sono curioso di provarla ma oggi non sono certo di riuscirci, ho avuto altri imprevisti e non ho il lavoro sotto mano, ma appena posso (prestissimo) provo e ti faccio sapere...però per ora sono anche curioso del fatto che dici "non mi assumo alcun tipo di responsabilità sulla sicurezza o meno dell'utilizzo", cosa vorresti dire esattamente? per caso la sicurezza di Joomla potrebbe essere poco sicuro e potrebbe essere più vulnerabile agli attachi? oppure riguarda solo una questione di funzionamento? nel primo caso effettivamente sarebbe un pò rischioso, nel secondo invece basta semplicemente provare se tutto funziona bene e il gioco è fatto! 🙂


  • User Attivo

    :lol:...non credo che abbia implicazioni sulla sicurezza, non cambia oggettivamente molto...è solo una query...ma non si sa mai 😉


  • User Attivo

    ...allora sono riuscito a fare una prova solo che non funziona...praticamente ho sostituito:

    $query = 'SELECT *' .
                    ' FROM #__components' .
                    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
                    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
                    ' AND enabled = 1' .
                    ' ORDER BY ordering, name';
    

    con:

    $user =& JFactory::getUser();
    $user_type = $user->get('usertype');
    
    if ($usertype !== "Manager") {
      $query = 'SELECT *' .
                    ' FROM' .
                    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
                    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
                    ' AND enabled = 1' .
                    ' ORDER BY ordering, name';
    }
    else {
    $query = 'SELECT *' .
                    ' FROM' .
                    ' WHERE '.$db->NameQuote( 'option' ).' <> "com_frontpage"' .
                    ' AND '.$db->NameQuote( 'option' ).' <> "com_media"' .
                    ' AND '.$db->NameQuote( 'option' ).' <> "com_jsecure"' .
                    ' AND enabled = 1' .
                    ' ORDER BY ordering, name';
    }
    

    per nascondere il componente JSecure ai Manager solo che non funziona, la voce resta ancora nel menù Componenti :mmm:


  • User Attivo

    kre0 sicuro che hai provato e funziona? perché ame proprio non ne vuole sapere...oppure ho capito male io?


  • User Attivo

    ...non c'è nessuno che mi può aiutare sulla base di questi elementi?


  • User Attivo

    Kre0 ma che fine hai fatto? mi hai lasciato così, sul più bello (anzi brutto)? 😞


  • User Attivo

    ...ragazzi ma possibile mai che non esiste nessun metodo per rimuovere manualmente dei componenti per alcuni utenti? mi sembra strano, anche perché non riesco a trovare nulla neanche in giro per il web 😞


  • User Attivo

    Ciao,
    dovresti utilizzare un componente che gestisca le estensioni legate ai singoli utenti.

    Se cerchi su extension qualcosa trovi 😉


  • User Attivo

    ...ho già provato più di un componente (free) ma alcuni non mi facevano fare esattamente ciò che mi serviva, altri davano problemi vari (ad es di visualizzazione, altri non si traducevano, etc) e inoltre a me occorre solo rimuovere queste due voci, mi sembra inutile utilizzare un componente solo per questo quando basta seplicemente commentare o fare una piccola modifica di una stringa, credo che la cosa sia fattibile e neanche complicata, solo che non si sa perché non riesco a capire come si possa fare, ho aperti anche altre discussioni su altri forum ma nessuno ha saputo darmi risposte in merito...ho fatto alcune ricerche su altri forum in inglese e ho visto che si è parlato molto spesso di questo solo che in alcuni casi nello specifico non riguardava esattamene ciò che mi serviva e poi non conosco bene l'inglese, quindi non sono riuscito a ricarci nulla però ho capito che è possibile solo che nei forum in italiano dove ho scritto chi per un motivo e chi per un altro alla fine non sono riuscito ad arrivare a nulla 😞