NuAuth

Oauth2 Client for Nuxt
Compabilities
Instalation
yarn add --dev @privyid/nuauth
Then, add into nuxt.config.ts modules
export default defineNuxtConfig({
modules: ['@privyid/nuauth'],
build : { transpile: ['@privyid/nuauth'] },
})
Usage
import { useNuAuth } from '@privyid/nuauth/core'
const {
token,
isAlmostExpired,
login,
logout,
refresh,
} = useNuAuth()
token.value
login()
login('/dashboard')
logout()
logout('/dashboard')
if (isAlmostExpired(15)) {
await refresh()
}
Configuration
This module read enviroment variables directly.
| OAUTH_HOST | - | (Required) Oauth server's host |
| OAUTH_CLIENT_ID | - | (Required) Oauth Client ID |
| OAUTH_CLIENT_SECRET | - | (Required) Oauth Client Secret |
| OAUTH_REDIRECT_URI | /auth/callback | Oauth Callback URI |
| OAUTH_SCOPE | public read | Oauth scope |
| OAUTH_LOGOUT_URI | - | Oauth Logout URI |
| OAUTH_HOME | / | Redirect path after success login |
| OAUTH_REGISTER | false | Add params register to Oauth Server |
| OAUTH_REDIRECT_WHITELIST | - | Redirect path after success login whitelist, for multiple value, use ; as delimeter |
| OAUTH_DENIED_REDIRECT | Same as OAUTH_HOME | Redirect path after user after denying the authorization request |
| OAUTH_AUTHORIZE_PATH | /oauth/authorize | URL path to request an authorization code |
| OAUTH_TOKEN_PATH | /oauth/token | URL path to obtain access tokens |
| OAUTH_REVOKE_PATH | /oauth/revoke | URL path to revoke access tokens |
| OAUTH_REFRESH_PATH | Same as OAUTH_TOKEN_PATH | URL path to refresh access tokens |
👉 See .env.example for example
Cookie Serialize Config
You can change default cookie config. Add this in your nuxt.config.ts
export default defineNuxtConfig({
nuauth : {
cookie: {
httpOnly: true,
sameSite: 'none',
path : '/',
secure : true,
},
}
})
👉 See here for all cookie options.
Multiple Server Profile
Since 0.4.0, you can target more than one oauth server.
- Add new profile in your
nuxt.config.ts
export default defineNuxtConfig({
nuauth: {
profile: {
default: 'oauth',
names : [
'oauth',
'github',
]
}
}
})
-
Your profile's name will become prefix on config env. ex: If your profile's name github, your env will became:
GITHUB_HOST
GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET,
GITHUB_REDIRECT_URI
- etc.
-
In your component, explicit the profile you want to use.
import { useNuAuth } from '@privyid/nuauth/core'
const {
token,
isAlmostExpired,
login,
logout,
refresh,
} = useNuAuth('github')
Disable redirection page
To prevent displaying the redirection page, you can set the sameSite attribute of the cookie to lax or none.
export default defineNuxtConfig({
nuauth: {
cookie: {
sameSite: 'lax',
}
}
})
Middleware Guard
Since 0.7.0, NuAuth include global middleware which redirect to login page if user not authenticated.
If you want disabled it in some page, you can use set meta page auth to false.
<script setup lang="ts">
import { definePageMeta } from '#imports'
definePageMeta({ auth: false })
</script>
Or you can set auth profile using it
<script setup lang="ts">
import { definePageMeta } from '#imports'
definePageMeta({ auth: 'github' })
</script>
Or if you want disable redirect on every pages:
export default defineNuxtConfig({
nuauth: {
middleware: false,
}
})
Contribution
- Clone this repository
- Play Nyan Cat in the background (really important!)
- Enable Corepack using
corepack enable (use npm i -g corepack for Node.js < 16.10)
- Run
yarn install
- Run
yarn dev:prepare to generate type stubs.
- Use
yarn dev to start playground in development mode.
License
MIT License