How to actually _load_ the resource with Guardian
Guardian, like all auth libraries in all languages, is tough to wrap my head around.
I know there is a plug in the pipeline called plug Guardian.Plug.LoadResource
. I know there is a function called Guardian.Plug.current_resource(conn)
that takes the conn
and returns that returns the resource placed in the conn
by the Guardian.Plug.LoadResource
plug.
What I don't know is how the LoadResource
plug knows what resource to get.
In Guardian, you configure the pipeline with:
use Guardian.Plug.Pipeline, otp_app: :my_app,
module: GuardianImpl,
error_handler: ErrorHandler
The GuardianImpl
is a module that uses the Guardian
behaviour.
The Guardian
behaviour has a callback resource_from_claims
that might be implemented like this:
def resource_from_claims(claims) do
{:ok, Repo.get(User, claims["sub"])}
end
So when you need to modify how you load the resource, you should look to see how the resource_from_claims
callback is implemented.
Read more here.
Tweet