Skip to content

Commit e73ae50

Browse files
committed
update dependencies
1 parent 3147ec1 commit e73ae50

File tree

23 files changed

+7556
-7333
lines changed

23 files changed

+7556
-7333
lines changed

lib/auth.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
import { GetServerSidePropsContext, NextApiRequest, NextApiResponse } from 'next';
1+
import { NextApiRequest, NextApiResponse } from 'next';
2+
import { getIronSession } from "iron-session";
3+
import { SessionData, sessionOptions } from './session';
24
import type { VerifiedAuthenticationResponse, VerifiedRegistrationResponse } from '@simplewebauthn/server';
35
import { verifyAuthenticationResponse, verifyRegistrationResponse } from '@simplewebauthn/server';
4-
// import type { PublicKeyCredentialWithAssertionJSON, PublicKeyCredentialWithAttestationJSON } from '@github/webauthn-json';
56
import crypto from 'crypto';
67
import * as jose from 'jose';
78
import objectPath from 'object-path';
89

9-
type SessionRequest = NextApiRequest | GetServerSidePropsContext["req"];
10-
1110
var user = process.env.COUCHDB_USER;
1211
var pass = process.env.COUCHDB_PASSWORD;
1312
const domain: string = process.env.DOMAIN !== undefined ? process.env.DOMAIN: '';
@@ -35,11 +34,13 @@ function clean(str: string) {
3534
export function generateChallenge() {
3635
return clean(crypto.randomBytes(32).toString("base64"));
3736
}
38-
export function isLoggedIn(req: SessionRequest) {
39-
return req.session.userId != null;
40-
}
41-
export async function register(req: NextApiRequest) {
42-
const challenge = req.session.challenge ?? "";
37+
export async function register(req: NextApiRequest, res: NextApiResponse) {
38+
const session = await getIronSession<SessionData>(
39+
req,
40+
res,
41+
sessionOptions,
42+
);
43+
const challenge = session.challenge ?? "";
4344
const credential = req.body.credential as any;
4445
const { email } = req.body;
4546
let verification: VerifiedRegistrationResponse;
@@ -79,8 +80,13 @@ export async function register(req: NextApiRequest) {
7980
console.log(`Registered new user ${req.body.email}`);
8081
return user;
8182
}
82-
export async function login(req: NextApiRequest) {
83-
const challenge = req.session.challenge ?? "";
83+
export async function login(req: NextApiRequest, res: NextApiResponse) {
84+
const session = await getIronSession<SessionData>(
85+
req,
86+
res,
87+
sessionOptions,
88+
);
89+
const challenge = session.challenge ?? "";
8490
const credential = req.body.credential;
8591
const email = req.body.email;
8692
if (credential?.id == null) {

lib/session.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,31 @@
1-
import type { IronSessionOptions } from 'iron-session';
1+
import { SessionOptions } from "iron-session";
2+
import { SiweMessage } from 'siwe';
23

3-
export const sessionOptions: IronSessionOptions = {
4+
export interface SessionData {
5+
userId: string;
6+
isLoggedIn: boolean;
7+
nonce?: string;
8+
challenge: string;
9+
token?: string;
10+
jwt?: string;
11+
siwe?: SiweMessage;
12+
}
13+
14+
export const defaultSession: SessionData = {
15+
userId: "",
16+
challenge: "",
17+
isLoggedIn: false,
18+
};
19+
20+
export const sessionOptions: SessionOptions = {
421
password: `yGB%@)'8FPudp5";E{s5;fq>c7:evVeU`,
522
// password: process.env.SECRET_COOKIE_PASSWORD!,
623
cookieName: "next-webauthn",
724
cookieOptions: {
825
secure: process.env.NODE_ENV === "production",
926
},
1027
};
28+
29+
// export function sleep(ms: number) {
30+
// return new Promise((resolve) => setTimeout(resolve, ms));
31+
// }

0 commit comments

Comments
 (0)