nextauthjs / nextauthjs/next-auth

Outdated Dgraph adapter: encoding, id overlap `DgraphClientError: unknown field` and edge runtime.

Open
#11,273 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

adapters bug triage
Dominant language
TypeScript
Stars
28.4k
Forks
4k
PR merge metrics
No merged PRs in 30d

Description

Adapter type

@auth/dgraph-adapter

Environment
  System:
    OS: macOS 14.4.1
    CPU: (10) arm64 Apple M2 Pro
    Memory: 461.52 MB / 32.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 22.1.0 - /opt/homebrew/bin/node
    npm: 10.8.1 - /opt/homebrew/bin/npm
    pnpm: 8.6.7 - /opt/homebrew/bin/pnpm
    bun: 1.1.7 - /opt/homebrew/bin/bun
  Browsers:
    Brave Browser: 123.1.64.122
    Chrome: 126.0.6478.116
    Safari: 17.4.1
  npmPackages:
    @auth/dgraph-adapter: ^2.4.1 => 2.4.1 
    next: 14.1.4 => 14.1.4 
    next-auth: ^5.0.0-beta.19 => 5.0.0-beta.19 
    react: ^18.2.0 => 18.3.1 
Reproduction URL

https://github.com/adriangalilea/next-auth-example

Describe the issue

There are several issues with the Dgraph adapter:

1. JWT session and @auth directive

update

Fixed it and pushed it on the pull request.

original

Dgraph only works with HS256 or RS256 algorithms.

This is no longer true.

So this area of the docs can be removed for simplicity, once tested.

2. DgraphClientError: unknown field

update 2

Dgraph has

The @id directive is used for external identifiers, such as email addresses.

So the right solution may be doing this, I never quite understood why next-auth insist in handling id's itself.

However I'll continue overriding it and respecting Dgraph internal id's as I suspect it'd be better for performance.

update

Patched the Dgraph adapter so that it respects dgraph internal id.

repo branch

original

I spent way too many hours debugging this until I realised that it's the fact that Dgraph doesn't accept external id's.

Currently there is an open PR

This error completely prevents the use of the Dgraph adapter.

3. The edge runtime does not support Node.js 'crypto' module.

update:

I managed to fix the edge runtime issue by following Guides/Edge Compatibility

Fix can be seen here

original message:

 ⨯ Error: The edge runtime does not support Node.js 'crypto' module.
Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime
    at <unknown> (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/globals.js:33)
    at Object.get (webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/globals.js:33:19)
    at module.exports [as sign] (webpack-internal:///(middleware)/./node_modules/jsonwebtoken/sign.js:115:58)
    at client (webpack-internal:///(middleware)/./node_modules/@auth/dgraph-adapter/lib/client.js:28:73)
    at DgraphAdapter (webpack-internal:///(middleware)/./node_modules/@auth/dgraph-adapter/index.js:29:69)
    at eval (webpack-internal:///(middleware)/./auth.ts:39:81)
    at (middleware)/./auth.ts (....next/server/middleware.js:84:1)
    at __webpack_require__ (..../.next/server/edge-runtime-webpack.js:37:33)
    at fn (.../.next/server/edge-runtime-webpack.js:285:21)
    at eval (webpack-internal:///(middleware)/./middleware.ts:7:63)
    at (middleware)/./middleware.ts (.../.next/server/middleware.js:95:1) {
  middleware: true
}

I haven't identified specifically what part of the adapter is causing this, but it's def not up to date to be ran on the edge, thus can't check if user is logged in on the middleware, I know there's been some debate around edge runtime and auth, but I think it should be consistent with the rest of auth.js regardless.

How to reproduce
  1. Install Dgraph adapter
  2. Nothing works.
Expected behavior

Working adapter.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the Dgraph adapter entry points shown in the stack trace, especially client.js and index.js, along with the linked adapter documentation and PR #10719. Reproduce the reported encoding, id, and edge-runtime failures, then verify that the adapter works across the documented setup and middleware scenario.

Written by the indexing model from the issue text.

Assessment

Tech stack
nextjs, nodejs, typescript
Domain
authentication, backend, databases
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.