Back to top

Autore Topic: Modificare permessi utenti backend in authoritazion.php: come?  (Letto 7583 volte)

Offline The-BiT

  • Appassionato
  • ***
  • Post: 744
    • Mostra profilo
Buona sera,
giorni fa ho aperto un topic per cercare di capire come estendere e/o modificare i permessi backend di utenti come "manager" e "administrator".
Rispetto alla versione 1.0.x di joomla, in cui tali permessi erano presenti in /includes/gacl.class.php, in joomla 1.5.x sembra che tali permessi siano gestibili dalla pagina "libraries/joomla/user/authoritazion.php".
Posto qui queste linee codice per cercare, insieme ad altri, di riuscire a capire come aumentare/modificare i permessi in joomla 1.5.
Ho pensato, così, di riportare qui alcuni pezzi importanti del file per riuscire, insieme a voi, a capire come agire.
Sarebbe bello pubblicare una guida su come gestire (in attesa della versione 1.6) i permessi backend sotto joomla 1.5.

Il file, tra le varie istruzioni, si compone di queste (che sono quelle che interessano a noi):
Citazione
function JAuthorization($options = NULL)
   {
      parent::gacl( $options );

      // ARO value is currently the user type,
      // this changes to user id in proper implementation
      // No hierarchial inheritance so have to do that the long way
      $this->acl = array();

      // special ACl with return value to edit user
      $this->addACL( 'com_user', 'edit', 'users', 'super administrator', null, null, '' );
      $this->addACL( 'com_user', 'edit', 'users', 'administrator', null, null, '' );
      $this->addACL( 'com_user', 'edit', 'users', 'manager', null, null, '' );
      // return value defines xml setup file variant
      $this->addACL( 'com_user', 'edit', 'users', 'author', null, null, 'author' );
      $this->addACL( 'com_user', 'edit', 'users', 'editor', null, null, 'author' );
      $this->addACL( 'com_user', 'edit', 'users', 'publisher', null, null, 'author' );
      $this->addACL( 'com_user', 'edit', 'users', 'registered', null, null, 'registered' );

      // backend login
      $this->addACL( 'login', 'administrator', 'users', 'administrator' );
      $this->addACL( 'login', 'administrator', 'users', 'super administrator' );
      $this->addACL( 'login', 'administrator', 'users', 'manager' );

      $this->addACL( 'login', 'site', 'users', 'administrator' );
      $this->addACL( 'login', 'site', 'users', 'super administrator' );
      $this->addACL( 'login', 'site', 'users', 'manager' );

      $this->addACL( 'login', 'site', 'users', 'registered' );
      $this->addACL( 'login', 'site', 'users', 'author' );
      $this->addACL( 'login', 'site', 'users', 'editor' );
      $this->addACL( 'login', 'site', 'users', 'publisher' );
      // backend menus

      $this->addACL( 'com_banners', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'manager' );

      $this->addACL( 'com_checkin', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_checkin', 'manage', 'users', 'administrator' );

      $this->addACL( 'com_cache', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_cache', 'manage', 'users', 'administrator' );

      $this->addACL( 'com_config', 'manage', 'users', 'super administrator' );
      //$this->addACL( 'com_config', 'manage', 'users', 'administrator' );

      $this->addACL( 'com_contact', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_contact', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_contact', 'manage', 'users', 'manager' );

      $this->addACL( 'com_components', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_components', 'manage', 'users', 'administrator' );

      $this->addACL( 'com_frontpage', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_frontpage', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_frontpage', 'manage', 'users', 'manager' );
      $this->addACL( 'com_frontpage', 'edit', 'users', 'manager' );

      // access to installers and base installer
      $this->addACL( 'com_installer', 'installer', 'users', 'administrator' );
      $this->addACL( 'com_installer', 'installer', 'users', 'super administrator' );

      $this->addACL( 'com_installer', 'component', 'users', 'administrator' );
      $this->addACL( 'com_installer', 'component', 'users', 'super administrator' );

      $this->addACL( 'com_installer', 'language', 'users', 'super administrator' );
      $this->addACL( 'com_installer', 'language', 'users', 'administrator' );

      $this->addACL( 'com_installer', 'module', 'users', 'administrator' );
      $this->addACL( 'com_installer', 'module', 'users', 'super administrator' );

      $this->addACL( 'com_installer', 'plugin', 'users', 'administrator' );
      $this->addACL( 'com_installer', 'plugin', 'users', 'super administrator' );

      $this->addACL( 'com_installer', 'template', 'users', 'super administrator' );
      $this->addACL( 'com_installer', 'template', 'users', 'administrator' );

      $this->addACL( 'com_languages', 'manage', 'users', 'super administrator' );

      $this->addACL( 'com_plugins', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_plugins', 'manage', 'users', 'administrator' );
      // uncomment following to allow managers to edit modules
      //array( 'administration', 'edit', 'users', 'manager', 'modules', 'all' );

      $this->addACL( 'com_massmail', 'manage', 'users', 'super administrator' );

      $this->addACL( 'com_media', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_media', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_media', 'manage', 'users', 'manager' );
      $this->addACL( 'com_media', 'popup', 'users', 'super administrator' );
      $this->addACL( 'com_media', 'popup', 'users', 'administrator' );
      $this->addACL( 'com_media', 'popup', 'users', 'manager' );
      $this->addACL( 'com_media', 'popup', 'users', 'registered' );
      $this->addACL( 'com_media', 'popup', 'users', 'author' );
      $this->addACL( 'com_media', 'popup', 'users', 'editor' );
      $this->addACL( 'com_media', 'popup', 'users', 'publisher' );

      $this->addACL( 'com_menus', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_menus', 'manage', 'users', 'super administrator' );

      $this->addACL( 'com_modules', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_modules', 'manage', 'users', 'administrator' );

      $this->addACL( 'com_newsfeeds', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_newsfeeds', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_newsfeeds', 'manage', 'users', 'manager' );
      
      $this->addACL( 'com_banners', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'manager' );

      $this->addACL( 'com_poll', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_poll', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_poll', 'manage', 'users', 'manager' );

      $this->addACL( 'com_templates', 'manage', 'users', 'super administrator' );
      //$this->addACL( 'com_templates', 'manage', 'user', 'administrator' )

      $this->addACL( 'com_trash', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_trash', 'manage', 'users', 'super administrator' );

      // email block users property
      $this->addACL( 'com_users', 'block user', 'users', 'administrator' );
      $this->addACL( 'com_users', 'block user', 'users', 'super administrator' );

      $this->addACL( 'com_users', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_users', 'manage', 'users', 'super administrator' );

      $this->addACL( 'com_weblinks', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_weblinks', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_weblinks', 'manage', 'users', 'manager' );

      // email system events
      $this->addACL( 'com_users', 'email_events', 'users', 'administrator' );
      $this->addACL( 'com_users', 'email_events', 'users', 'super administrator' );
      $this->addACL( 'workflow', 'email_events', 'users', 'administrator', null, null );
      $this->addACL( 'workflow', 'email_events', 'users', 'super administrator', null, null );

      // actions
      $this->addACL( 'com_content', 'add', 'users', 'author', 'content', 'all' );
      $this->addACL( 'com_content', 'add', 'users', 'editor', 'content', 'all' );
      $this->addACL( 'com_content', 'add', 'users', 'publisher', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'author', 'content', 'own' );
      $this->addACL( 'com_content', 'edit', 'users', 'editor', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'publisher', 'content', 'all' );
      $this->addACL( 'com_content', 'publish', 'users', 'publisher', 'content', 'all' );

      $this->addACL( 'com_content', 'add', 'users', 'manager', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'manager', 'content', 'all' );
      $this->addACL( 'com_content', 'publish', 'users', 'manager', 'content', 'all' );

      $this->addACL( 'com_content', 'add', 'users', 'administrator', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'administrator', 'content', 'all' );
      $this->addACL( 'com_content', 'publish', 'users', 'administrator', 'content', 'all' );

      $this->addACL( 'com_content', 'add', 'users', 'super administrator', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'super administrator', 'content', 'all' );
      $this->addACL( 'com_content', 'publish', 'users', 'super administrator', 'content', 'all' );
   }

Ora, la questione è che se, ad esempio, un utente "manager" accede in area backend ha accesso completo a tutti i componenti.
Così ho pensato di aggiungere le stringhe
Citazione
$this->addACL( 'com_banners', 'manage', 'users', 'super administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'administrator' );
      $this->addACL( 'com_banners', 'manage', 'users', 'manager' );
per permettere all'utente manager di vedere solo il componente, ma invece, mettendo questa stringa, non appaiono proprio nessun componente all'utente manager.
Così ho pensato di postare qui quello che ero riuscito a capire finora nella speranza che, insieme, potessimo venirne a capo e, perchè no, recensire un piccolo "how-to".

Chi di voi saprebbe come agire?

Offline The-BiT

  • Appassionato
  • ***
  • Post: 744
    • Mostra profilo
Re: Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #1 il: 24 Feb 2009, 12:36:53 »
Eppure mi sembrava una problematica comune, e di comune interesse.
Peccato non trovare nessuno disposto a collaborare.

Offline aomegax

  • Esploratore
  • **
  • Post: 104
    • Mostra profilo
Re: Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #2 il: 11 Apr 2009, 12:42:30 »
ci sono  ;D anche se un pò in ritardo

sei per caso riuscito ad aggiungere i ruoli?
io necessito di avere 2 ruoli, uno per l'addetto stampa e l'altro per l'adv. L'addetto stampa deve soltanto visualizzare/aggiungere/modificare gli articoli, mentre l'adv deve utilizzare solo il componente com_banner.

tu in che direzione ti stai muovendo?
« Ultima modifica: 11 Apr 2009, 13:21:27 da aomegax »
.:: Padula - Innovazione e Cultura ::.

Offline mega.byte.boss

  • Nuovo arrivato
  • *
  • Post: 6
    • Mostra profilo
Re:Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #3 il: 07 Giu 2009, 17:39:37 »
Salve, ho esattamente le stesse necessità.
Vorrei aggiungere una voce all'administrator.
Non ho trovato componenti o moduli che lo fanno.

Modificare il codice non mi sembra una buona idea, ogni volta che esce una patch si richia di perdere la modifica.

Offline matrix845

  • Appassionato
  • ***
  • Post: 483
    • Mostra profilo
Re:Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #4 il: 01 Ago 2010, 18:41:44 »
ciaoa  tutti,

mi ricordo di aver gia fatto quest amodfiica su un sito joomla 1.0, ed adesso mi ritrovo a dover fare su una installazione joomla 1.5.20.

Dovrei permettere agli utenti registrati di aggiungere (non pubblicare) contenuti nel sito.

Cosi mi sono aperto il file authorization.php ed ho aggiunto le mie belle righette di codice

      $this->addACL( 'com_content', 'add', 'users', 'registered', 'content', 'all' );
      $this->addACL( 'com_content', 'edit', 'users', 'registered', 'content', 'own' );
      $this->addACL( 'com_content', 'publish', 'users', 'registered', 'content', 'own' );   


so che cosi gli starei dando anche i permessi di pubblicazione, ma è solo per essere (momentaneamente )più larghi .

Nonostante queste direttive ( ho provato anche tutte le combinazioni) , se da frontend tento di accedere alla schermata "submit - content" di joomla mi dice che non ho i permessi per farlo...


voi siete mai riusciti ad abilitare l'invio di articoli per gli utenti registrati da frontend?

Grazie

Offline luigifrance

  • Esploratore
  • **
  • Post: 85
  • Sesso: Maschio
  • Aiutati che Dio t'aiuta
    • Mostra profilo
Re:Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #5 il: 06 Nov 2010, 11:00:59 »
Se può interessare a qualcuno ho eseguito una modifica nel file in oggetto.
Premetto che avevo bisogno che la cliente potesse mandare newsletter da backend senza poter modificare altro.
Ho fatto varie ricerche ma non trovavo niente del genere. Mi sono imbattuto in questo topic e ho provveduto nelle modifiche.

Ho inserito la cliente nel gruppo "editor" (sappiamo bene che da questo gruppo si ha accesso ovunque per inserire da backend).

Dopodiché ho aperto il file in questione con dreamweaver e mi sono portato nel rigo 196


eseguendo la modifica come da immagine


risultato?
Manda soltanto newsletter da backend.  ;)

N.B. Dimenticavo, usato joomla 1.5 e Communicator (per le newsletter).

Spero d'essere stato utile e non abbia fatto cavolate. Una cosa è certa, a me funziona.  ::)

Offline rossiga

  • Nuovo arrivato
  • *
  • Post: 42
    • Mostra profilo
Re:Modificare permessi utenti backend in authoritazion.php: come?
« Risposta #6 il: 12 Dic 2010, 18:08:19 »
Buona sera,

Ho la necessità di far visualizzare le voci di menu "special" ad alcuni utenti senza attribuirgli particolari permessi.
E' possibile modificare l'utente manager in modo tale che possano solo visualizzare i contenuti "special" eliminando gli altri permessi attribuiti di default?

Grazie.
« Ultima modifica: 12 Dic 2010, 18:13:11 da rossiga »

 



Web Design Bolzano Kreatif