@asgardeo/nextjs 0.0.2 → 0.0.3
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.
- package/dist/AsgardeoNextClient.d.ts +8 -2
- package/dist/AsgardeoNextClient.js +104 -26
- package/dist/AsgardeoNextClient.js.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/client/components/presentation/SignIn/SignIn.d.ts +69 -0
- package/dist/client/components/presentation/SignIn/SignIn.js +82 -0
- package/dist/client/components/presentation/SignIn/SignIn.js.map +1 -0
- package/dist/client/contexts/Asgardeo/AsgardeoContext.d.ts +2 -2
- package/dist/client/contexts/Asgardeo/AsgardeoProvider.js +18 -2
- package/dist/client/contexts/Asgardeo/AsgardeoProvider.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* specific language governing permissions and limitations
|
|
16
16
|
* under the License.
|
|
17
17
|
*/
|
|
18
|
-
import { AsgardeoNodeClient, SignInOptions, SignOutOptions, User, UserProfile } from '@asgardeo/node';
|
|
18
|
+
import { AsgardeoNodeClient, EmbeddedFlowExecuteRequestPayload, EmbeddedFlowExecuteResponse, SignInOptions, SignOutOptions, SignUpOptions, User, UserProfile, Organization, EmbeddedSignInFlowHandleRequestPayload, EmbeddedFlowExecuteRequestConfig } from '@asgardeo/node';
|
|
19
19
|
import { NextRequest, NextResponse } from 'next/server';
|
|
20
20
|
import { AsgardeoNextConfig } from './models/config';
|
|
21
21
|
/**
|
|
@@ -29,12 +29,18 @@ declare class AsgardeoNextClient<T extends AsgardeoNextConfig = AsgardeoNextConf
|
|
|
29
29
|
constructor();
|
|
30
30
|
initialize(config: T): Promise<boolean>;
|
|
31
31
|
getUser(userId?: string): Promise<User>;
|
|
32
|
+
getOrganizations(): Promise<Organization[]>;
|
|
32
33
|
getUserProfile(): Promise<UserProfile>;
|
|
34
|
+
switchOrganization(organization: Organization): Promise<void>;
|
|
35
|
+
getCurrentOrganization(): Promise<Organization | null>;
|
|
33
36
|
isLoading(): boolean;
|
|
34
37
|
isSignedIn(sessionId?: string): Promise<boolean>;
|
|
35
|
-
signIn(options?: SignInOptions, sessionId?: string,
|
|
38
|
+
signIn(options?: SignInOptions, sessionId?: string, onSignInSuccess?: (afterSignInUrl: string) => void): Promise<User>;
|
|
39
|
+
signIn(payload: EmbeddedSignInFlowHandleRequestPayload, request: EmbeddedFlowExecuteRequestConfig, sessionId?: string, onSignInSuccess?: (afterSignInUrl: string) => void): Promise<User>;
|
|
36
40
|
signOut(options?: SignOutOptions, afterSignOut?: (redirectUrl: string) => void): Promise<string>;
|
|
37
41
|
signOut(options?: SignOutOptions, sessionId?: string, afterSignOut?: (redirectUrl: string) => void): Promise<string>;
|
|
42
|
+
signUp(options?: SignUpOptions): Promise<void>;
|
|
43
|
+
signUp(payload: EmbeddedFlowExecuteRequestPayload): Promise<EmbeddedFlowExecuteResponse>;
|
|
38
44
|
handler(req: NextRequest): Promise<NextResponse>;
|
|
39
45
|
middleware(req: NextRequest): Promise<NextResponse>;
|
|
40
46
|
}
|
|
@@ -15,14 +15,13 @@
|
|
|
15
15
|
* specific language governing permissions and limitations
|
|
16
16
|
* under the License.
|
|
17
17
|
*/
|
|
18
|
-
import { AsgardeoNodeClient, LegacyAsgardeoNodeClient, } from '@asgardeo/node';
|
|
18
|
+
import { AsgardeoNodeClient, AsgardeoRuntimeError, LegacyAsgardeoNodeClient, initializeEmbeddedSignInFlow, executeEmbeddedSignInFlow, CookieConfig, generateSessionId, EmbeddedSignInFlowStatus, } from '@asgardeo/node';
|
|
19
19
|
import { NextResponse } from 'next/server';
|
|
20
|
+
import InternalAuthAPIRoutesConfig from './configs/InternalAuthAPIRoutesConfig';
|
|
20
21
|
import deleteSessionId from './server/actions/deleteSessionId';
|
|
21
22
|
import getSessionId from './server/actions/getSessionId';
|
|
22
23
|
import getIsSignedIn from './server/actions/isSignedIn';
|
|
23
|
-
import setSessionId from './server/actions/setSessionId';
|
|
24
24
|
import decorateConfigWithNextEnv from './utils/decorateConfigWithNextEnv';
|
|
25
|
-
import InternalAuthAPIRoutesConfig from './configs/InternalAuthAPIRoutesConfig';
|
|
26
25
|
const removeTrailingSlash = (path) => (path.endsWith('/') ? path.slice(0, -1) : path);
|
|
27
26
|
/**
|
|
28
27
|
* Client for mplementing Asgardeo in Next.js applications.
|
|
@@ -40,31 +39,53 @@ class AsgardeoNextClient extends AsgardeoNodeClient {
|
|
|
40
39
|
const { baseUrl, clientId, clientSecret, afterSignInUrl, ...rest } = decorateConfigWithNextEnv(config);
|
|
41
40
|
return this.asgardeo.initialize({
|
|
42
41
|
baseUrl,
|
|
43
|
-
clientId
|
|
42
|
+
clientId,
|
|
44
43
|
clientSecret,
|
|
45
|
-
afterSignInUrl
|
|
44
|
+
afterSignInUrl,
|
|
45
|
+
enablePKCE: false,
|
|
46
46
|
...rest,
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
async getUser(userId) {
|
|
50
|
-
|
|
50
|
+
const resolvedSessionId = userId || (await getSessionId());
|
|
51
51
|
return this.asgardeo.getUser(resolvedSessionId);
|
|
52
52
|
}
|
|
53
|
+
async getOrganizations() {
|
|
54
|
+
throw new Error('Method not implemented.');
|
|
55
|
+
}
|
|
53
56
|
getUserProfile() {
|
|
54
57
|
throw new Error('Method not implemented.');
|
|
55
58
|
}
|
|
59
|
+
switchOrganization(organization) {
|
|
60
|
+
throw new Error('Method not implemented.');
|
|
61
|
+
}
|
|
62
|
+
getCurrentOrganization() {
|
|
63
|
+
throw new Error('Method not implemented.');
|
|
64
|
+
}
|
|
56
65
|
isLoading() {
|
|
57
66
|
return false;
|
|
58
67
|
}
|
|
59
68
|
isSignedIn(sessionId) {
|
|
60
69
|
return this.asgardeo.isSignedIn(sessionId);
|
|
61
70
|
}
|
|
62
|
-
async signIn(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
async signIn(...args) {
|
|
72
|
+
const arg1 = args[0];
|
|
73
|
+
const arg2 = args[1];
|
|
74
|
+
const arg3 = args[2];
|
|
75
|
+
const arg4 = args[3];
|
|
76
|
+
if (typeof arg1 === 'object' && 'flowId' in arg1 && typeof arg1 === 'object' && 'url' in arg2) {
|
|
77
|
+
if (arg1.flowId === '') {
|
|
78
|
+
return initializeEmbeddedSignInFlow({
|
|
79
|
+
payload: arg2.payload,
|
|
80
|
+
url: arg2.url,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return executeEmbeddedSignInFlow({
|
|
84
|
+
payload: arg1,
|
|
85
|
+
url: arg2.url,
|
|
86
|
+
});
|
|
66
87
|
}
|
|
67
|
-
return this.asgardeo.signIn(
|
|
88
|
+
return this.asgardeo.signIn(arg4, arg3, arg1?.code, arg1?.session_state, arg1?.state, arg1);
|
|
68
89
|
}
|
|
69
90
|
async signOut(...args) {
|
|
70
91
|
if (args[1] && typeof args[1] !== 'string') {
|
|
@@ -73,32 +94,89 @@ class AsgardeoNextClient extends AsgardeoNodeClient {
|
|
|
73
94
|
const resolvedSessionId = args[1] || (await getSessionId());
|
|
74
95
|
return Promise.resolve(await this.asgardeo.signOut(resolvedSessionId));
|
|
75
96
|
}
|
|
97
|
+
async signUp(...args) {
|
|
98
|
+
throw new AsgardeoRuntimeError('Not implemented', 'react-AsgardeoReactClient-ValidationError-002', 'react', 'The signUp method with SignUpOptions is not implemented in the React client.');
|
|
99
|
+
}
|
|
76
100
|
async handler(req) {
|
|
77
101
|
const { pathname, searchParams } = req.nextUrl;
|
|
78
102
|
const sanitizedPathname = removeTrailingSlash(pathname);
|
|
79
103
|
const { method } = req;
|
|
104
|
+
// Handle POST sign-in request
|
|
105
|
+
if (method === 'POST' && sanitizedPathname === InternalAuthAPIRoutesConfig.signIn) {
|
|
106
|
+
try {
|
|
107
|
+
// Get session ID from cookies directly since we're in middleware context
|
|
108
|
+
let userId = req.cookies.get(CookieConfig.SESSION_COOKIE_NAME)?.value;
|
|
109
|
+
// Generate session ID if not present
|
|
110
|
+
if (!userId) {
|
|
111
|
+
userId = generateSessionId();
|
|
112
|
+
}
|
|
113
|
+
const signInUrl = new URL(await this.asgardeo.getSignInUrl({ response_mode: 'direct' }, userId));
|
|
114
|
+
const { pathname: urlPathname, origin, searchParams: urlSearchParams } = signInUrl;
|
|
115
|
+
console.log('[AsgardeoNextClient] Sign-in URL:', signInUrl.toString());
|
|
116
|
+
console.log('[AsgardeoNextClient] Search Params:', Object.fromEntries(urlSearchParams.entries()));
|
|
117
|
+
const body = await req.json();
|
|
118
|
+
console.log('[AsgardeoNextClient] Sign-in request:', body);
|
|
119
|
+
const { payload, request } = body;
|
|
120
|
+
const response = await this.signIn(payload, {
|
|
121
|
+
url: request?.url ?? `${origin}${urlPathname}`,
|
|
122
|
+
payload: request?.payload ?? Object.fromEntries(urlSearchParams.entries()),
|
|
123
|
+
}, userId);
|
|
124
|
+
// Clean the response to remove any non-serializable properties
|
|
125
|
+
const cleanResponse = response ? JSON.parse(JSON.stringify(response)) : { success: true };
|
|
126
|
+
// Create response with session cookie
|
|
127
|
+
const nextResponse = NextResponse.json(cleanResponse);
|
|
128
|
+
// Set session cookie if it was generated
|
|
129
|
+
if (!req.cookies.get(CookieConfig.SESSION_COOKIE_NAME)) {
|
|
130
|
+
nextResponse.cookies.set(CookieConfig.SESSION_COOKIE_NAME, userId, {
|
|
131
|
+
httpOnly: CookieConfig.DEFAULT_HTTP_ONLY,
|
|
132
|
+
maxAge: CookieConfig.DEFAULT_MAX_AGE,
|
|
133
|
+
sameSite: CookieConfig.DEFAULT_SAME_SITE,
|
|
134
|
+
secure: CookieConfig.DEFAULT_SECURE,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (response.flowStatus === EmbeddedSignInFlowStatus.SuccessCompleted) {
|
|
138
|
+
const res = await this.signIn({
|
|
139
|
+
code: response?.authData?.code,
|
|
140
|
+
session_state: response?.authData?.session_state,
|
|
141
|
+
state: response?.authData?.state,
|
|
142
|
+
}, {}, userId, (afterSignInUrl) => null);
|
|
143
|
+
const afterSignInUrl = await (await this.asgardeo.getStorageManager()).getConfigDataParameter('afterSignInUrl');
|
|
144
|
+
const redirectUrl = String(afterSignInUrl);
|
|
145
|
+
console.log('[AsgardeoNextClient] Sign-in successful, redirecting to:', redirectUrl);
|
|
146
|
+
return NextResponse.redirect(redirectUrl, 303);
|
|
147
|
+
}
|
|
148
|
+
return nextResponse;
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
console.error('[AsgardeoNextClient] Failed to initialize embedded sign-in flow:', error);
|
|
152
|
+
return NextResponse.json({ error: 'Failed to initialize sign-in flow' }, { status: 500 });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Handle GET sign-in request or callback with code
|
|
80
156
|
if ((method === 'GET' && sanitizedPathname === InternalAuthAPIRoutesConfig.signIn) || searchParams.get('code')) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
157
|
+
try {
|
|
158
|
+
if (searchParams.get('code')) {
|
|
159
|
+
// Handle OAuth callback
|
|
160
|
+
await this.signIn();
|
|
161
|
+
const cleanUrl = new URL(req.url);
|
|
162
|
+
cleanUrl.searchParams.delete('code');
|
|
163
|
+
cleanUrl.searchParams.delete('state');
|
|
164
|
+
cleanUrl.searchParams.delete('session_state');
|
|
165
|
+
return NextResponse.redirect(cleanUrl.toString());
|
|
166
|
+
}
|
|
167
|
+
// Regular GET sign-in request
|
|
168
|
+
await this.signIn();
|
|
169
|
+
return NextResponse.next();
|
|
88
170
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
cleanUrl.searchParams.delete('state');
|
|
93
|
-
cleanUrl.searchParams.delete('session_state');
|
|
94
|
-
return NextResponse.redirect(cleanUrl.toString());
|
|
171
|
+
catch (error) {
|
|
172
|
+
console.error('[AsgardeoNextClient] Sign-in failed:', error);
|
|
173
|
+
return NextResponse.json({ error: 'Sign-in failed' }, { status: 500 });
|
|
95
174
|
}
|
|
96
|
-
return NextResponse.next();
|
|
97
175
|
}
|
|
98
176
|
if (method === 'GET' && sanitizedPathname === InternalAuthAPIRoutesConfig.session) {
|
|
99
177
|
try {
|
|
100
178
|
const isSignedIn = await getIsSignedIn();
|
|
101
|
-
return NextResponse.json({ isSignedIn
|
|
179
|
+
return NextResponse.json({ isSignedIn });
|
|
102
180
|
}
|
|
103
181
|
catch (error) {
|
|
104
182
|
return NextResponse.json({ error: 'Failed to check session' }, { status: 500 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsgardeoNextClient.js","sourceRoot":"","sources":["../src/AsgardeoNextClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,kBAAkB,EAClB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"AsgardeoNextClient.js","sourceRoot":"","sources":["../src/AsgardeoNextClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -31,6 +31,7 @@ var index_exports = {};
|
|
|
31
31
|
__export(index_exports, {
|
|
32
32
|
AsgardeoNext: () => import_AsgardeoNextClient.default,
|
|
33
33
|
AsgardeoProvider: () => import_AsgardeoProvider.default,
|
|
34
|
+
SignIn: () => import_SignIn.default,
|
|
34
35
|
SignInButton: () => import_SignInButton.default,
|
|
35
36
|
SignOutButton: () => import_SignOutButton.default,
|
|
36
37
|
SignedIn: () => import_SignedIn.default,
|
|
@@ -49,6 +50,7 @@ var import_SignedIn2 = require("./client/components/control/SignedIn/SignedIn");
|
|
|
49
50
|
var import_SignedOut = __toESM(require("./client/components/control/SignedOut/SignedOut"), 1);
|
|
50
51
|
var import_SignedOut2 = require("./client/components/control/SignedOut/SignedOut");
|
|
51
52
|
var import_SignInButton = __toESM(require("./client/components/actions/SignInButton/SignInButton"), 1);
|
|
53
|
+
var import_SignIn = __toESM(require("./client/components/presentation/SignIn/SignIn"), 1);
|
|
52
54
|
var import_SignOutButton = __toESM(require("./client/components/actions/SignOutButton/SignOutButton"), 1);
|
|
53
55
|
var import_User = __toESM(require("./client/components/presentation/User/User"), 1);
|
|
54
56
|
var import_AsgardeoNextClient = __toESM(require("./AsgardeoNextClient"), 1);
|
|
@@ -56,6 +58,7 @@ var import_AsgardeoNextClient = __toESM(require("./AsgardeoNextClient"), 1);
|
|
|
56
58
|
0 && (module.exports = {
|
|
57
59
|
AsgardeoNext,
|
|
58
60
|
AsgardeoProvider,
|
|
61
|
+
SignIn,
|
|
59
62
|
SignInButton,
|
|
60
63
|
SignOutButton,
|
|
61
64
|
SignedIn,
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport {default as AsgardeoProvider} from './server/AsgardeoProvider';\nexport * from './server/AsgardeoProvider';\n\nexport {default as isSignedIn} from './server/actions/isSignedIn';\n\nexport {default as SignedIn} from './client/components/control/SignedIn/SignedIn';\nexport {SignedInProps} from './client/components/control/SignedIn/SignedIn';\n\nexport {default as SignedOut} from './client/components/control/SignedOut/SignedOut';\nexport {SignedOutProps} from './client/components/control/SignedOut/SignedOut';\n\nexport {default as SignInButton} from './client/components/actions/SignInButton/SignInButton';\nexport type {SignInButtonProps} from './client/components/actions/SignInButton/SignInButton';\n\nexport {default as SignOutButton} from './client/components/actions/SignOutButton/SignOutButton';\nexport type {SignOutButtonProps} from './client/components/actions/SignOutButton/SignOutButton';\n\nexport {default as User} from './client/components/presentation/User/User';\nexport type {UserProps} from './client/components/presentation/User/User';\n\nexport {default as AsgardeoNext} from './AsgardeoNextClient';\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA,8BAA0C;AAC1C,0BAAc,sCAnBd;AAqBA,wBAAoC;AAEpC,sBAAkC;AAClC,IAAAA,mBAA4B;AAE5B,uBAAmC;AACnC,IAAAC,oBAA6B;AAE7B,0BAAsC;AAGtC,2BAAuC;AAGvC,kBAA8B;AAG9B,gCAAsC;",
|
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport {default as AsgardeoProvider} from './server/AsgardeoProvider';\nexport * from './server/AsgardeoProvider';\n\nexport {default as isSignedIn} from './server/actions/isSignedIn';\n\nexport {default as SignedIn} from './client/components/control/SignedIn/SignedIn';\nexport {SignedInProps} from './client/components/control/SignedIn/SignedIn';\n\nexport {default as SignedOut} from './client/components/control/SignedOut/SignedOut';\nexport {SignedOutProps} from './client/components/control/SignedOut/SignedOut';\n\nexport {default as SignInButton} from './client/components/actions/SignInButton/SignInButton';\nexport type {SignInButtonProps} from './client/components/actions/SignInButton/SignInButton';\n\nexport {default as SignIn} from './client/components/presentation/SignIn/SignIn';\nexport type {SignInProps} from './client/components/presentation/SignIn/SignIn';\n\nexport {default as SignOutButton} from './client/components/actions/SignOutButton/SignOutButton';\nexport type {SignOutButtonProps} from './client/components/actions/SignOutButton/SignOutButton';\n\nexport {default as User} from './client/components/presentation/User/User';\nexport type {UserProps} from './client/components/presentation/User/User';\n\nexport {default as AsgardeoNext} from './AsgardeoNextClient';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA,8BAA0C;AAC1C,0BAAc,sCAnBd;AAqBA,wBAAoC;AAEpC,sBAAkC;AAClC,IAAAA,mBAA4B;AAE5B,uBAAmC;AACnC,IAAAC,oBAA6B;AAE7B,0BAAsC;AAGtC,oBAAgC;AAGhC,2BAAuC;AAGvC,kBAA8B;AAG9B,gCAAsC;",
|
|
6
6
|
"names": ["import_SignedIn", "import_SignedOut"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
import { BaseSignInProps } from '@asgardeo/react';
|
|
19
|
+
import { FC } from 'react';
|
|
20
|
+
/**
|
|
21
|
+
* Props for the SignIn component.
|
|
22
|
+
* Extends BaseSignInProps for full compatibility with the React BaseSignIn component
|
|
23
|
+
*/
|
|
24
|
+
export type SignInProps = BaseSignInProps;
|
|
25
|
+
/**
|
|
26
|
+
* A SignIn component for Next.js that provides native authentication flow.
|
|
27
|
+
* This component delegates to the BaseSignIn from @asgardeo/react and requires
|
|
28
|
+
* the API functions to be provided as props.
|
|
29
|
+
*
|
|
30
|
+
* @remarks This component requires the authentication API functions to be provided
|
|
31
|
+
* as props. For a complete working example, you'll need to implement the server-side
|
|
32
|
+
* authentication endpoints or use the traditional OAuth flow with SignInButton.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```tsx
|
|
36
|
+
* import { SignIn } from '@asgardeo/nextjs';
|
|
37
|
+
* import { executeEmbeddedSignInFlow } from '@asgardeo/browser';
|
|
38
|
+
*
|
|
39
|
+
* const LoginPage = () => {
|
|
40
|
+
* const handleInitialize = async () => {
|
|
41
|
+
* return await executeEmbeddedSignInFlow({
|
|
42
|
+
* response_mode: 'direct',
|
|
43
|
+
* });
|
|
44
|
+
* };
|
|
45
|
+
*
|
|
46
|
+
* const handleSubmit = async (flow) => {
|
|
47
|
+
* return await executeEmbeddedSignInFlow({ flow });
|
|
48
|
+
* };
|
|
49
|
+
*
|
|
50
|
+
* return (
|
|
51
|
+
* <SignIn
|
|
52
|
+
* onInitialize={handleInitialize}
|
|
53
|
+
* onSubmit={handleSubmit}
|
|
54
|
+
* onSuccess={(authData) => {
|
|
55
|
+
* console.log('Authentication successful:', authData);
|
|
56
|
+
* }}
|
|
57
|
+
* onError={(error) => {
|
|
58
|
+
* console.error('Authentication failed:', error);
|
|
59
|
+
* }}
|
|
60
|
+
* size="medium"
|
|
61
|
+
* variant="outlined"
|
|
62
|
+
* afterSignInUrl="/dashboard"
|
|
63
|
+
* />
|
|
64
|
+
* );
|
|
65
|
+
* };
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
declare const SignIn: FC<SignInProps>;
|
|
69
|
+
export default SignIn;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).
|
|
3
|
+
*
|
|
4
|
+
* WSO2 LLC. licenses this file to you under the Apache License,
|
|
5
|
+
* Version 2.0 (the "License"); you may not use this file except
|
|
6
|
+
* in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing,
|
|
12
|
+
* software distributed under the License is distributed on an
|
|
13
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
14
|
+
* KIND, either express or implied. See the License for the
|
|
15
|
+
* specific language governing permissions and limitations
|
|
16
|
+
* under the License.
|
|
17
|
+
*/
|
|
18
|
+
'use client';
|
|
19
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
|
+
import { BaseSignIn } from '@asgardeo/react';
|
|
21
|
+
import useAsgardeo from '../../../contexts/Asgardeo/useAsgardeo';
|
|
22
|
+
/**
|
|
23
|
+
* A SignIn component for Next.js that provides native authentication flow.
|
|
24
|
+
* This component delegates to the BaseSignIn from @asgardeo/react and requires
|
|
25
|
+
* the API functions to be provided as props.
|
|
26
|
+
*
|
|
27
|
+
* @remarks This component requires the authentication API functions to be provided
|
|
28
|
+
* as props. For a complete working example, you'll need to implement the server-side
|
|
29
|
+
* authentication endpoints or use the traditional OAuth flow with SignInButton.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* import { SignIn } from '@asgardeo/nextjs';
|
|
34
|
+
* import { executeEmbeddedSignInFlow } from '@asgardeo/browser';
|
|
35
|
+
*
|
|
36
|
+
* const LoginPage = () => {
|
|
37
|
+
* const handleInitialize = async () => {
|
|
38
|
+
* return await executeEmbeddedSignInFlow({
|
|
39
|
+
* response_mode: 'direct',
|
|
40
|
+
* });
|
|
41
|
+
* };
|
|
42
|
+
*
|
|
43
|
+
* const handleSubmit = async (flow) => {
|
|
44
|
+
* return await executeEmbeddedSignInFlow({ flow });
|
|
45
|
+
* };
|
|
46
|
+
*
|
|
47
|
+
* return (
|
|
48
|
+
* <SignIn
|
|
49
|
+
* onInitialize={handleInitialize}
|
|
50
|
+
* onSubmit={handleSubmit}
|
|
51
|
+
* onSuccess={(authData) => {
|
|
52
|
+
* console.log('Authentication successful:', authData);
|
|
53
|
+
* }}
|
|
54
|
+
* onError={(error) => {
|
|
55
|
+
* console.error('Authentication failed:', error);
|
|
56
|
+
* }}
|
|
57
|
+
* size="medium"
|
|
58
|
+
* variant="outlined"
|
|
59
|
+
* afterSignInUrl="/dashboard"
|
|
60
|
+
* />
|
|
61
|
+
* );
|
|
62
|
+
* };
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
const SignIn = ({ afterSignInUrl, className, onError, onFlowChange, onInitialize, onSubmit, onSuccess, size = 'medium', variant = 'outlined', ...rest }) => {
|
|
66
|
+
const { signIn } = useAsgardeo();
|
|
67
|
+
const handleInitialize = async () => await signIn({
|
|
68
|
+
flowId: '',
|
|
69
|
+
selectedAuthenticator: {
|
|
70
|
+
authenticatorId: '',
|
|
71
|
+
params: {},
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
const handleOnSubmit = async (payload, request) => await signIn(payload, request);
|
|
75
|
+
const handleError = (error) => {
|
|
76
|
+
onError?.(error);
|
|
77
|
+
};
|
|
78
|
+
return (_jsx(BaseSignIn, { afterSignInUrl: afterSignInUrl, onInitialize: handleInitialize, onSubmit: handleOnSubmit, onSuccess: onSuccess, onError: handleError, onFlowChange: onFlowChange, className: className, size: size, variant: variant, ...rest }));
|
|
79
|
+
};
|
|
80
|
+
SignIn.displayName = 'SignIn';
|
|
81
|
+
export default SignIn;
|
|
82
|
+
//# sourceMappingURL=SignIn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignIn.js","sourceRoot":"","sources":["../../../../../src/client/components/presentation/SignIn/SignIn.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;AAQb,OAAO,EAAC,UAAU,EAAkB,MAAM,iBAAiB,CAAC;AAE5D,OAAO,WAAW,MAAM,wCAAwC,CAAC;AAQjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,MAAM,GAAoB,CAAC,EAC/B,cAAc,EACd,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,UAAU,EACpB,GAAG,IAAI,EACK,EAAE,EAAE;IAChB,MAAM,EAAC,MAAM,EAAC,GAAG,WAAW,EAAE,CAAC;IAE/B,MAAM,gBAAgB,GAAG,KAAK,IAAiD,EAAE,CAC/E,MAAM,MAAM,CAAC;QACX,MAAM,EAAE,EAAE;QACV,qBAAqB,EAAE;YACrB,eAAe,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE;SACX;KACF,CAAC,CAAC;IAEL,MAAM,cAAc,GAAG,KAAK,EAC1B,OAA+C,EAC/C,OAAyC,EACE,EAAE,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/E,MAAM,WAAW,GAAG,CAAC,KAAY,EAAQ,EAAE;QACzC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,IACT,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,KACZ,IAAI,GACR,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,eAAe,MAAM,CAAC"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* under the License.
|
|
17
17
|
*/
|
|
18
18
|
import { AsgardeoContextProps as AsgardeoReactContextProps } from '@asgardeo/react';
|
|
19
|
-
import { User } from '@asgardeo/node';
|
|
19
|
+
import { EmbeddedFlowExecuteRequestConfig, EmbeddedSignInFlowHandleRequestPayload, User } from '@asgardeo/node';
|
|
20
20
|
import { Context } from 'react';
|
|
21
21
|
/**
|
|
22
22
|
* Props interface of {@link AsgardeoContext}
|
|
@@ -25,7 +25,7 @@ export type AsgardeoContextProps = Partial<AsgardeoReactContextProps> & {
|
|
|
25
25
|
user?: User | null;
|
|
26
26
|
isSignedIn?: boolean;
|
|
27
27
|
isLoading?: boolean;
|
|
28
|
-
signIn?: () => void;
|
|
28
|
+
signIn?: (payload: EmbeddedSignInFlowHandleRequestPayload, request: EmbeddedFlowExecuteRequestConfig) => void;
|
|
29
29
|
signOut?: () => void;
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
@@ -17,11 +17,13 @@
|
|
|
17
17
|
*/
|
|
18
18
|
'use client';
|
|
19
19
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
20
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
21
20
|
import { I18nProvider, FlowProvider, UserProvider, ThemeProvider } from '@asgardeo/react';
|
|
21
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
22
|
+
import { useRouter } from 'next/navigation';
|
|
22
23
|
import AsgardeoContext from './AsgardeoContext';
|
|
23
24
|
import InternalAuthAPIRoutesConfig from '../../../configs/InternalAuthAPIRoutesConfig';
|
|
24
25
|
const AsgardeoClientProvider = ({ children, preferences, }) => {
|
|
26
|
+
const router = useRouter();
|
|
25
27
|
const [isDarkMode, setIsDarkMode] = useState(false);
|
|
26
28
|
const [user, setUser] = useState(null);
|
|
27
29
|
const [isLoading, setIsLoading] = useState(true);
|
|
@@ -62,11 +64,25 @@ const AsgardeoClientProvider = ({ children, preferences, }) => {
|
|
|
62
64
|
};
|
|
63
65
|
fetchUserData();
|
|
64
66
|
}, []);
|
|
67
|
+
const signIn = async (payload, request) => {
|
|
68
|
+
const response = await fetch(InternalAuthAPIRoutesConfig.signIn, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
body: JSON.stringify({
|
|
71
|
+
payload,
|
|
72
|
+
request,
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
if (response.redirected && response.url) {
|
|
76
|
+
router.push(response.url);
|
|
77
|
+
return { redirected: true, location: response.url };
|
|
78
|
+
}
|
|
79
|
+
return response.json();
|
|
80
|
+
};
|
|
65
81
|
const contextValue = useMemo(() => ({
|
|
66
82
|
user,
|
|
67
83
|
isSignedIn,
|
|
68
84
|
isLoading,
|
|
69
|
-
signIn
|
|
85
|
+
signIn,
|
|
70
86
|
signOut: () => (window.location.href = InternalAuthAPIRoutesConfig.signOut),
|
|
71
87
|
}), [user, isSignedIn, isLoading]);
|
|
72
88
|
return (_jsx(AsgardeoContext.Provider, { value: contextValue, children: _jsx(I18nProvider, { preferences: preferences?.i18n, children: _jsx(ThemeProvider, { theme: preferences?.theme?.overrides, defaultColorScheme: isDarkMode ? 'dark' : 'light', children: _jsx(FlowProvider, { children: _jsx(UserProvider, { profile: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/Asgardeo/AsgardeoProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;
|
|
1
|
+
{"version":3,"file":"AsgardeoProvider.js","sourceRoot":"","sources":["../../../../src/client/contexts/Asgardeo/AsgardeoProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAwB,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,2BAA2B,MAAM,8CAA8C,CAAC;AAYvF,MAAM,sBAAsB,GAAuD,CAAC,EAClF,QAAQ,EACR,WAAW,GACoC,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAc,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;YAC/B,IAAI,CAAC;gBACH,YAAY,CAAC,IAAI,CAAC,CAAC;gBAEnB,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBACzE,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;gBACjD,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAEtC,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;oBAC3B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;oBAEnE,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;wBACpB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;wBAC3C,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,aAAa,EAAE,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,KAAK,EAAE,OAA+C,EAAE,OAAyC,EAAE,EAAE;QAClH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,MAAM,EAAE;YAC/D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO;gBACP,OAAO;aACR,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC;YAC3B,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAC,CAAC;QACpD,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,IAAI;QACJ,UAAU;QACV,SAAS;QACT,MAAM;QACN,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,2BAA2B,CAAC,OAAO,CAAC;KAC5E,CAAC,EACF,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAC9B,CAAC;IAEF,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC3C,KAAC,YAAY,IAAC,WAAW,EAAE,WAAW,EAAE,IAAI,YAC1C,KAAC,aAAa,IAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,YACpG,KAAC,YAAY,cACX,KAAC,YAAY,IACX,OAAO,EAAE;4BACP,OAAO,EAAE,EAAE;4BACX,OAAO,EAAE,IAAI,IAAI,EAAE;4BACnB,gBAAgB,EAAE,IAAI,IAAI,EAAE;yBAC7B,YAEA,QAAQ,GACI,GACF,GACD,GACH,GACU,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,8 @@ export { default as SignedOut } from './client/components/control/SignedOut/Sign
|
|
|
24
24
|
export { SignedOutProps } from './client/components/control/SignedOut/SignedOut';
|
|
25
25
|
export { default as SignInButton } from './client/components/actions/SignInButton/SignInButton';
|
|
26
26
|
export type { SignInButtonProps } from './client/components/actions/SignInButton/SignInButton';
|
|
27
|
+
export { default as SignIn } from './client/components/presentation/SignIn/SignIn';
|
|
28
|
+
export type { SignInProps } from './client/components/presentation/SignIn/SignIn';
|
|
27
29
|
export { default as SignOutButton } from './client/components/actions/SignOutButton/SignOutButton';
|
|
28
30
|
export type { SignOutButtonProps } from './client/components/actions/SignOutButton/SignOutButton';
|
|
29
31
|
export { default as User } from './client/components/presentation/User/User';
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ export { default as isSignedIn } from './server/actions/isSignedIn';
|
|
|
21
21
|
export { default as SignedIn } from './client/components/control/SignedIn/SignedIn';
|
|
22
22
|
export { default as SignedOut } from './client/components/control/SignedOut/SignedOut';
|
|
23
23
|
export { default as SignInButton } from './client/components/actions/SignInButton/SignInButton';
|
|
24
|
+
export { default as SignIn } from './client/components/presentation/SignIn/SignIn';
|
|
24
25
|
export { default as SignOutButton } from './client/components/actions/SignOutButton/SignOutButton';
|
|
25
26
|
export { default as User } from './client/components/presentation/User/User';
|
|
26
27
|
export { default as AsgardeoNext } from './AsgardeoNextClient';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,+CAA+C,CAAC;AAGlF,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,iDAAiD,CAAC;AAGrF,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,uDAAuD,CAAC;AAG9F,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,yDAAyD,CAAC;AAGjG,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,4CAA4C,CAAC;AAG3E,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AACtE,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,+CAA+C,CAAC;AAGlF,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,iDAAiD,CAAC;AAGrF,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,uDAAuD,CAAC;AAG9F,OAAO,EAAC,OAAO,IAAI,MAAM,EAAC,MAAM,gDAAgD,CAAC;AAGjF,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,yDAAyD,CAAC;AAGjG,OAAO,EAAC,OAAO,IAAI,IAAI,EAAC,MAAM,4CAA4C,CAAC;AAG3E,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asgardeo/nextjs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Next.js implementation of Asgardeo JavaScript SDK.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"asgardeo",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@types/react": "^19.1.4",
|
|
38
38
|
"tslib": "^2.8.1",
|
|
39
39
|
"@asgardeo/node": "^0.0.2",
|
|
40
|
-
"@asgardeo/react": "^0.
|
|
40
|
+
"@asgardeo/react": "^0.5.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^22.15.3",
|