Skip to content

Commit 775ea70

Browse files
committed
upgrade deprecated code
1 parent 44ae8c3 commit 775ea70

13 files changed

+104
-46
lines changed

.env.example

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
AUTH0_BASE_URL=
2+
AUTH0_ISSUER_BASE_URL=
3+
AUTH0_CLIENT_ID=
4+
AUTH0_CLIENT_SECRET=
5+
AUTH0_AUDIENCE=
6+
AUTH0_COOKIE_NAME=
7+
AUTH0_DOMAIN=
8+

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ Make sure to install the dependencies
3333
yarn install
3434
```
3535

36+
Rename .env.example as .env and set environment values
37+
3638
## Development
3739

3840
Start the development server on http://localhost:3000

layouts/default.vue

+5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
label: "About",
4646
icon: "pi pi-fw pi-file",
4747
to: "/about"
48+
},
49+
{
50+
label: "Profile",
51+
icon: "pi pi-fw pi-user",
52+
to: "/profile"
4853
}
4954
];
5055
</script>

nuxt.config.ts

+10-14
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
import { defineNuxtConfig } from "nuxt";
22

33
const {
4-
AUTH0_SECRET,
54
AUTH0_BASE_URL,
65
AUTH0_ISSUER_BASE_URL,
76
AUTH0_CLIENT_ID,
87
AUTH0_CLIENT_SECRET,
98
AUTH0_AUDIENCE,
10-
AUTH0_COOKIE_NAME,
9+
AUTH0_COOKIE_NAME
1110
} = process.env;
1211

1312
// https://v3.nuxtjs.org/docs/directory-structure/nuxt.config
1413
export default defineNuxtConfig({
1514
app: {
16-
1715
head: {
1816
charset: "utf-8",
1917
viewport: "width=device-width, initial-scale=1",
@@ -25,27 +23,25 @@ export default defineNuxtConfig({
2523
content: "Nuxt3 + Auth0"
2624
}
2725
],
28-
link: [
29-
{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" }
30-
]
31-
},
26+
link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" }]
27+
}
3228
},
3329
typescript: {
34-
shim: false,
30+
shim: false
3531
},
3632
runtimeConfig: {
37-
AUTH0_SECRET,
3833
AUTH0_BASE_URL: AUTH0_BASE_URL || process.env.URL,
3934
AUTH0_ISSUER_BASE_URL,
4035
AUTH0_CLIENT_ID,
4136
AUTH0_CLIENT_SECRET,
4237
AUTH0_AUDIENCE,
4338
AUTH0_COOKIE_NAME,
39+
public: {
40+
AUTH0_COOKIE_NAME
41+
}
4442
},
4543
build: {
46-
transpile: [
47-
'primevue'
48-
],
44+
transpile: ["primevue"]
4945
},
5046
// css
5147
css: [
@@ -56,6 +52,6 @@ export default defineNuxtConfig({
5652
],
5753
components: {
5854
global: true,
59-
dirs: ['~/components']
60-
},
55+
dirs: ["~/components"]
56+
}
6157
});

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
"private": true,
33
"scripts": {
44
"dev": "nuxi dev",
5-
"build": "nuxi build",
5+
"build": "nuxt build",
6+
"preview": "nuxt preview",
67
"start": "node .output/server/index.mjs"
78
},
89
"dependencies": {

pages/profile.vue

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
11
<template>
2-
<div>Profile</div>
2+
<Card>
3+
<template #title> Profile </template>
4+
<template #content>
5+
{{ user }}
6+
</template>
7+
</Card>
38
</template>
9+
10+
<script lang="ts" setup>
11+
const user = useUser();
12+
</script>

plugins/session.server.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import { defineNuxtPlugin } from '#app'
2+
13
export default defineNuxtPlugin((nuxt) => {
2-
const session = nuxt.ssrContext.req?.session;
4+
const session = nuxt.ssrContext.event.context?.session;
35
if (session && session.user) {
46
useState("user", () => session.user);
57
}

server/api/auth/callback.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as Iron from '@hapi/iron'
44
// import { createRemoteJWKSet, jwtVerify } from 'jose'
55
import * as jose from 'jose'
66

7-
export default async (req, res) => {
7+
export default defineEventHandler(async (event) => {
88
const {
99
AUTH0_BASE_URL,
1010
AUTH0_ISSUER_BASE_URL,
@@ -13,7 +13,7 @@ export default async (req, res) => {
1313
AUTH0_COOKIE_NAME,
1414
} = process.env;
1515

16-
const query = parse(req.url, true).query
16+
const query = parse(event.req.url, true).query
1717

1818
if (query?.error || !query.code) {
1919
throw new Error(String(query.message))
@@ -61,9 +61,9 @@ export default async (req, res) => {
6161
const date = new Date();
6262
date.setDate(date.getDate() + 1);
6363

64-
res.writeHead(302, {
64+
event.res.writeHead(302, {
6565
"Set-cookie": `${AUTH0_COOKIE_NAME}=${sealedCookie}; Path=/; Secure; SameSite=Lax; Expires=${date.toUTCString()}`,
6666
Location: "/",
6767
});
68-
res.end();
69-
};
68+
event.res.end();
69+
});

server/api/auth/login.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
export default async (req, res) => {
1+
export default defineEventHandler(async (event) => {
22
const {
33
AUTH0_BASE_URL,
44
AUTH0_ISSUER_BASE_URL,
55
AUTH0_CLIENT_ID,
66
AUTH0_AUDIENCE,
77
} = process.env;
8-
98
const loginUrl = `${AUTH0_ISSUER_BASE_URL}/authorize?response_type=code&client_id=${AUTH0_CLIENT_ID}&redirect_uri=${AUTH0_BASE_URL}/api/auth/callback&scope=openid%20profile%20email&audience=${AUTH0_AUDIENCE}`;
10-
11-
res.writeHead(302, {
9+
event.res.writeHead(302, {
1210
Location: loginUrl,
1311
});
14-
res.end();
15-
};
12+
event.res.end();
13+
})

server/api/auth/logout.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
export default async (req, res) => {
1+
export default defineEventHandler(async (event) => {
22
const { AUTH0_ISSUER_BASE_URL, AUTH0_CLIENT_ID, AUTH0_COOKIE_NAME } = process.env;
3-
4-
res.writeHead(302, {
5-
"Set-cookie": `${AUTH0_COOKIE_NAME}=; Path=/; Secure; SameSite=Lax; Max-Age=0`,
3+
event.res.writeHead(302, {
4+
"Set-cookie": `${AUTH0_COOKIE_NAME}=; Path=/; Secure; HttpOnly; SameSite=Lax; Max-Age=0`,
65
Location: `${AUTH0_ISSUER_BASE_URL}/v2/logout?client_id=${AUTH0_CLIENT_ID}`,
76
});
8-
res.end();
9-
};
7+
event.res.end();
8+
})

server/api/auth/me.ts

+24-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
1-
export default async (req, res) => {
2-
const data = await fetch(`${process.env.AUTH0_ISSUER_BASE_URL}/userinfo`, {
3-
headers: {
4-
Authorization: `Bearer ${req.session.access_token}`,
5-
},
6-
});
7-
return await data.json();
8-
};
1+
import { getCookie } from 'h3'
2+
import Iron from '@hapi/iron';
3+
4+
const { AUTH0_COOKIE_NAME, AUTH0_CLIENT_SECRET } = process.env
5+
6+
export default defineEventHandler(async (event) => {
7+
try {
8+
const sealed = getCookie(event, AUTH0_COOKIE_NAME)
9+
if (sealed) {
10+
const unsealed = await Iron.unseal(sealed, AUTH0_CLIENT_SECRET, Iron.defaults);
11+
return unsealed.user
12+
13+
// console.log(unsealed.access_token)
14+
// const data = await fetch(`${process.env.AUTH0_ISSUER_BASE_URL}/userinfo`, {
15+
// headers: {
16+
// Authorization: `Bearer ${unsealed.access_token}`,
17+
// },
18+
// });
19+
// return await data.json();
20+
}
21+
} catch (err) {
22+
console.log(err.message);
23+
}
24+
})

server/middleware/auth.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { getCookie } from 'h3'
2+
export default defineEventHandler((event) => {
3+
const { AUTH0_COOKIE_NAME } = process.env
4+
const token = getCookie(event, AUTH0_COOKIE_NAME)
5+
if (event.req.url.includes('/api/auth/')) {
6+
return
7+
}
8+
if (event.req.url.includes('/api/')) {
9+
if (Boolean(token) !== true) {
10+
event.res.statusCode = 401
11+
event.res.end('You must be signed in to access to resource.')
12+
}
13+
} else {
14+
// if (Boolean(token) !== true) {
15+
// event.res.writeHead(302, {
16+
// "Set-cookie": `${AUTH0_COOKIE_NAME}=; Path=/; Secure; SameSite=Lax; Expires=`,
17+
// Location: "/login",
18+
// });
19+
// event.res.end();
20+
// }
21+
}
22+
})

server/middleware/session.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import Iron from "@hapi/iron";
22
import { getCookie } from 'h3'
33

4-
export default async (req, res) => {
4+
export default defineEventHandler(async (event) => {
55
const { AUTH0_COOKIE_NAME, AUTH0_CLIENT_SECRET } = process.env;
6-
const cookie = getCookie(req, AUTH0_COOKIE_NAME)
6+
const cookie = getCookie(event.req, AUTH0_COOKIE_NAME)
77

88
if (cookie != null) {
99
const session = await Iron.unseal(
1010
cookie,
1111
AUTH0_CLIENT_SECRET,
1212
Iron.defaults
1313
);
14-
req.session = session;
14+
event.context.session = session;
1515
}
16-
};
16+
});

0 commit comments

Comments
 (0)