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

supabase.auth.admin.updateUserById() return error AuthRetryableFetchError status 504 #22885

Open
yudistiraashadi opened this issue Apr 19, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@yudistiraashadi
Copy link

Bug report

  • [ x ] I confirm this is a bug with Supabase, not with my own application.
  • [ x ] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug

Calling supabase.auth.admin.updateUserById() return AuthRetryableFetchError status 504 but the data in DB (Supabase online) is correctly updated. Apparently the error happened if I add email as a parameter. I can change password and/or app_metadata without error. The data is updated in Supabase online, but I still receiver error. Note: I'm using Next.js with SSR.

To Reproduce

Here is my exact code:

export const createAdminClient = () => {
  const cookieStore = cookies();

  return createServerClient(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_SERVICE_KEY!,
    {
      cookies: {
        get(name: string) {
          return cookieStore.get(name)?.value;
        },
        set(name: string, value: string, options: CookieOptions) {
          try {
            cookieStore.set({ name, value, ...options });
          } catch (error) {
            // The `set` method was called from a Server Component.
            // This can be ignored if you have middleware refreshing
            // user sessions.
          }
        },
        remove(name: string, options: CookieOptions) {
          try {
            cookieStore.set({ name, value: "", ...options });
          } catch (error) {
            // The `delete` method was called from a Server Component.
            // This can be ignored if you have middleware refreshing
            // user sessions.
          }
        },
      },
    },
  );
};
const supabaseAdmin = createAdminClient();

const { data: updateUserData, error: updateUserError } =
  await supabaseAdmin.auth.admin.updateUserById(result.data.id, {
    email: result.data.username + "@email.com",
    password: result.data.password,
  });

console.log({ updateUserData, updateUserError });

The resulting data and error:

{
  updateUserData: { user: null },
  updateUserError: AuthRetryableFetchError: {}
      at handleError (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:38:15)
      at _handleRequest (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:120:15)
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
      at async _request (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/lib/fetch.js:99:18)
      at async GoTrueAdminApi.updateUserById (webpack-internal:///(action-browser)/./node_modules/@supabase/auth-js/dist/module/GoTrueAdminApi.js:201:20)
      at async eval (webpack-internal:///(action-browser)/./src/app/dashboard/user/_actions/edit-user.ts:81:70)
      at async scope (webpack-internal:///(action-browser)/./node_modules/postgres/src/index.js:257:18)
      at async Function.begin (webpack-internal:///(action-browser)/./node_modules/postgres/src/index.js:240:14)
      at async editUser (webpack-internal:///(action-browser)/./src/app/dashboard/user/_actions/edit-user.ts:76:9)
      at async /home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:418
      at async rS (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:7978)
      at async r2 (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:41:1251)
      at async doRender (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:1438:30)
      at async cacheEntry.responseCache.get.routeKind (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:1587:40)
      at async DevServer.renderToResponseWithComponentsImpl (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:1507:28)
      at async DevServer.renderPageComponent (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:1924:24)
      at async DevServer.renderToResponseImpl (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:1962:32)
      at async DevServer.pipeImpl (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:920:25)
      at async NextNodeServer.handleCatchallRenderRequest (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/next-server.js:272:17)
      at async DevServer.handleRequestImpl (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/base-server.js:816:17)
      at async /home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/dev/next-dev-server.js:339:20
      at async Span.traceAsyncFn (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/trace/trace.js:154:20)
      at async DevServer.handleRequest (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/dev/next-dev-server.js:336:24)
      at async invokeRender (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/lib/router-server.js:174:21)
      at async handleRequest (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/lib/router-server.js:353:24)
      at async requestHandlerImpl (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/lib/router-server.js:377:13)
      at async Server.requestListener (/home/yudis/Codes/Works/Retas.io/unilever/monitoring-timbangan/node_modules/next/dist/server/lib/start-server.js:141:13) {
    __isAuthError: true,
    status: 504,
    code: undefined
  }
}

Expected behavior

Return with no error since the data is correctly updated in Supabase online.

System information

  • OS: Ubuntu 22.04
  • Browser (if applies): Chrome
  • Version of supabase-js: 2.42.4
  • Version of supabase-ssr: 0.3.0
  • Version of Node.js: 18.19.0

Additional context

I'm using Next.js and Supabase SSR

@yudistiraashadi yudistiraashadi added the bug Something isn't working label Apr 19, 2024
@simonha9
Copy link
Contributor

simonha9 commented May 4, 2024

Hi! I can take a look at this, can you provide some more information as to why the error is occurring? Specifically I am looking for the Logs -> Infrastructure -> Auth tab and the entry with the 504. I am able to update my own test user without an issue, I may be missing some more context about the user like some email/password violation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants