Check permessi per visualizzare i link di gestione

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.
:slight_smile:

Grazie

Marco B.

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.

2014-06-05 17:33 GMT+02:00 Marco B. [email protected]:

un tasto edit se non potrai mai usarlo), per far questo ho implementato


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


twitter: @riffraff
blog (en, it): www.riffraff.info
work: circleme.com

Ok, credo che lo seguirò il tuo consiglio. :slight_smile:

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.

DRY and KISS
Il 06/giu/2014 12:28 “Marco B.” [email protected] ha scritto:

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. [email protected] ha scritto:

Il giorno 06 giugno 2014 12:55, Davide R.
[email protected]
ha scritto:

DRY and KISS

Come dire, conciso ed efficace. :slight_smile:
Grazie delle risposte.