personalizzare home page a seconda degli utenti che fanno login

9 contenuti / 0 new
Ultimo contenuto
personalizzare home page a seconda degli utenti che fanno login

Salve a tutti,
sto realizzadno un'applicazione web con drupal, ho sviluppato alcuni moduli per la gestione delle anagrafiche e per la visualizzazione/modifica delle stesse; il mio problema è il seguente: vorrei creare una homepage di default che vedono tutti gli utenti prima di fare login e redirigerli su pagine diverse (prese dai moduli che ho definito per l'applicazione e sui quali ho definito diversi permessi) a senconda di chi fa login.

Es. se amministratore presentargli l'elenco delle aziende registrate se no presentargli pagina dedicata con le funzioni che può eseguire.

Potete aiutarmi per piacere?

Grazie anticipatamente come sempre!

Ciao mkm73, io ho usato login_destination-6.x-2.12.tar.gz(http://drupal.org/project/login_destination) e come al solito:

  1. Scompatti
  2. installi
  3. attivi
  4. setti i permessi
  5. configuri

Nella configurazione puoi mettere il php snippet:

<?php
 
global $user;
//se e' amministratore
if ($user->uid==1) {
 
//imposto un percorso valido per l'amministratore uid=1 es: drupal_goto('user/login');
 
drupal_goto('urlvalido_elenco_delle_aziende_registrate');
} else {
 
drupal_goto('urlvalido_pagina_dedicata_con_funzioni');
}
 
?>

Dovrebbe bastare altrimenti devi utilizzare i ruoli se hai piu' amministratori

Ciao!

Scusa, Danzisiweb, io ho fatto quello che tu qui suggerisci, manon mi funziona. Continuo ad ottenere, per qualsiasi utente, un invio all'home standard.
Dove posso aver sbagliato?

Ciao mkm73, tu mi dici:

mkm73 wrote:

Es. se amministratore presentargli l'elenco delle aziende registrate se no presentargli pagina dedicata con le funzioni che può eseguire.

allora ti spiego il concetto in quanto tu no mi dai il nome della pagina in cui deve andare l'utente!
drupal_goto('indica qui il percorso o pagina in cui deve andare l utente');
drupal_goto('node/1');
drupal_goto('user/login');
drupal_goto('blog');
mentre $user->uid è la variabile dell'utente loggato in quel momento, pertanto se ti logghi come admin (cioè uid==1) lo script sopra esegue un comando se sei loggato come utente (cioè uid>1) esegue un altra direttiva.
Scusa se ti parlo tecnico. Per testare lo script devi mettere il percorso valido e loggarti come utente o come admin e vedrai che funziona.
Ciao

Ho installato il modulo login_destination;
Ho impostato i permessi di accesso a tutti (anonimo, utente autenticato, amministratore).
Ho poi acceduto, in configurazione, a 'Destination url settings' e qui ho impostato il flag 'php snippet'. Ho poi impostato l'editor (fckeditor) su 'plain text editor' ed ho immesso il seguente codice:
<?PHP
global $user; if ($user->uid==1) { drupal_goto('admin'); } elseif ($user->uid == 2) { drupal_goto('node/2'); } elseif ($user->uid== 3) { drupal_goto('node/3'); }
?>
Orbene il tutto non mi funziona.
Dove sbaglio?

no, devi impostare su php, attivando il modulo phpfilter (presente già nel core)

Infatti il modulo php filter è attivato e funzionante. Tra l'altro l'ho usato per alcuni moduli che ho creato.

Ciao EMAnuele01,

ho testato il plugin login destination e mi funziona così:

  • togli la spunta a Return user to where he/she came from.
  • seleziona PHP snippet (experts only)
  • metti nella seconda textarea:

global $user;
if ($user->uid==1) {
  return array('path' => 'admin');
} elseif ($user->uid == 2) {
  return array('path' => 'node/2');
} elseif ($user->uid== 3) {
  return array('path' => 'node/3');
}

Se vuoi vedere un video clicca qui: http://www.youtube.com/watch?v=HL2zNfUWmQY

Ciao e scusami se non ho azzeccato al primo colpo!

Ciao danzisiweb,
chiedo scusa se rispondo solo ora ma è stata una sett. impegnativa al lavoro...
grazie per le dritte:
ho scaricato ed installato il modulo e sto personalizzando il redirect dopo al login in funzione dei ruoli che ho creato per gli utenti utilizzatori:
.......
global $user;
if ($user->uid == 1) {
return array('path' => 'node/1'); //home
} else if ($user->uid > 1){
if (in_array('amministratore xxx', $user->roles)) {
return array('path' => 'node/1'); //home
} else if (in_array('assistente xxx', $user->roles)) {
return array('path' => 'pagina xxx');
}
}