@baseworks/auth 0.2.7 → 1.0.2

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.
@@ -1,387 +0,0 @@
1
- import {
2
- getAuthPublicUrl,
3
- normalizeUrlLike
4
- } from "./chunk-3NJASEF4.js";
5
- import {
6
- parseJwtPayload
7
- } from "./chunk-OD5XLL3O.js";
8
- import {
9
- generatePkce
10
- } from "./chunk-34E5PYNA.js";
11
-
12
- // src/session.ts
13
- import { cookies } from "next/headers";
14
- import { NextResponse } from "next/server";
15
- import { base64urlEncode, base64urlDecodeString } from "@baseworks/core";
16
- var oidcCookies = {
17
- codeVerifier: "oidc_code_verifier",
18
- state: "oidc_state",
19
- nonce: "oidc_nonce",
20
- returnTo: "oidc_return_to",
21
- idToken: "oidc_id_token",
22
- accessToken: "oidc_access_token",
23
- refreshToken: "oidc_refresh_token",
24
- expiresAt: "oidc_expires_at",
25
- session: "oidc_session"
26
- };
27
- function getIssuer() {
28
- return (process.env.OIDC_ISSUER ?? "https://nesskey.com").replace(/\/+$/, "");
29
- }
30
- function getClientId() {
31
- const clientId = process.env.OIDC_CLIENT_ID;
32
- if (!clientId) throw new Error("OIDC_CLIENT_ID is required.");
33
- return clientId;
34
- }
35
- function getOptionalClientSecret() {
36
- return process.env.OIDC_CLIENT_SECRET;
37
- }
38
- function getCookieDomain() {
39
- const domain = process.env.OIDC_COOKIE_DOMAIN?.trim();
40
- return domain || void 0;
41
- }
42
- function getScope() {
43
- return process.env.OIDC_SCOPE ?? "openid profile email offline_access";
44
- }
45
- function getPublicAuthBasePath() {
46
- return normalizeUrlLike(process.env.OIDC_PUBLIC_BASE_PATH ?? getAuthPublicUrl() ?? "/auth");
47
- }
48
- function getRedirectUriOverride() {
49
- return process.env.OIDC_REDIRECT_URI ?? null;
50
- }
51
- function getDefaultSignedOutRedirect() {
52
- return process.env.OIDC_DEFAULT_REDIRECT ?? "/";
53
- }
54
- function getPublicSiteUrlFromEnv(request) {
55
- const explicit = process.env.APP_PUBLIC_URL ?? process.env.NEXT_PUBLIC_SITE_URL ?? process.env.OIDC_PUBLIC_SITE_URL;
56
- if (explicit) return normalizeUrlLike(explicit);
57
- if (request) return normalizeUrlLike(request.nextUrl.origin);
58
- return null;
59
- }
60
- function resolvePublicRedirect(target, request) {
61
- if (/^https?:\/\//.test(target)) return new URL(target);
62
- const publicSiteUrl = getPublicSiteUrlFromEnv(request);
63
- if (publicSiteUrl) return new URL(target, publicSiteUrl);
64
- return new URL(target, request.url);
65
- }
66
- function randomString() {
67
- return base64urlEncode(crypto.getRandomValues(new Uint8Array(32)));
68
- }
69
- async function discoverOidc() {
70
- const issuer = getIssuer();
71
- const response = await fetch(`${issuer}/.well-known/openid-configuration`);
72
- if (!response.ok) throw new Error(`Failed to load OIDC discovery document from ${issuer}.`);
73
- return await response.json();
74
- }
75
- function encodeSessionCookie(session) {
76
- return base64urlEncode(new TextEncoder().encode(JSON.stringify(session)));
77
- }
78
- function parseSessionCookie(value) {
79
- try {
80
- const session = JSON.parse(base64urlDecodeString(value));
81
- return session.isAuthenticated ? session : null;
82
- } catch {
83
- return null;
84
- }
85
- }
86
- function encodeTransactionCookie(transaction) {
87
- return base64urlEncode(new TextEncoder().encode(JSON.stringify(transaction)));
88
- }
89
- function parseTransactionCookie(value) {
90
- try {
91
- const transaction = JSON.parse(base64urlDecodeString(value));
92
- if (!transaction.codeVerifier || !transaction.returnTo) return null;
93
- return transaction;
94
- } catch {
95
- return null;
96
- }
97
- }
98
- function getTransactionCookieName(state) {
99
- return `oidc_tx_${state}`;
100
- }
101
- function getCookieOptions(request) {
102
- return {
103
- domain: getCookieDomain(),
104
- httpOnly: true,
105
- path: "/",
106
- sameSite: "lax",
107
- secure: request.nextUrl.protocol === "https:"
108
- };
109
- }
110
- function expireCookie(response, request, name) {
111
- response.cookies.set(name, "", { ...getCookieOptions(request), expires: /* @__PURE__ */ new Date(0) });
112
- }
113
- function setTransactionCookie(response, request, state, transaction) {
114
- response.cookies.set(
115
- getTransactionCookieName(state),
116
- encodeTransactionCookie(transaction),
117
- { ...getCookieOptions(request), expires: new Date(Date.now() + 10 * 60 * 1e3) }
118
- );
119
- }
120
- function getRedirectUri(request) {
121
- const override = getRedirectUriOverride();
122
- if (override) return override;
123
- return new URL(
124
- `${getPublicAuthBasePath()}/oidc/callback`,
125
- getPublicSiteUrlFromEnv(request) ?? request.nextUrl.origin
126
- ).toString();
127
- }
128
- function appendClientAuthentication(headers, params, clientId, clientSecret) {
129
- if (clientSecret) {
130
- const basic = btoa(`${clientId}:${clientSecret}`);
131
- headers.set("authorization", `Basic ${basic}`);
132
- return;
133
- }
134
- params.set("client_id", clientId);
135
- }
136
- async function exchangeAuthorizationCode(args) {
137
- const params = new URLSearchParams({
138
- code: args.code,
139
- code_verifier: args.codeVerifier,
140
- grant_type: "authorization_code",
141
- redirect_uri: args.redirectUri
142
- });
143
- const reqHeaders = new Headers({ "content-type": "application/x-www-form-urlencoded" });
144
- appendClientAuthentication(reqHeaders, params, args.clientId, args.clientSecret);
145
- const response = await fetch(args.tokenEndpoint, {
146
- body: params.toString(),
147
- headers: reqHeaders,
148
- method: "POST"
149
- });
150
- const json = await response.json();
151
- if (!response.ok || !json.id_token) {
152
- throw new Error(json.error_description ?? "OIDC code exchange failed.");
153
- }
154
- return json;
155
- }
156
- async function refreshIdToken(args) {
157
- const params = new URLSearchParams({
158
- grant_type: "refresh_token",
159
- refresh_token: args.refreshToken
160
- });
161
- const reqHeaders = new Headers({ "content-type": "application/x-www-form-urlencoded" });
162
- appendClientAuthentication(reqHeaders, params, args.clientId, args.clientSecret);
163
- const response = await fetch(args.tokenEndpoint, {
164
- body: params.toString(),
165
- headers: reqHeaders,
166
- method: "POST"
167
- });
168
- const json = await response.json();
169
- if (!response.ok || !json.id_token) {
170
- throw new Error(json.error_description ?? "OIDC token refresh failed.");
171
- }
172
- return json;
173
- }
174
- function sessionFromPayload(payload) {
175
- return {
176
- audience: payload.aud,
177
- email: payload.email,
178
- expiresAt: payload.exp ?? 0,
179
- isAuthenticated: true,
180
- issuer: payload.iss,
181
- name: payload.name,
182
- pictureUrl: payload.picture,
183
- subject: payload.sub,
184
- tokenIdentifier: payload.sub && payload.iss ? `${payload.sub}|${payload.iss}` : void 0
185
- };
186
- }
187
- function applyTokenCookies(response, request, tokens) {
188
- const options = getCookieOptions(request);
189
- const payload = parseJwtPayload(tokens.id_token) ?? {};
190
- const expiresAt = payload.exp ?? (tokens.expires_in ? Math.floor(Date.now() / 1e3) + tokens.expires_in : void 0);
191
- if (!expiresAt) throw new Error("The OIDC ID token did not include an expiry.");
192
- response.cookies.set(oidcCookies.idToken, tokens.id_token, {
193
- ...options,
194
- expires: new Date(expiresAt * 1e3)
195
- });
196
- response.cookies.set(oidcCookies.expiresAt, String(expiresAt), {
197
- ...options,
198
- expires: new Date(expiresAt * 1e3)
199
- });
200
- response.cookies.set(
201
- oidcCookies.session,
202
- encodeSessionCookie(sessionFromPayload({ ...payload, exp: expiresAt })),
203
- { ...options, expires: new Date(expiresAt * 1e3) }
204
- );
205
- if (tokens.access_token) {
206
- response.cookies.set(oidcCookies.accessToken, tokens.access_token, {
207
- ...options,
208
- expires: new Date(expiresAt * 1e3)
209
- });
210
- }
211
- if (tokens.refresh_token) {
212
- response.cookies.set(oidcCookies.refreshToken, tokens.refresh_token, options);
213
- }
214
- }
215
- function clearTransientCookies(response, request) {
216
- expireCookie(response, request, oidcCookies.codeVerifier);
217
- expireCookie(response, request, oidcCookies.state);
218
- expireCookie(response, request, oidcCookies.nonce);
219
- }
220
- async function buildAuthorizationRedirect(request) {
221
- const discovery = await discoverOidc();
222
- const clientId = getClientId();
223
- const { challenge, verifier } = await generatePkce();
224
- const nonce = randomString();
225
- const state = randomString();
226
- const redirectUri = getRedirectUri(request);
227
- const returnTo = request.nextUrl.searchParams.get("redirectTo") ?? getDefaultSignedOutRedirect();
228
- const url = new URL(discovery.authorization_endpoint);
229
- url.searchParams.set("client_id", clientId);
230
- url.searchParams.set("code_challenge", challenge);
231
- url.searchParams.set("code_challenge_method", "S256");
232
- url.searchParams.set("nonce", nonce);
233
- url.searchParams.set("redirect_uri", redirectUri);
234
- url.searchParams.set("response_type", "code");
235
- url.searchParams.set("scope", getScope());
236
- url.searchParams.set("state", state);
237
- const response = NextResponse.redirect(url);
238
- const options = getCookieOptions(request);
239
- setTransactionCookie(response, request, state, { codeVerifier: verifier, nonce, returnTo });
240
- response.cookies.set(oidcCookies.codeVerifier, verifier, options);
241
- response.cookies.set(oidcCookies.state, state, options);
242
- response.cookies.set(oidcCookies.nonce, nonce, options);
243
- response.cookies.set(oidcCookies.returnTo, returnTo, options);
244
- return response;
245
- }
246
- async function handleAuthorizationCallback(request) {
247
- const cookieStore = await cookies();
248
- const code = request.nextUrl.searchParams.get("code");
249
- const state = request.nextUrl.searchParams.get("state");
250
- const transaction = state ? parseTransactionCookie(cookieStore.get(getTransactionCookieName(state))?.value ?? "") : null;
251
- const savedState = cookieStore.get(oidcCookies.state)?.value;
252
- const codeVerifier = transaction?.codeVerifier ?? cookieStore.get(oidcCookies.codeVerifier)?.value;
253
- const savedNonce = transaction?.nonce ?? cookieStore.get(oidcCookies.nonce)?.value;
254
- const returnTo = transaction?.returnTo ?? cookieStore.get(oidcCookies.returnTo)?.value ?? getDefaultSignedOutRedirect();
255
- if (!code || !state || !codeVerifier || !transaction && (!savedState || state !== savedState)) {
256
- return NextResponse.redirect(
257
- resolvePublicRedirect(`${getPublicAuthBasePath()}?error=oidc_state`, request)
258
- );
259
- }
260
- try {
261
- const discovery = await discoverOidc();
262
- const tokens = await exchangeAuthorizationCode({
263
- clientId: getClientId(),
264
- clientSecret: getOptionalClientSecret(),
265
- code,
266
- codeVerifier,
267
- redirectUri: getRedirectUri(request),
268
- tokenEndpoint: discovery.token_endpoint
269
- });
270
- const payload = parseJwtPayload(tokens.id_token) ?? {};
271
- if (savedNonce && payload.nonce && payload.nonce !== savedNonce) {
272
- throw new Error("OIDC nonce mismatch.");
273
- }
274
- const response = NextResponse.redirect(resolvePublicRedirect(returnTo, request));
275
- applyTokenCookies(response, request, tokens);
276
- clearTransientCookies(response, request);
277
- expireCookie(response, request, oidcCookies.returnTo);
278
- expireCookie(response, request, getTransactionCookieName(state));
279
- return response;
280
- } catch {
281
- return NextResponse.redirect(
282
- resolvePublicRedirect(`${getPublicAuthBasePath()}?error=oidc_callback`, request)
283
- );
284
- }
285
- }
286
- async function getSessionFromCookies() {
287
- const cookieStore = await cookies();
288
- const idToken = cookieStore.get(oidcCookies.idToken)?.value;
289
- if (idToken) {
290
- try {
291
- return sessionFromPayload(parseJwtPayload(idToken) ?? {});
292
- } catch {
293
- }
294
- }
295
- const sessionCookie = cookieStore.get(oidcCookies.session)?.value;
296
- const session = sessionCookie ? parseSessionCookie(sessionCookie) : null;
297
- return session ?? { expiresAt: 0, isAuthenticated: false };
298
- }
299
- async function getServerIdToken() {
300
- const cookieStore = await cookies();
301
- return cookieStore.get(oidcCookies.idToken)?.value ?? null;
302
- }
303
- async function hasServerOidcSession() {
304
- const cookieStore = await cookies();
305
- return Boolean(
306
- cookieStore.get(oidcCookies.session)?.value ?? cookieStore.get(oidcCookies.idToken)?.value ?? cookieStore.get(oidcCookies.accessToken)?.value
307
- );
308
- }
309
- async function getServerAccessToken() {
310
- const cookieStore = await cookies();
311
- const accessToken = cookieStore.get(oidcCookies.accessToken)?.value;
312
- if (accessToken) return accessToken;
313
- const refreshToken = cookieStore.get(oidcCookies.refreshToken)?.value;
314
- if (!refreshToken) return null;
315
- try {
316
- const discovery = await discoverOidc();
317
- const tokens = await refreshIdToken({
318
- clientId: getClientId(),
319
- clientSecret: getOptionalClientSecret(),
320
- refreshToken,
321
- tokenEndpoint: discovery.token_endpoint
322
- });
323
- return tokens.access_token ?? null;
324
- } catch {
325
- return null;
326
- }
327
- }
328
- async function buildSessionResponse(_request) {
329
- const cookieStore = await cookies();
330
- const idToken = cookieStore.get(oidcCookies.idToken)?.value;
331
- const expiresAt = Number(cookieStore.get(oidcCookies.expiresAt)?.value ?? "0");
332
- const now = Math.floor(Date.now() / 1e3);
333
- if (!idToken || expiresAt <= now) {
334
- return NextResponse.json({ expiresAt: 0, isAuthenticated: false }, {
335
- status: 401
336
- });
337
- }
338
- return NextResponse.json(sessionFromPayload({ ...parseJwtPayload(idToken) ?? {}, exp: expiresAt }));
339
- }
340
- async function buildTokenResponse(request) {
341
- const cookieStore = await cookies();
342
- const idToken = cookieStore.get(oidcCookies.idToken)?.value;
343
- const expiresAt = Number(cookieStore.get(oidcCookies.expiresAt)?.value ?? "0");
344
- const now = Math.floor(Date.now() / 1e3);
345
- if (!idToken || expiresAt <= now) {
346
- const response = NextResponse.json({ token: null }, { status: 401 });
347
- expireCookie(response, request, oidcCookies.idToken);
348
- expireCookie(response, request, oidcCookies.refreshToken);
349
- expireCookie(response, request, oidcCookies.expiresAt);
350
- return response;
351
- }
352
- return NextResponse.json({ token: idToken });
353
- }
354
- async function buildLogoutResponse(request) {
355
- const redirectTo = request.nextUrl.searchParams.get("redirectTo") ?? getDefaultSignedOutRedirect();
356
- const postLogoutUrl = resolvePublicRedirect(redirectTo, request).toString();
357
- const cookieStore = await cookies();
358
- const idToken = cookieStore.get(oidcCookies.idToken)?.value;
359
- const clearResponse = NextResponse.redirect(postLogoutUrl);
360
- Object.values(oidcCookies).forEach((name) => expireCookie(clearResponse, request, name));
361
- try {
362
- const discovery = await discoverOidc();
363
- if (discovery.end_session_endpoint) {
364
- const endSessionUrl = new URL(discovery.end_session_endpoint);
365
- endSessionUrl.searchParams.set("post_logout_redirect_uri", postLogoutUrl);
366
- if (idToken) endSessionUrl.searchParams.set("id_token_hint", idToken);
367
- return NextResponse.redirect(endSessionUrl.toString(), {
368
- headers: clearResponse.headers
369
- });
370
- }
371
- } catch {
372
- }
373
- return clearResponse;
374
- }
375
-
376
- export {
377
- oidcCookies,
378
- buildAuthorizationRedirect,
379
- handleAuthorizationCallback,
380
- getSessionFromCookies,
381
- getServerIdToken,
382
- hasServerOidcSession,
383
- getServerAccessToken,
384
- buildSessionResponse,
385
- buildTokenResponse,
386
- buildLogoutResponse
387
- };
package/dist/edge.d.ts DELETED
@@ -1,17 +0,0 @@
1
- import { OidcSession } from './session.js';
2
- import 'next/server';
3
-
4
- type EdgeAuthProvider = "anonymous" | "cookie" | "pomerium";
5
- type EdgeSession = OidcSession & {
6
- groups?: string[];
7
- provider: EdgeAuthProvider;
8
- rawClaims?: Record<string, unknown>;
9
- role?: string;
10
- username?: string;
11
- };
12
- declare function getEdgeSession(): Promise<EdgeSession>;
13
- declare function getPomeriumAuthenticateUrl(redirectTo: string, origin?: string): string | null;
14
- declare function handleEdgeLogin(request: Request): void;
15
- declare function getPomeriumSignOutUrl(redirectTo: string, origin?: string): string | null;
16
-
17
- export { type EdgeAuthProvider, type EdgeSession, getEdgeSession, getPomeriumAuthenticateUrl, getPomeriumSignOutUrl, handleEdgeLogin };
package/dist/edge.js DELETED
@@ -1,145 +0,0 @@
1
- import {
2
- getSessionFromCookies
3
- } from "./chunk-JS5Y2DTW.js";
4
- import {
5
- buildPublicUrl,
6
- normalizeUrlLike
7
- } from "./chunk-3NJASEF4.js";
8
- import {
9
- parseJwtPayload
10
- } from "./chunk-OD5XLL3O.js";
11
- import "./chunk-34E5PYNA.js";
12
-
13
- // src/edge.ts
14
- import { headers } from "next/headers";
15
- import { redirect } from "next/navigation";
16
- function firstHeader(headerStore, names) {
17
- for (const name of names) {
18
- const value = headerStore.get(name);
19
- if (value) return value;
20
- }
21
- return void 0;
22
- }
23
- function stringClaim(claims, keys) {
24
- for (const key of keys) {
25
- const value = claims[key];
26
- if (typeof value === "string" && value.trim()) return value;
27
- if (Array.isArray(value)) {
28
- const first = value.find((item) => typeof item === "string" && item.trim());
29
- if (first) return first;
30
- }
31
- }
32
- return void 0;
33
- }
34
- function parseHeaderClaim(value) {
35
- if (!value) return void 0;
36
- try {
37
- const parsed = JSON.parse(value);
38
- if (typeof parsed === "string" && parsed.trim()) return parsed;
39
- if (Array.isArray(parsed)) {
40
- const first = parsed.find((item) => typeof item === "string" && item.trim());
41
- if (first) return first;
42
- }
43
- } catch {
44
- }
45
- return value.trim() || void 0;
46
- }
47
- function stringHeaderClaim(headerStore, names) {
48
- for (const name of names) {
49
- const value = parseHeaderClaim(headerStore.get(name) ?? void 0);
50
- if (value) return value;
51
- }
52
- return void 0;
53
- }
54
- function stringArrayClaim(claims, keys) {
55
- for (const key of keys) {
56
- const value = claims[key];
57
- if (typeof value === "string" && value.trim()) return [value];
58
- if (Array.isArray(value)) {
59
- const strings = value.filter((item) => typeof item === "string" && item.trim().length > 0);
60
- if (strings.length) return strings;
61
- }
62
- }
63
- return void 0;
64
- }
65
- function stringArrayHeaderClaim(headerStore, names) {
66
- for (const name of names) {
67
- const raw = headerStore.get(name);
68
- if (!raw) continue;
69
- try {
70
- const parsed = JSON.parse(raw);
71
- if (typeof parsed === "string" && parsed.trim()) return [parsed];
72
- if (Array.isArray(parsed)) {
73
- const strings = parsed.filter((item) => typeof item === "string" && item.trim().length > 0);
74
- if (strings.length) return strings;
75
- }
76
- } catch {
77
- const values = raw.split(",").map((v) => v.trim()).filter(Boolean);
78
- if (values.length) return values;
79
- }
80
- }
81
- return void 0;
82
- }
83
- function parsePomeriumSession(headerStore) {
84
- const assertion = firstHeader(headerStore, ["x-pomerium-jwt-assertion", "x-pomerium-jwt"]);
85
- const claims = assertion ? parseJwtPayload(assertion) : {};
86
- const email = stringHeaderClaim(headerStore, ["x-pomerium-claim-email", "x-forwarded-email"]) ?? stringClaim(claims ?? {}, ["email"]);
87
- const subject = stringHeaderClaim(headerStore, ["x-pomerium-claim-sub", "x-pomerium-claim-user", "x-user-id"]) ?? stringClaim(claims ?? {}, ["sub", "user", "id"]);
88
- const name = stringHeaderClaim(headerStore, ["x-pomerium-claim-name", "x-forwarded-user"]) ?? stringClaim(claims ?? {}, ["name", "preferred_username"]);
89
- const pictureUrl = stringHeaderClaim(headerStore, ["x-pomerium-claim-picture"]) ?? stringClaim(claims ?? {}, ["picture"]);
90
- const username = stringHeaderClaim(headerStore, ["x-pomerium-claim-username", "x-pomerium-claim-preferred-username"]) ?? stringClaim(claims ?? {}, ["username", "preferred_username", "user"]);
91
- const groups = stringArrayHeaderClaim(headerStore, ["x-pomerium-claim-groups", "x-pomerium-claim-roles"]) ?? stringArrayClaim(claims ?? {}, ["groups", "roles"]);
92
- const role = stringHeaderClaim(headerStore, ["x-pomerium-claim-role"]) ?? stringClaim(claims ?? {}, ["role"]);
93
- if (!email && !subject && !name) return null;
94
- return {
95
- email,
96
- expiresAt: Number.MAX_SAFE_INTEGER,
97
- groups,
98
- isAuthenticated: true,
99
- name,
100
- pictureUrl,
101
- provider: "pomerium",
102
- rawClaims: claims ?? void 0,
103
- role,
104
- subject: subject ?? email,
105
- username
106
- };
107
- }
108
- async function getEdgeSession() {
109
- const headerStore = await headers();
110
- const pomerium = parsePomeriumSession(headerStore);
111
- if (pomerium) return pomerium;
112
- const cookieSession = await getSessionFromCookies();
113
- if (cookieSession.isAuthenticated) {
114
- return { ...cookieSession, provider: "cookie" };
115
- }
116
- return { expiresAt: 0, isAuthenticated: false, provider: "anonymous" };
117
- }
118
- function getPomeriumAuthenticateUrl(redirectTo, origin) {
119
- const appUrl = origin ?? process.env.APP_PUBLIC_URL ?? process.env.NEXT_PUBLIC_SITE_URL;
120
- if (!appUrl) return null;
121
- const url = new URL(
122
- process.env.POMERIUM_LOGIN_PATH ?? "/auth/edge/login",
123
- `${normalizeUrlLike(appUrl)}/`
124
- );
125
- url.searchParams.set("pomerium_redirect_uri", buildPublicUrl(redirectTo, origin));
126
- return url.toString();
127
- }
128
- function handleEdgeLogin(request) {
129
- const url = new URL(request.url);
130
- const redirectTo = url.searchParams.get("pomerium_redirect_uri") ?? "/";
131
- redirect(redirectTo);
132
- }
133
- function getPomeriumSignOutUrl(redirectTo, origin) {
134
- const authUrl = process.env.POMERIUM_AUTHENTICATE_URL ?? process.env.POMERIUM_AUTH_URL ?? origin;
135
- if (!authUrl) return null;
136
- const url = new URL("/.pomerium/sign_out", `${normalizeUrlLike(authUrl)}/`);
137
- url.searchParams.set("pomerium_redirect_uri", buildPublicUrl(redirectTo, origin));
138
- return url.toString();
139
- }
140
- export {
141
- getEdgeSession,
142
- getPomeriumAuthenticateUrl,
143
- getPomeriumSignOutUrl,
144
- handleEdgeLogin
145
- };
package/dist/session.d.ts DELETED
@@ -1,42 +0,0 @@
1
- import { NextRequest, NextResponse } from 'next/server';
2
-
3
- type OidcSession = {
4
- audience?: string | string[];
5
- email?: string;
6
- expiresAt: number;
7
- isAuthenticated: boolean;
8
- issuer?: string;
9
- name?: string;
10
- pictureUrl?: string;
11
- subject?: string;
12
- tokenIdentifier?: string;
13
- };
14
- declare const oidcCookies: {
15
- readonly codeVerifier: "oidc_code_verifier";
16
- readonly state: "oidc_state";
17
- readonly nonce: "oidc_nonce";
18
- readonly returnTo: "oidc_return_to";
19
- readonly idToken: "oidc_id_token";
20
- readonly accessToken: "oidc_access_token";
21
- readonly refreshToken: "oidc_refresh_token";
22
- readonly expiresAt: "oidc_expires_at";
23
- readonly session: "oidc_session";
24
- };
25
- declare function buildAuthorizationRedirect(request: NextRequest): Promise<NextResponse<unknown>>;
26
- declare function handleAuthorizationCallback(request: NextRequest): Promise<NextResponse<unknown>>;
27
- declare function getSessionFromCookies(): Promise<OidcSession>;
28
- declare function getServerIdToken(): Promise<string | null>;
29
- declare function hasServerOidcSession(): Promise<boolean>;
30
- declare function getServerAccessToken(): Promise<string | null>;
31
- declare function buildSessionResponse(_request?: NextRequest): Promise<NextResponse<{
32
- expiresAt: number;
33
- isAuthenticated: false;
34
- }> | NextResponse<OidcSession>>;
35
- declare function buildTokenResponse(request: NextRequest): Promise<NextResponse<{
36
- token: null;
37
- }> | NextResponse<{
38
- token: string;
39
- }>>;
40
- declare function buildLogoutResponse(request: NextRequest): Promise<NextResponse<unknown>>;
41
-
42
- export { type OidcSession, buildAuthorizationRedirect, buildLogoutResponse, buildSessionResponse, buildTokenResponse, getServerAccessToken, getServerIdToken, getSessionFromCookies, handleAuthorizationCallback, hasServerOidcSession, oidcCookies };
package/dist/session.js DELETED
@@ -1,27 +0,0 @@
1
- import {
2
- buildAuthorizationRedirect,
3
- buildLogoutResponse,
4
- buildSessionResponse,
5
- buildTokenResponse,
6
- getServerAccessToken,
7
- getServerIdToken,
8
- getSessionFromCookies,
9
- handleAuthorizationCallback,
10
- hasServerOidcSession,
11
- oidcCookies
12
- } from "./chunk-JS5Y2DTW.js";
13
- import "./chunk-3NJASEF4.js";
14
- import "./chunk-OD5XLL3O.js";
15
- import "./chunk-34E5PYNA.js";
16
- export {
17
- buildAuthorizationRedirect,
18
- buildLogoutResponse,
19
- buildSessionResponse,
20
- buildTokenResponse,
21
- getServerAccessToken,
22
- getServerIdToken,
23
- getSessionFromCookies,
24
- handleAuthorizationCallback,
25
- hasServerOidcSession,
26
- oidcCookies
27
- };
@@ -1,11 +0,0 @@
1
- declare function normalizeUrlLike(value: string): string;
2
- declare function getAuthPublicUrl(): string;
3
- declare function getAccountPublicUrl(): string;
4
- declare function getAppBasePath(defaultPath?: string): string;
5
- declare function getPublicSiteUrl(): string;
6
- declare function buildPublicUrl(pathOrUrl: string, fallbackOrigin?: string): string;
7
- declare function buildAuthLoginUrl(redirectTo: string, origin?: string): string;
8
- declare function buildAuthLogoutUrl(redirectTo: string, origin?: string): string;
9
- declare function buildAccountProfileUrl(): string;
10
-
11
- export { buildAccountProfileUrl, buildAuthLoginUrl, buildAuthLogoutUrl, buildPublicUrl, getAccountPublicUrl, getAppBasePath, getAuthPublicUrl, getPublicSiteUrl, normalizeUrlLike };
@@ -1,22 +0,0 @@
1
- import {
2
- buildAccountProfileUrl,
3
- buildAuthLoginUrl,
4
- buildAuthLogoutUrl,
5
- buildPublicUrl,
6
- getAccountPublicUrl,
7
- getAppBasePath,
8
- getAuthPublicUrl,
9
- getPublicSiteUrl,
10
- normalizeUrlLike
11
- } from "./chunk-3NJASEF4.js";
12
- export {
13
- buildAccountProfileUrl,
14
- buildAuthLoginUrl,
15
- buildAuthLogoutUrl,
16
- buildPublicUrl,
17
- getAccountPublicUrl,
18
- getAppBasePath,
19
- getAuthPublicUrl,
20
- getPublicSiteUrl,
21
- normalizeUrlLike
22
- };