Back to top

Autore Topic: Limitazioni nel bakend ai non-amministratori - trovato il modo ma serve aiuto  (Letto 6728 volte)

Offline darioc

  • Esploratore
  • **
  • Post: 65
  • Sesso: Maschio
    • Mostra profilo
Ho la necessità di far entrare nell'area amministrativa delle persone e VOGLIO che non tocchino NULLA.
Ho trovato il modo, ma ho bisogno di un aiuto perchè, credo, sia necessario conoscere qualcosa di PHP e forse Javascript.

Se tutto funziona, prometto che creo una mini guida.

L'idea è questa...

Anzitutto:
ho installato il componente Custom Quick Icon
http://extensions.joomla.org/extensions/administration/admin-interface/463
Ho tenuto abilitati solo i pulsanti necessari agli utenti che accederanno all'area amministrativa.

Ora ho il Pannello di Controllo con SOLO quei pulsanti, nel mio caso solamente SqUeReO.

Dopo:

Nella cartella /administrator/templates/khepri/
troviamo tra gli altri, i file:
- cpanel.php
- index.php
- login.php
- cartella js contenente i file :
  - index.js
  - menu.js


Aperto il file cpanel.php cerchiamo la riga di codice :
Codice: [Seleziona]
<script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
Cancellandola e salvando il file, ho constatato che il menu orrizontale dell'interfaccia amministrativa del sito non funzionava più.

Però l'icona che avevo deciso di attivare con il componente Custom Quick Icon era funzionante al 100%.

OTTIMO!!!

Il problema sarebbe risolto se non fosse che anche io devo utilizzare il sito...

Quindi chiedo un aiuto a qualcuno che sa qualcosa di PHP!

L'idea mia è questa:
includere la riga di codice soprastante in un if(___){___}

Codice: [Seleziona]
if(login.getText()=="dario"){
<script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
}

Dove login.getText() è un comando scritto solo per chiarezza.

Serve una funzione che ritorni il "NOME UTENTE" che ho dato al login.

Per esempio:

mi loggo come "dario" e sono amministratore, allora la funzione deve restituire "dario" in modo che

login.getText()=="dario" restituisca "true" e l'esecuzione possa entrare nel corpo dell'if eseguendo la riga di codice per caricare il menu orrizontale.

se invece mi loggo come "marika" e Marika non è Amministratore, allora

login.getText()=="dario" mi deve restituire "false" e non entrare nel corpo dell'if.

In pratica in questo modo solo gli amministratori potranno utilizzare il menu orrizontale, ma nel contempo si potrà dare accesso all'area amministrativa anche ad altri utenti senza rischiare che combinino un casino.

Sono stato abbastanza chiaro?

C'è qualcuno che può dare una mano a questa causa comune?

Grazie a tutti per il contributo.
« Ultima modifica: 15 Dic 2009, 10:44:32 da 56francesco »

Offline Sottolerighe

  • Appassionato
  • ***
  • Post: 263
  • Sesso: Maschio
    • Mostra profilo
può essere utile usare l'oggetto "utente corrente" ?

http://docs.joomla.org/Accessing_the_current_user_object

Non è detto che le cose migliori siano quelle che vengono a galla, a volte si trovano Sotto le Righe.

Offline darioc

  • Esploratore
  • **
  • Post: 65
  • Sesso: Maschio
    • Mostra profilo
Grazie per il link!

Potrebbe proprio essere utile allo scopo.

Proverò a capirne qualcosa di più non appena ho un po' di tempo.
Nel frattempo, altre idee sono ben accette, anche perchè non si escudono (e ci mancherebbe) altre strade, magari più semplici (come creare 2 differenti file di cPanel, boh..!)

Offline mian

  • Nuovo arrivato
  • *
  • Post: 46
    • Mostra profilo
Ciao :)

Ho fatto qualche prova e...sembra ci sia una soluzione, diciamo accettabile.

Ho modificato il file /administrator/templates/khepri/cpanel.php

Sostituendo tale parte di codice:
Codice: [Seleziona]
<?php if(JModuleHelper::isEnabled('menu')) : ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>

Con questo:
Codice: [Seleziona]
<?php $user =& JFactory::getUser();?>

<?php if ($user->username == nomeutente_che_vuoi_limitare) { ?>

<?php if(JModuleHelper::isEnabled('menu')): ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>
    <?php endif; ?>

<?php } else { ?>

<?php if(JModuleHelper::isEnabled('menu')) : ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>
    <?php endif; ?>

<?php ?>

In questo modo, se l'utente collegato  è quello specificato, non da accesso ai varii menù del cpanel ma...visualizza soltanto le icone che ho, precedentemente, selezionato con Custom Quick Icon assegnandole all'utente in questione.

Un neo di questa soluzione tampone è che, collegandomi io come super administrator non vedrò più le icone nella pagina di partenza del pannello di amministrazione.
Tutto il resto funziona regolarmente, però.
Diciamo che così, limito parecchio gli eventuali danni al sito.
Insomma, tra i due ho scelto il male minore!
:)
« Ultima modifica: 09 Dic 2009, 12:38:10 da mian »

