Forum: Italian Ruby user group Check permessi per visualizzare i link di gestione

09f5a940f9ddb3f57b70ea60a9522e24?d=identicon&s=25 Marco B. (deepcode)
on 2014-06-05 17:33
Buongiorno a tutti, per imparare ad usare Rails sto implementando un
sito con un blog, una gallery ecc...

Nel farlo ho implementato i permessi di accesso alle varie action
utilizzando i comodissimi "befor_action" che mi mandano a login se un
utente non ha i permessi e non è loggato o mi mostrano un messaggio di
avviso se ho eseguito la login.

Sto valutando un modo elegante per non mostrare i link di accesso alle
action quando non si possiedono determinati permessi (inutile mostrare
un tasto edit se non potrai mai usarlo), per far questo ho implementato
un metodo nell'ApplicationController chiamato "is_permitted" che dopo
aver testato alcune condizioni valorizza una variabile @permission a
true o false a seconda che si abbiano o meno i diritti di accesso
all'azione.

Ogni controller quindi chiama in "befor_action" il metodo is_permitted
nei relativi metodi show o index e poi nella view, controlla come segue
per visualizzare o meno il link:

<%= link_to [...] if @permission %>

Questa cosa non so se sia corretta, non so nemmeno se sia elegante o se
possa essere in qualche modo troppo complessa da mantenere.

Accetto soluzioni o pareri, se avete voglia e tempo di aiutarmi.
:)

Grazie

Marco B.
E555a767a33427bfee0bb0878566293c?d=identicon&s=25 gabriele renzi (Guest)
on 2014-06-05 18:27
(Received via mailing list)
io ti suggerisco di usare una gem che gestisce l'autorizzazione tipo
CanCan
(o la versione aggiornata CanCanCan) o Authority.

Cos puoi fare


  <%= link_to @item if can?(:edit, @item) %>

cos la logica dei permessi  concentrata da una parte  (in ability.rb per
cancan) se cambiano le tue spec (i.e. aggiungi ruoli multipli, metti una
vista sloggata, vuoi che gli utenti modifichino solo le cose create da
loro) ti basta aggiornare quello.

https://github.com/CanCanCommunity/cancancan
https://github.com/nathanl/authority


2014-06-05 17:33 GMT+02:00 Marco B. <viacart@gmail.com>:

> un tasto edit se non potrai mai usarlo), per far questo ho implementato
>
> --
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ml mailing list
> Ml@lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>



--
twitter: @riffraff
blog (en, it): www.riffraff.info
work: circleme.com
09f5a940f9ddb3f57b70ea60a9522e24?d=identicon&s=25 Marco B. (deepcode)
on 2014-06-06 12:28
Ok, credo che lo seguirò il tuo consiglio. :)

Solitamente il mio unico problema nell'uso delle GEM è il dover
diventare dipendenti da un componente esterno invece di svilupparlo
all'interno del progetto stesso.

Forse la cosa che poco capisco di Ruby e Rails nella fattispecie è che
per spostare un progetto da un server ad un altro sia necessario
dipendere comunque da un istallazione di componenti specifici.

Mi spiego meglio, nei siti sviluppati in php generalmente mi basta un
copia incolla dei file e l'installazione del componente per mysql e al
massi per GD e sono apposto non mi serve molto altro.

Da quel che mi pare di capire in Ruby si è molto legati alle Gems che
devono essere installate ogni volta nel progetto e questo mi da come
l'impressione di essere vincolato.

Voi mi direte, sviluppati tutto per i fatti tuoi, ma vedo che nei forum
o negli how to in giro nessuno si fa problemi ad installare gemme
all'occorrenza e a concentrarsi solo sulla logica delle applicazioni.

Ma credo sia solo una mio modo di sentire e non un reale problema.
71845161952bbfcb58f4e474164453ef?d=identicon&s=25 asd asd (cris_1986)
on 2014-06-06 12:47
(Received via mailing list)
Le gemme sviluppate dalla comunit sono proprio uno dei punti forza di
Rails. Ti consiglio caldamente di usarle quando le reputi
sufficientemente
stabili e mantenute. In particolare per le autorizzazioni io avevo usato
cancan con buoni risultati.


Il giorno 06 giugno 2014 12:28, Marco B. <viacart@gmail.com> ha scritto:
5ce16d85034e08079db3cafeb5b8ff09?d=identicon&s=25 Davide Rambaldi (Guest)
on 2014-06-06 12:56
(Received via mailing list)
DRY and KISS
Il 06/giu/2014 12:28 "Marco B." <viacart@gmail.com> ha scritto:
09f5a940f9ddb3f57b70ea60a9522e24?d=identicon&s=25 Marco B. (deepcode)
on 2014-06-06 14:52
(Received via mailing list)
Il giorno 06 giugno 2014 12:55, Davide Rambaldi
<davide.rambaldi@gmail.com>
ha scritto:

> DRY and KISS
>

Come dire, conciso ed efficace. :)
Grazie delle risposte.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.