# Gestione dati login: principiante in alto mare

**URL:** <https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667>\
**Category:** IT\
**Created:** [February 15, 2007, 12:17pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667 "2007-02-15T12:17:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 15, 2007, 12:17pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/1 "2007-02-15T12:17:55Z")

</div>

Buongiorno lista.  
Sono un nuovo utente che dovendo realizzare un applicativo via web e  
dovendosi imparare un linguaggio dopo vari esperimenti ha deciso che  
Ruby Ã¨ quello piÃ¹ facile da usare 🙂  
Dovrei fare una cosa del genere: un sito in cui degli utenti abilitati  
possano inserire dei dati che poi un operatore gestirÃ .  
Come sistema per l’accesso l’unico che sono stato in grado di far  
funzionare alla meno peggio Ã¨ LoginGenerator (  
[Peak Obsession](http://wiki.rubyonrails.com/rails/pages/LoginGenerator) ); ho fatto due  
tabelle in un database python, una per gli utenti e una per i dati; in  
quest’ultima oltre a ciÃ² che inserirÃ l’utente dovrebbero finirci il  
nome dell’utente che li ha imputati ed altre cose che potrebbero servire  
presenti sempre tra i dati utente, in modo da permettere all’operatore  
di sapere chi ha inserito e poter effettuare delle ricerche, ma non  
riesco a capire come fare per recuperare il nome dell’utente loggato e  
di conseguenza non riesco a compilare automaticamente i campi in cui  
inserire i dati. Come esempio ho seguito questa guida:  
[http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html](http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html) , ma  
naturalmente mi sono miseramente bloccato. Sicuramente mi sfuggirÃ una  
sciocchezza, ma piÃ¹ provo e piÃ¹ mi impantano.  
Avete suggerimenti, esempi, altre guide, pezzi di codice che vi  
avanzano, ecc.?

Mi scuso per la banalitÃ del quesito (e anche dei futuri ‘^\_^), ma  
partire da zero Ã¨ sempre dura, portate pazienza… almeno per un po’ 🙂

Grazie e a presto.  
Daneel O.

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 15, 2007, 1:20pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/2 "2007-02-15T13:20:56Z")

</div>

Ciao,

prova questo  
[http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated](http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated)

Ã¨ un plugin per gestire l’ accesso utente, e l’ utente loggato lo  
recuperi  
con la variabile current\_user

Io e a quanto pare quasi tutti usiamo questo plugin.

Saluti Andrea

----- Original Message -----  
From: “Daneel O.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, February 15, 2007 12:17 PM  
Subject: [ruby-it] Gestione dati login: principiante in alto mare

> quest’ultima oltre a ciÃ² che inserirÃ l’utente dovrebbero finirci il  
> avanzano, ecc.?
> 
> Mi scuso per la banalitÃ del quesito (e anche dei futuri ‘^\_^), ma  
> partire da zero Ã¨ sempre dura, portate pazienza… almeno per un po’ 🙂
> 
> Grazie e a presto.  
> Daneel O.
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

* * *

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 15, 2007, 3:15pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/3 "2007-02-15T15:15:03Z")

</div>

stb wrote:

> Ciao,
> 
> prova questo  
> [http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated](http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated)
> 
> Ã¨ un plugin per gestire l’ accesso utente, e l’ utente loggato lo  
> recuperi  
> con la variabile current\_user

L’avevo provato, ma non capivo come funzionava. Ci sono appena tornato  
su, pare funzionare, la pagina di signin (iscrizione dell’account)  
funziona, ma la pagina di login non va; ho lasciato il codice standard  
che c’Ã¨, ma pare che non venga letto: se carico la pagina col browser e  
guardo il sorgente, non compare niente, o al massimo ciÃ² che ci metto a  
mano io (commenti, titoli, scritte, ecc.), ma non c’Ã¨ verso che carichi  
il codice ruby che dovrebbe creare le caselle per l’inserimento di nome  
utente e password… qualcuno ha mai visto cose del genere?  
Visto che ci sono, ecco qui che c’Ã¨ in app/views/account/login.rhtml del  
sito:

\<% form\_tag do -%\>

Login  
\<%= text\_field\_tag 'login' %\>

Password  
\<%= password\_field\_tag 'password' %\>

Remember me: \<%= check\_box\_tag 'remember\_me' %\>

\<%= submit\_tag 'Log in' %\>

\<% end -%\>

In quanti millimetri di acqua mi sto perdendo? 🙂

Daneel O.

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 15, 2007, 3:30pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/4 "2007-02-15T15:30:14Z")

</div>

se non sbaglio dovrebbe giÃ farlo lui, probabilmente stai facendo  
qualche  
casino col db, il plugin si basa sulla tabella users presente nel db,  
magari  
tu per le tue cose stai usando un’ altra tabella, cmq per quanto  
riguarda i  
form creati un automatico si puÃ² ma non li ho mai usati, prova a creare  
uno  
scaffold giusto per vedere come fa, se non sbaglio li usa.