Offline mian

  • Nuovo arrivato
  • *
  • Post: 46
    • Mostra profilo
Errata corrige:

Ho modificato anche il file /administrator/templates/khepri/index.php

Facendo la stessa modifica. Cioè sostituendo tale parte di codice:
Codice: [Seleziona]

<?php if(JModuleHelper::isEnabled('menu')) : ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>

Con questo:
Codice: [Seleziona]
<?php $user =& JFactory::getUser();?>

<?php if ($user->username == nomeutente_che_vuoi_limitare) { ?>

<?php if(JModuleHelper::isEnabled('menu')): ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>
    <?php endif; ?>

<?php } else { ?>

<?php if(JModuleHelper::isEnabled('menu')) : ?>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/menu.js"></script>
        <script type="text/javascript" src="templates/<?php echo  $this->template ?>/js/index.js"></script>
    <?php endif; ?>

<?php ?>

Il problema è che per tale utente limitato la navigazione nel pannello di amministrazione diventa improbabile, in questo modo.
Infatti una volta entrato in uno dei componenti visibili non ha alcun pulsante per tornare nella pagina iniziale (dove sono visibili le icone dei componenti).
Allora (sempre nel file /administrator/templates/khepri/index.php) ho inserito brutalmente un link che rimandi alla pagina iniziale del pannello di amministrazione.

Ora la testo un pò.

Mhm...che ne pensate?
:)
« Ultima modifica: 09 Dic 2009, 12:59:53 da mian »

Offline darioc

  • Esploratore
  • **
  • Post: 65
  • Sesso: Maschio
    • Mostra profilo
Grazie mian per la risposta! Ora provo, ma secondo me sarebbe ottimale invertire l'IF(.....)

if(sono amministratore) allora lasciami il menu, ecc..
else togli tutto

In questo modo vado a limitare più utenti tranne l'amministratore.

Che ne dici?

Offline maxartix

  • Nuovo arrivato
  • *
  • Post: 4
    • Mostra profilo
Salve a tutti
ho lo stesso problema,devo limitare l'accesso nel backend.
Mi aiutate!!!!!!

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Heilà salve a tutti, poi come avete fatto x sbrogliare questa cosa?

dai...scrivetelo please!

mau_develop

  • Visitatore
sai che mi sono riletto tutti i post ma non riesco a capire... i non amministratori hanno già delle limitazioni.

Le soluzioni che ho visto equivalgono a mettere un pezzo di scotch sul monitor sopra il menù ma non sono hack.

M.

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
uhm? ma certo ti do ragione per lo scotch, ma difatto, io credo che l'intento sia proprio quello di mascherare alcune funzionalità a utenti non esperti e irrazionali che magari possono mettersi a "cliccare quà e là" variando qualcosa. o almeno credo.... no?

mau_develop

  • Visitatore
http://forum.joomla.it/index.php/topic,123172.0.html (aldilà del titolo cannato del post...)

M.

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
grazie mille del link amico; anche se cmq mi era già molto chiara la diversità dei vari livelli di utenti.

Provo a includere lo script dell'if, ti do tutte le ragioni del mondo, ma a volte mascherare bottoni, menu e link serve anche per semplificare (e non far confondere) le idee a chi gestirà il sito - specie se sono persone non proprio abituate a fare ste cose.

E' questo lo scopo di tutto... almeno per me.

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Ciao di nuovo a tutti.

Sto facendo una prova su un backend joomla 1.0 ma questo script non funge e genere pagina bianca:

      <div class="mod_fullmenu">
        <?php
      $user =& JFactory::getUser();
      if ($user->username == admin) {
      mosLoadAdminModule( 'fullmenu' )
      }
      ?>
      </div>

Qualcuno sa consigliarmi come fare?

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
:-(( ..dai ragazzi non mi risponde nessuno??

So benissimo che sono "antico" a chiedere x la 1.0 ma purtroppo ho per forza questa esigenza.....

PLEASE ...

mau_develop

  • Visitatore
    $user =& JFactory::getUser();

era già nella 1.0 ?

M.

guarda qui

http://forum.joomla.org/viewtopic.php?p=1225360

..veso la fine
« Ultima modifica: 11 Gen 2011, 21:33:53 da mau_develop »

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
Grazie sei un mito corro a leggere!!!!!

Offline AndreaCip

  • Nuovo arrivato
  • *
  • Post: 25
    • Mostra profilo
mau_develop ti volevo ringraziare dell'aiuto, grazie a te sono riuscito nell'intento modificando la index.php nel template del backend in joomla 1.0 - copio quindi le mie righe che possono servire ad altri.

Grazie a questo si identifica l'user e si decide se caricare il modulo del menu in alto oppure no:

      <div class="mod_fullmenu">
      <?php
global $my;
$my->username;
if ($my->username == admin) {
   mosLoadAdminModule( 'fullmenu' );
      }
?>
      </div>



GRAZIE ANCORA!

 



Web Design Bolzano Kreatif