adonisjs / v6-docs

Documentation website for AdonisJS v6
38 stars 53 forks source link

Custom auth guard: not setting `isAuthenticated` correctly #116

Open shiny opened 3 weeks ago

shiny commented 3 weeks ago

While using @adonisjs/auth, I followed the documentation to write a custom auth guard. It works great, but there's a small issue:

after ctx.auth.authenticateUsing(['myCustomGuard']), the ctx.auth.isAuthenticated is still false

So, I checked the code for the access_tokens_guard. In its authenticate method, there is a snippet to update the local state:

/**
* Update local state
*/
this.isAuthenticated = true
this.user = providerUser.getOriginal() as UserProvider[typeof PROVIDER_REAL_USER] & {
    currentAccessToken: AccessToken
}
this.user!.currentAccessToken = token

/**
 * Notify
 */
this.#emitter.emit('access_tokens_auth:authentication_succeeded', {
    ctx: this.#ctx,
    token,
    guardName: this.#name,
    user: this.user,
})

return this.user

But in tutorial, it's not mentioned:

this.user = providerUser.getOriginal()
return this.getUserOrFail()

After I added this line, it worked:

this.isAuthenticated = true

However, I wounder if I still missed something, and how to improve the documentation?