2016-02-29 13 views
8

Pardon la questione newbie, ma ho trovato un sacco di esempi di guardia funzione tappi in questo modo:Protezioni per i tappi dei moduli?

plug :assign_welcome_message, "Hi!" when action in [:index, :show] 

Ma non ho trovato esempi di come fare questo con modulo spine:

plug Guardian.Plug.EnsurePermissions, 
    handler: Mp.Api.AuthController, 
    admin: [:dashboard] when action in [:protected_action] 

Ovunque mi sembrano muoversi when action in [:protected_action] né mi dà un errore di sintassi o di una funzione non definita 0.123.. So che sto facendo qualcosa di stupido ma non riesco a vedere cosa!

Help!


phoenix 1.1.4

risposta

15

Non stupido! Solo un risultato di un po 'di zucchero sintattico.

Plugs take two arguments, il secondo è un argomento per le opzioni. Nel tuo esempio, vuoi passare un elenco di parole chiave come argomento delle opzioni.

Tuttavia, lo syntactic sugar that lets your drop the square brackets funziona solo se l'elenco di parole chiave è l'ultimo argomento della funzione.

Invece di

plug Guardian.Plug.EnsurePermissions, 
    handler: Mp.Api.AuthController, 
    admin: [:dashboard] when action in [:protected_action] 

Prova l'esplicito elenco di parole chiave di sintassi:

plug Guardian.Plug.EnsurePermissions, 
    [handler: Mp.Api.AuthController, 
    admin: [:dashboard]] when action in [:protected_action] 
+2

OMG, ho capito che era qualcosa di semplice come quello. Grazie!!! – neezer

+1

Questo mi dà lo stesso errore di compilazione nella mia pipeline del router, ma funziona nel controller. Qualche idea, perché? Usando phoenix 1.3.0 – Johannes

+0

@Johannes Sto avendo lo stesso problema. hai trovato una soluzione? –

Problemi correlati