UNPKG

@lucasroll62/nuxt3-auth

Version:

An alternative module to @nuxtjs/auth

152 lines (101 loc) 4.33 kB
> Alternative Auth module for [Nuxt](https://nuxt.com) ## Info This module is meant as an alternative to @nuxtjs/auth, except this is for nuxt3 only with no backwards compatibility support. This will only work with pinia, I had originally had it work with vuex, but since that is in maintenece mode, I decided to switch to pinia. If you find any bugs please do tell me, I'm still working on this. ## Setup 1. Add `@nuxt-alt/auth` `@pinia/nuxt` `pinia` and `@nuxt-alt/http` dependency to your project ```bash yarn add @nuxt-alt/auth @nuxt-alt/http @pinia/nuxt pinia ``` 2. Add `@nuxt-alt/auth` and `@pinia/nuxt` to the `modules` section of `nuxt.config.ts` **Note:** you dont need to specify `@nuxt-alt/http`, it will automatically be added but if you want to manually add it, make sure it is below the auth module (and above the proxy module if you are using it) ```ts export default defineNuxtConfig({ modules: [ '@nuxt-alt/auth', '@pinia/nuxt' ], auth: { /* module options */ } }); ``` ## Changes The module now uses '@nuxt-alt/http' to function, that module extends ohmyfetch. Please note that if you were using `data` to post data, you now need to use `body` since this is what `ohmyfetch` uses. If you intend to use ssr, please consider using the `@nuxt-alt/proxy` module. ## Composable A `useAuth()` composable is availale to use to access the auth methods. ## Options Most of the options are taken directly from the [@nuxtjs/auth](https://auth.nuxtjs.org/api/options) module. In addition there are some extra options available. ### `globalMiddleware` - Type: `Boolean` - Default: `false` Enables/disables the middleware to be used globally. ### `enableMiddleware` - Type: `Boolean` - Default: `true` Enables/disables the built-in middleware. ### `pinia.namespace` - Type: `String` - Default: `auth` Changed from vuex to pinia, this is the namespace to use for the pinia store. ### `sessionStorage` - Type: `String | False` - Default: `auth.` Similar to the localstorage option, there is a session storage options available for you to use. ### `redirectStrategy` - Type: `query | storage` - Default: `storage` The type of redirection strategy you want to use, `storage` utilizng localStorage for redirects, `query` utilizing the route query parameters. ## Tokens (Types) In addition to [Auth Tokens](https://auth.nuxtjs.org/api/tokens); By default the `$auth.strategy` getter uses the `Scheme` type which does not have `token` or `refreshToken` property types. To help with this, a `$auth.refreshStrategy` and a `$auth.tokenStrategy` getter have been added for typing. They all do the same thing, this is just meant for type hinting. ## Cookie-based auth The cookie scheme has been decoupled from the local scheme as it does not utitlize tokens, rather it it uses cookies. There is a new `cookie.server` property, this indicates that the cookie we will be looking for will be set upon login otherwise we will be looking at a client/browser cookie. There has also been 2 user properties one for the client/browser and one for the server. An example config looks like this: ```ts auth: { strategies: { localStorage: false, cookie: { cookie: { server: true }, endpoints: { login: { url: '/api/user/login', method: 'post' }, user: { url: '/api/user/me', method: 'get' } }, user: { property: { client: false, server: false } } }, } } ``` ## Oauth2 Oauth2 now has client window authentication thanks to this pull request: https://github.com/nuxt-community/auth-module/pull/1746 Properties have been changed to: ### `clientWindow` - Type: `Boolean` - Default: `false` Enable/disable the use of a popup for client authentication. ### `clientWidth` - Type: `Number` - Default: `400` The width of the client window. ### `clientHieght` - Type: `Number` - Default: `600` The width of the client window. ## Aliases Available aliases to use within nuxt - `#auth/runtime` - `#auth/utils` - `#auth/providers`