@logto/next 4.2.5 → 4.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,7 +20,7 @@ export default class LogtoClient extends LogtoNextBaseClient {
20
20
  getAccessToken: (request: NextApiRequest, response: NextApiResponse, resource: string) => Promise<string>;
21
21
  getOrganizationToken: (request: NextApiRequest, response: NextApiResponse, organizationId: string) => Promise<string>;
22
22
  withLogtoApiRoute: (handler: NextApiHandler, config?: GetContextParameters, onError?: ErrorHandler) => NextApiHandler;
23
- withLogtoSsr: <P extends Record<string, unknown> = Record<string, unknown>>(handler: (context: GetServerSidePropsContext) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>, configs?: GetContextParameters, onError?: ((error: unknown) => unknown) | undefined) => (context: GetServerSidePropsContext) => Promise<NextApiHandler>;
23
+ withLogtoSsr: <P extends Record<string, unknown> = Record<string, unknown>>(handler: (context: GetServerSidePropsContext) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>, configs?: GetContextParameters, onError?: ((error: unknown) => unknown) | undefined) => (context: GetServerSidePropsContext) => Promise<unknown>;
24
24
  createNodeClientFromNextApi(request: IncomingMessage & {
25
25
  cookies: NextApiRequestCookies;
26
26
  }, response: ServerResponse): Promise<NodeClient>;
package/lib/src/index.js CHANGED
@@ -24,7 +24,13 @@ class LogtoClient extends LogtoNextBaseClient {
24
24
  const nodeClient = await this.createNodeClientFromNextApi(request, response);
25
25
  if (request.url) {
26
26
  await nodeClient.handleSignInCallback(`${this.config.baseUrl}${request.url}`);
27
- response.redirect(redirectTo);
27
+ // Check if there's a stored navigation URL (from postRedirectUri) first
28
+ if (this.navigateUrl) {
29
+ response.redirect(this.navigateUrl);
30
+ }
31
+ else {
32
+ response.redirect(redirectTo);
33
+ }
28
34
  }
29
35
  }, onError);
30
36
  this.handleSignOut = (redirectUri = this.config.baseUrl, onError) => buildHandler(async (request, response) => {
@@ -73,9 +79,19 @@ class LogtoClient extends LogtoNextBaseClient {
73
79
  return handler(request, response);
74
80
  }, onError);
75
81
  this.withLogtoSsr = (handler, configs = {}, onError) => async (context) => {
76
- return this.withLogtoApiRoute(async () => {
77
- return handler(context);
78
- }, configs, onError);
82
+ try {
83
+ const nodeClient = await this.createNodeClientFromNextApi(context.req, context.res);
84
+ const user = await nodeClient.getContext(configs);
85
+ // eslint-disable-next-line @silverhand/fp/no-mutating-methods
86
+ Object.defineProperty(context.req, 'user', { enumerable: true, get: () => user });
87
+ return await handler(context);
88
+ }
89
+ catch (error) {
90
+ if (onError) {
91
+ return onError(error);
92
+ }
93
+ throw error;
94
+ }
79
95
  };
80
96
  this.handleSignInImplementation = (options) => buildHandler(async (request, response) => {
81
97
  const nodeClient = await this.createNodeClientFromNextApi(request, response);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/next",
3
- "version": "4.2.5",
3
+ "version": "4.2.6",
4
4
  "type": "module",
5
5
  "module": "./lib/src/index.js",
6
6
  "types": "./lib/src/index.d.ts",
@@ -53,7 +53,7 @@
53
53
  "@vitest/coverage-v8": "^2.1.9",
54
54
  "eslint": "^8.57.0",
55
55
  "lint-staged": "^15.0.0",
56
- "next": "^15.2.4",
56
+ "next": "^15.4.7",
57
57
  "next-test-api-route-handler": "^4.0.14",
58
58
  "prettier": "^3.0.0",
59
59
  "react": "19.0.0",