----- Original Message -----  
From: “Daneel O.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, February 15, 2007 3:15 PM  
Subject: [ruby-it] Re: Gestione dati login: principiante in alto mare

> L’avevo provato, ma non capivo come funzionava. Ci sono appena tornato  
> \<% form\_tag do -%\>
> 
> \<%= submit\_tag 'Log in' %\>
> 
> \<% end -%\>
> 
> In quanti millimetri di acqua mi sto perdendo? 🙂
> 
> Daneel O.
> 
> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

* * *

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 21, 2007, 5:34pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/5 "2007-02-21T17:34:19Z")

</div>

Innanzitutto grazie per le risposte 🙂  
Il problema della pagina di login era dovuto alla versione vecchia di  
rails (se non erro) che faceva a pugni con act\_as\_authenticated. Ho  
trovato la soluzione, ma non ricordo il link '🙂

Torno alla carica con un’altra cosa sempre legata all’utente: dovrei  
fare in modo che ogni utente si veda i suoi dati inseriti, mentre un  
amministratore puÃ² vederli tutti. Per ora mi basterebbe capire la prima  
parte; la seconda (amministratore che vede tutto) penso venga di  
conseguenza con un controllo in piÃ¹.  
Sto cercando esempi in giro, ma finora non ne ho trovati che mi hanno  
messo nella giusta strada… avete per caso un pezzetto di codice che vi  
avanza che permette di mostrare i dati inseriti dall’utente, o c’Ã¨ un  
sito con esempi ben commentati?  
Prometto che appena frego la carta di credito al capo compro i libri 🙂

Grazie per la pazienza e a presto 🙂  
Daneel O. (che comincia a capirci qualcosa… forse…)

P.s.: mi sono appena accorto dell’immensa castronata scritta nel primo  
post: il database Ã¨ in mysql, non in python… '-\_-

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 22, 2007, 10:19am UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/6 "2007-02-22T10:19:57Z")

</div>

Il posto giusto per trovare una buona dose di esempi e snippet di  
codice da usare è questo:  
[http://technoweenie.stikipad.com/plugins/show/User+Authentication](http://technoweenie.stikipad.com/plugins/show/User+Authentication)

Io personalmente ho implementato nel model User il metodo “is\_admin?”  
dove controllo se l’utente dispone di questa qualifica (a te decidere  
se è data da una tabella esterna ruoli, una colonna col flag adeguato  
ecc.).

Se vuoi permettere l’accesso alle action “edit” e “create” del  
controller “profile” ai soli admin, ad esempio, puoi fare  
così:  
def authorized?(user)  
user.is\_admin? || ![‘edit’, ‘create’].include?(action\_name)  
end

Rispondendo in modo diretto alla tua domanda, potresti fare qualcosa  
del genere nella view:

### User profile
\<% if logged\_in? %\>

\<% for column in User.content\_columns %\>  
\<% if @user.is\_admin? || !@user.send(column.name).empty? #  
all’admin mostro tutte le colonne, all’user solo quelle non vuote %\>

**\<%= column.human\_name %\>:** \<%=h @user.send(column.name) %\>

  
\<% end %\>  
\<% end %\>

\<% else %\>

Devi loggarti per visualizzare il tuo profilo

\<% end %\>

Ma sinceramente, troverei più sicuro fare due view diverse ed usare il  
primo metodo per definiri chi può accedere a cosa.

Il 21/02/07, Daneel O.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 22, 2007, 4:53pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/7 "2007-02-22T16:53:34Z")

</div>

stb wrote:

> [http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated](http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated)
> 
> questo ï¿½ uno dei plugin piï¿½ usati, ï¿½ anche ben documentato e alla fine ï¿½  
> abbastanza facile da usare
> 
> PS: se cerchi nell’ archivio della mailing troverai giï¿½ altri topic su  
> questo argomento.

Visto tutto…

