Forum: Italian Ruby user group acts as authenticated

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
stb (Guest)
on 2006-12-25 14:35
(Received via mailing list)
Ciao,

premetto che non ho ancora visto in maniera approfondita il
funzionamento del plugin, tttavia ho implementato il login e il
logout, entrambi funzionanti senza problemi.

La questione è banale, ho un controller di nome actions che mi
contiene tute le "azioni" che un utente registrato può fare e
ovviamente non ho voglia di implementare per ciascun metodo un if per
controllare il login.
Per farla breve vorrei che se l' utente non è loggato, qualsiasi
azione di quel controller mi restituisce un' alert informando l'
utente e blocando ogni altra azione.

Come mi conviene fare?

Saluti Andrea_______________________________________________
Ml mailing list
removed_email_address@domain.invalid
http://lists.ruby-it.org/mailman/listinfo/ml
Antonio C. (Guest)
on 2006-12-25 18:29
(Received via mailing list)
On 12/25/06, stb <removed_email_address@domain.invalid> wrote:
> controllare il login.
> Per farla breve vorrei che se l' utente non è loggato, qualsiasi
> azione di quel controller mi restituisce un' alert informando l'
> utente e blocando ogni altra azione.
>
> Come mi conviene fare?


Inserisci nel tuo controller before_filter :login_required dove
login_required è un metodo privato che verifica se l'utente è loggato, e
gestisce la situazione se non lo
è:
    before_filter :login_required

    private
      def login_required
        # ...
      end


--
http://antoniocangiano.com
Zen and the Art of Ruby P.ming
http://effettofarfalla.com
Il battito d'ali di un italiano a Toronto
stb (Guest)
on 2006-12-26 19:13
(Received via mailing list)
mmm capito, ma in login required come faccio a bloccare o lasciar
eseguire le azioni?
Cioè dentro il metodo avrò una cosa del tipo IF logged?(ora nn
ricorda cosa usa) e se ok mi fa l'azione chiamaa altrimenti mi rida
un' alert

Il giorno 25/dic/06, alle ore 17:29, Antonio C. ha scritto:
Antonio C. (Guest)
on 2006-12-26 22:50
(Received via mailing list)
On 12/26/06, stb <removed_email_address@domain.invalid> wrote:
>
> mmm capito, ma in login required come faccio a bloccare o lasciar
> eseguire le azioni?
> Cioè dentro il metodo avrò una cosa del tipo IF logged?(ora nn
> ricorda cosa usa) e se ok mi fa l'azione chiamaa altrimenti mi rida
> un' alert


login_required viene invocato prima che una qualsiasi azione nel tuo
controller venga eseguita. Se il valore restituito da questo metodo
è false,
l'azione non viene eseguita, mentre se il valore è true, allora l'utente è
"loggato" e si passa direttamente all'esecuzione dell'azione nel
controller.
Per cui il tuo login_required può somigliare a qualcosa del tipo:

  def login_required
    if current_user
      return true
    end
    flash[:warning]='Effettua il login'
    session[:return_to]=request.request_uri
    redirect_to :controller => "utente", :action => "login"
    return false
  end

Assumendo che tieni traccia dell'utente nella variabile current_user, se
questo esiste allora l'utente è già autenticato e possiamo restituire true
per passare direttamente all'azione invocata. Se questo non è il caso,
inviamo un messaggio di avviso, reindirizziamo l'utente verso l'azione
di
login e restituiamo false perché l'utente non è loggato.
Ilsession[:return_to]=
request.request_uri ti permette di tenere traccia dell'azione a cui
l'utente
voleva accedere prima di dover effettuare il login, in questo modo nel
metodo che effettua il login, una volta loggato, potrai reindirizzare
l'utente all'azione richiesta. Questo è il meccanismo generale, ovviamente
adatta il codice ai nomi scelti da te e alle tue esigenze.

Ciao,
Antonio
--
http://antoniocangiano.com
Zen and the Art of Ruby P.ming
http://effettofarfalla.com
Il battito d'ali di un italiano a Toronto
stb (Guest)
on 2006-12-27 02:06
(Received via mailing list)
ah ecco quindi dipende dal valore di ritorno, bene allora penso di
aver risolto il problema, grazie mille


Saluti Andrea

Il giorno 26/dic/06, alle ore 21:50, Antonio C. ha scritto:
Paolo M. (Guest)
on 2006-12-28 01:46
Io normalmente nel filtro implemento anche un controllo sulle URL.
Poiché di solito ci sono un po' di view a cui si vuol fare accedere
anche chi non è autenticato, prima ho una whitelist di URL a cui tutti
possono andare e poi ho il controllo sull'essere loggati o no che in
sostanza funziona come ha descritto Antonio.

Mi viene in mente ora una cosa: non è che si possono per caso realizzare
questi filtri con il routing?

Paolo
Antonio C. (Guest)
on 2006-12-28 04:52
(Received via mailing list)
On 12/27/06, Paolo M. <removed_email_address@domain.invalid> wrote:
>
> Io normalmente nel filtro implemento anche un controllo sulle URL.
> Poiché di solito ci sono un po' di view a cui si vuol fare accedere
> anche chi non è autenticato, prima ho una whitelist di URL a cui tutti
> possono andare e poi ho il controllo sull'essere loggati o no che in
> sostanza funziona come ha descritto Antonio.
>
> Mi viene in mente ora una cosa: non è che si possono per caso realizzare
> questi filtri con il routing?


Ciao Paolo,

se ho capito bene quello che vuoi fare, non hai bisogno di implementare
nulla.

Puoi indicare quali sono le azioni che vuoi includere:

before_filter :login_required, :only => [ :edit, :delete ]

oppure alternativamente, le azioni che vuoi escludere:

before_filter :login_required, :except => [:list, :index, :show]

Ciao,
Antonio
--
http://antoniocangiano.com
Zen and the Art of Ruby P.ming
http://effettofarfalla.com
Il battito d'ali di un italiano a Toronto
stb (Guest)
on 2006-12-28 20:53
(Received via mailing list)
ho qualche problema con login_required

prima di tutto login_required ce l'ho già definita dal plugin,
inoltre ha dei comportamenti strani.
per qualsiasi azione(escluso il metodo "t") presente nel mio
controler, se non sono loggato non mi fa niente. Invece per il metodo
di test "t"(quello in fondo) mi reindirizza alla pagina di login.
Ho provato anche a ridefinire login_reuired nel mio controller
sperando che andasse in override ma senza successo.
Cosa sto sbagliando?

questo è il mio controller actions
http://pastie.caboo.se/29932

Saluti Andrea

Il giorno 28/dic/06, alle ore 03:51, Antonio C. ha scritto:
This topic is locked and can not be replied to.