2015-10-22 11 views
7

Staje się to przykład kodu jako wtyczki do obsługi uwierzytelniania:current_user kontroler Phoenix przekazywane poprzez Plug

defmodule Financeweb.APIAuth do 
... 

    def call(conn, _opts) do 
    ... 

    if authenticated_user do 
     conn 
     |> assign(:current_user, user) 
    else 
     conn 
     |> send_resp(401, "{\"error\":\"unauthorized\"}") 
     |> halt 
    end 
    end 
end 

Tak, jestem przechodzącej zmiennej current_user za pośrednictwem Plug.Conn.assign/3. Jaki jest najlepszy sposób na uzyskanie tej zmiennej w kontrolerze Phoenix? Robię to w ten sposób (kod poniżej), ale jestem pewien, że jest lepszy sposób na zrobienie tego.

def index(conn, _) do 
    user_id = conn.assigns.current_user.id 
end 

Odpowiedz

9

przesłanianie action/2 i wstrzyknąć go:

def action(conn, _) do 
    apply(__MODULE__, action_name(conn), 
    [conn, conn.params, conn.assigns.current_user]) 
end 

def index(conn, _params, current_user) do 
    ... 
end 

def show(conn, _params, current_user) do 
    ... 
end 
Powiązane problemy