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