> Il posto giusto per trovare una buona dose di esempi e snippet di  
> codice da usare ï¿½ questo:  
> [http://technoweenie.stikipad.com/plugins/show/User+Authentication](http://technoweenie.stikipad.com/plugins/show/User+Authentication)

… e anche questo.

Siete troppo ottimisti rigurado le mie capacitÃ , per ora sono incagliato  
sul far vedere all’utente solo i suoi dati…  
In teoria pensavo di dire una cosa del genere:"Dei dati presenti nella  
tabella guarda il campo id utente (c’Ã¨ il campo users\_id che contiene  
l’id dell’utente che inserisce il dato, per l’appunto) e confrontalo con  
l’id dell’utente loggato (lo recupero da current\_user.id); se sono  
uguali, mostra i dati presenti (la tabella dati Ã¨ fatta pressapoco con  
questi campi: id, users\_id, nome\_utente\_inserente\_dato, informazione1,  
informazione2, … informazione\_n).

Una volta che so come tradurre in codice tutto ciÃ² sono a posto, ma  
finora sono solo riuscito a capire come NON fare. Ho trovato un po’ di  
esempi di selezione di dati, ma nessuno con una logica simile e andare  
per tentativi ad un certo punto Ã¨ deleterio. Per chi si sta chiedendo  
perchÃ© non mi studi prima un po’ di teoria, procedo cosÃ¬ perchÃ© capisco  
di piÃ¹ vedendo le cose… specialmente se ci sbatto contro frontalmente  
🙂

Per la parte dell’amministratore, ci penso appena il lato utente Ã¨ a  
posto.

A presto.  
Daneel O. (che si sente molto luser '^\_^)

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 22, 2007, 1:21pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/8 "2007-02-22T13:21:24Z")

</div>

[http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated](http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated)

questo è uno dei plugin più usati, è anche ben documentato e alla fine è  
abbastanza facile da usare

PS: se cerchi nell’ archivio della mailing troverai già altri topic su  
questo argomento.

Saluti Andrea

----- Original Message -----  
From: “Ashkey” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
To: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Sent: Thursday, February 22, 2007 10:18 AM  
Subject: Re: [ruby-it] Re: Re: Gestione dati login: principiante in alto  
mare

Il posto giusto per trovare una buona dose di esempi e snippet di  
codice da usare è questo:  
[http://technoweenie.stikipad.com/plugins/show/User+Authentication](http://technoweenie.stikipad.com/plugins/show/User+Authentication)

Io personalmente ho implementato nel model User il metodo “is\_admin?”  
dove controllo se l’utente dispone di questa qualifica (a te decidere  
se è data da una tabella esterna ruoli, una colonna col flag adeguato  
ecc.).

Se vuoi permettere l’accesso alle action “edit” e “create” del  
controller “profile” ai soli admin, ad esempio, puoi fare  
così:  
def authorized?(user)  
user.is\_admin? || ![‘edit’, ‘create’].include?(action\_name)  
end

Rispondendo in modo diretto alla tua domanda, potresti fare qualcosa  
del genere nella view:

### User profile
\<% if logged\_in? %\>

\<% for column in User.content\_columns %\>  
\<% if @user.is\_admin? || !@user.send(column.name).empty? #  
all’admin mostro tutte le colonne, all’user solo quelle non vuote %\>

**\<%= column.human\_name %\>:** \<%=h @user.send(column.name) %\>

  
\<% end %\>  
\<% end %\>

\<% else %\>

Devi loggarti per visualizzare il tuo profilo

\<% end %\>

Ma sinceramente, troverei più sicuro fare due view diverse ed usare il  
primo metodo per definiri chi può accedere a cosa.

Il 21/02/07, Daneel O.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> ## messo nella giusta strada… avete per caso un pezzetto di codice che vi
> 
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Ashkey \< Jules Piccotti

* * *

Ml mailing list  
removed\_email\_address@domain.invalid  
[http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [February 22, 2007, 5:17pm UTC](https://www.ruby-forum.com/t/gestione-dati-login-principiante-in-alto-mare/85667/9 "2007-02-22T17:17:11Z")

</div>

Daneel O. wrote:

> In teoria pensavo di dire una cosa del genere:"Dei dati presenti nella  
> tabella guarda il campo id utente (c’Ã¨ il campo users\_id che contiene  
> l’id dell’utente che inserisce il dato, per l’appunto) e confrontalo con  
> l’id dell’utente loggato (lo recupero da current\_user.id); se sono  
> uguali, mostra i dati presenti (la tabella dati Ã¨ fatta pressapoco con  
> questi campi: id, users\_id, nome\_utente\_inserente\_dato, informazione1,  
> informazione2, … informazione\_n).

dunque dunque…

se hai seguito acts\_as\_authenticated hai in @current\_user l’utente  
loggato.

quindi se nella tua tabella (chiamiamola items) hai uno user\_id, nei  
tuoi modelli avrai

class Item \< ActiveRecord::Base  
belongs\_to :user  
end

class Item \< ActiveRecord::Base  
has\_many :items  
end

allora nel controller potrai fare:

@items\_utente = @current\_user.items

@items\_utente conterra tutti gli items dell’utente

questo e’ tutto quello che serve ed e’ anche la forma consigliata per  
accedere agli oggetti “protetti” i.e. posseduti da un utente.

spero che aiuti!  
Luca

–

Web: [http://spazidigitali.com](http://spazidigitali.com) - [http://thetyper.com](http://thetyper.com)  
Email mailto://removed\_email\_address@domain.invalid  
Skype callto://l.mearelli
