supabase / auth

A JWT based API for managing users and issuing JWT tokens
https://supabase.com/docs/guides/auth
MIT License
1.34k stars 333 forks source link

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

Open yudistiraashadi opened 3 months ago

yudistiraashadi commented 3 months ago

Bug report

Describe the bug

Calling supabase.auth.admin.updateUserById() return AuthRetryableFetchError status 504 but the data in DB (Supabase online) is correctly updated.

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
  }
}

The data is updated in Supabase online, but I still receiver error. supabase.auth.admin.getUserById() actually working fine.

Expected behavior

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

System information

Additional context

I'm using Next.js and Supabase SSR

yudistiraashadi commented 3 months ago

apparently the error happened if I add email as a parameter. I can change password and/or app_metadata without error.