Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot assign to read only property 'last_used_at' of object '#<Object>' #247

Open
mauro-arcelles opened this issue Oct 8, 2024 · 4 comments

Comments

@mauro-arcelles
Copy link

mauro-arcelles commented Oct 8, 2024

Package version

9.2.3

Describe the bug

Im getting the error
Cannot assign to read only property 'last_used_at' of object '#' when trying to use the access token on Bearer auth for an api endpoint
Im using:

  • API Starter kit
  • LibSQL with turso url
  • Access tokens auth
config/database.ts
import env from "#start/env"
import { defineConfig } from "@adonisjs/lucid"

const dbUrl = env.get("TURSO_DB_URL")

const dbConfig = defineConfig({
  connection: "libsql",
  connections: {
    libsql: {
      client: "libsql",
      connection: {
        filename: dbUrl,
      },
      pool: {
        min: 0,
        idleTimeoutMillis: 5 * 1000,
      },
      useNullAsDefault: true,
      migrations: {
        naturalSort: true,
        paths: ["database/migrations"],
      },
    },
  },
})

export default dbConfig

The error is thrown in line 313 in verify method in: https://github.com/adonisjs/auth/blob/main/modules/access_tokens_guard/token_providers/db.ts

Reproduction repo

https://github.com/mauro-arcelles/adonis-auth-bug

@thetutlage
Copy link
Member

Can you please share where exactly in your codebase you face this error?

@mauro-arcelles
Copy link
Author

mauro-arcelles commented Oct 8, 2024

In the reproduction repo, when I try to fetch "/me" endpoint from AuthController's "me" method, when doing auth.authenticate()

async me({ auth }: HttpContext) {
    await auth.authenticate()

    return {
      user: auth.user,
    }
}

@MarsaColombo
Copy link

I have the same problem but it happens when assign to my route group an auth middleware:
router .group(() => { router.get('users', [UsersController, 'index']) router.get('users/filters', [UsersController, 'filters']) router.get('users/:id', [UsersController, 'show']) router.post('users', [UsersController, 'store']) router.put('users/:id', [UsersController, 'update']).where('id', /^[0-9]+$/) router.patch('users/:id', [UsersController, 'replace']).where('id', /^[0-9]+$/) router.delete('users/:id', [UsersController, 'destroy']).where('id', /^[0-9]+$/) }) .prefix('api/v1') .middleware(middleware.auth({ guards: ['api'] }))

@MarsaColombo
Copy link

The errors is on the line 22
`import type { HttpContext } from '@adonisjs/core/http'
import type { NextFn } from '@adonisjs/core/types/http'
import type { Authenticators } from '@adonisjs/auth/types'

/**

  • Auth middleware is used authenticate HTTP requests and deny
  • access to unauthenticated users.
    /
    export default class AuthMiddleware {
    /
    *
    • The URL to redirect to, when authentication fails
      */
      redirectTo = '/login'

async handle(
ctx: HttpContext,
next: NextFn,
options: {
guards?: (keyof Authenticators)[]
} = {}
) {
await ctx.auth.authenticateUsing(options.guards, { loginRoute: this.redirectTo }) <-Here
return next()
}
}
`
And seems to refer to tha AccessToken class in the https://github.com/adonisjs/auth/blob/main/modules/access_tokens_guard/token_providers/db.ts which contains the lastUsedAt property

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants