Skip to content

Commit 9b75953

Browse files
committed
chore: init
1 parent 18ea43a commit 9b75953

File tree

13 files changed

+1578
-19
lines changed

13 files changed

+1578
-19
lines changed

.eslintrc

Lines changed: 0 additions & 4 deletions
This file was deleted.

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ Minimalist Authentication module for Nuxt.
1616
- Secured & sealed cookies sessions
1717
- OAuth Providers
1818

19+
## Requirements
20+
21+
This module only works with SSR (server-side rendering) enabled as it uses server API routes. You cannot use this module with `nuxt generate`.
22+
1923
## Quick Setup
2024

2125
1. Add `nuxt-auth-core` dependency to your project
@@ -141,7 +145,11 @@ Example: `~/server/routes/auth/github.get.ts`
141145
```ts
142146
export default oauth.githubEventHandler({
143147
async onSuccess(event, { user, tokens }) {
144-
await setUserSession(event, { user })
148+
await setUserSession(event, {
149+
user: {
150+
githubId: user.id
151+
}
152+
})
145153
return sendRedirect(event, '/')
146154
},
147155
// Optional, will return a json error and 401 status code by default

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,20 @@
2828
"test:watch": "vitest watch"
2929
},
3030
"dependencies": {
31-
"@nuxt/kit": "^3.8.0"
31+
"@nuxt/kit": "^3.8.0",
32+
"defu": "^6.1.3",
33+
"ohash": "^1.1.3"
3234
},
3335
"devDependencies": {
34-
"@types/node": "^20.8.9",
36+
"@iconify-json/simple-icons": "^1.1.76",
3537
"@nuxt/devtools": "latest",
3638
"@nuxt/eslint-config": "^0.2.0",
3739
"@nuxt/module-builder": "^0.5.2",
3840
"@nuxt/schema": "^3.8.0",
3941
"@nuxt/test-utils": "^3.8.0",
42+
"@nuxt/ui": "^2.10.0",
43+
"@nuxt/ui-pro": "^0.4.2",
44+
"@types/node": "^20.8.9",
4045
"changelogen": "^0.5.5",
4146
"eslint": "^8.52.0",
4247
"nuxt": "^3.8.0",

playground/.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
NUXT_SESSION_PASSWORD=
2+
# GitHub OAuth
23
NUXT_OAUTH_GITHUB_CLIENT_ID=
34
NUXT_OAUTH_GITHUB_CLIENT_SECRET=
5+
# Spotify OAuth
6+
NUXT_OAUTH_SPOTIFY_CLIENT_ID=
7+
NUXT_OAUTH_SPOTIFY_CLIENT_SECRET=

playground/.eslintrc.cjs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module.exports = {
2+
root: true,
3+
extends: [
4+
'@nuxt/eslint-config'
5+
],
6+
rules: {
7+
// Global
8+
semi: ['error', 'never'],
9+
quotes: ['error', 'single'],
10+
'quote-props': ['error', 'as-needed'],
11+
// Vue
12+
'vue/multi-word-component-names': 0,
13+
'vue/max-attributes-per-line': 'off',
14+
'vue/no-v-html': 0
15+
}
16+
}

playground/app.vue

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,43 @@
11
<script setup>
2-
const { loggedIn } = useUserSession()
2+
const { loggedIn, session, clear } = useUserSession()
33
</script>
44

55
<template>
6-
<div>
7-
Nuxt module playground!
8-
{{ loggedIn ? 'Logged in' : 'Not logged in' }}
9-
</div>
6+
<UHeader>
7+
<template #right>
8+
<UButton
9+
v-if="!loggedIn || !session.user.github"
10+
to="/auth/github"
11+
icon="i-simple-icons-github"
12+
external
13+
color="gray"
14+
size="xs"
15+
>
16+
Login with GitHub
17+
</UButton>
18+
<UButton
19+
v-if="!loggedIn || !session.user.spotify"
20+
to="/auth/spotify"
21+
icon="i-simple-icons-spotify"
22+
external
23+
color="gray"
24+
size="xs"
25+
>
26+
Login with Spotify
27+
</UButton>
28+
<UButton
29+
v-if="loggedIn"
30+
color="gray"
31+
size="xs"
32+
@click="clear"
33+
>
34+
Logout
35+
</UButton>
36+
</template>
37+
</UHeader>
38+
<UMain>
39+
<UContainer>
40+
<NuxtPage />
41+
</UContainer>
42+
</UMain>
1043
</template>

playground/nuxt.config.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
export default defineNuxtConfig({
2-
modules: ['../src/module'],
2+
extends: ['@nuxt/ui-pro'],
3+
modules: [
4+
'../src/module',
5+
'@nuxt/ui'
6+
],
37
auth: {},
8+
ui: {
9+
icons: ['simple-icons']
10+
},
411
devtools: { enabled: true },
512
imports: {
613
autoImport: true

playground/pages/index.vue

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script setup>
2+
const { session } = useUserSession()
3+
</script>
4+
5+
<template>
6+
<pre>{{ session }}</pre>
7+
</template>
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
export default oauth.githubEventHandler({
2-
onSuccess(event, res) {
3-
console.log(res)
2+
async onSuccess(event, { user }) {
3+
await setUserSession(event, {
4+
user: {
5+
github: user,
6+
}
7+
})
48

5-
return { success: true }
9+
return sendRedirect(event, '/')
610
}
711
})
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export default oauth.spotifyEventHandler({
2+
async onSuccess(event, { user }) {
3+
await setUserSession(event, {
4+
user: {
5+
spotify: user,
6+
}
7+
})
8+
9+
return sendRedirect(event, '/')
10+
}
11+
})

0 commit comments

Comments
 (0)