mirror of
https://github.com/bitinflow/nuxt-oauth.git
synced 2026-03-13 13:45:59 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import {addRouteMiddleware, defineNuxtPlugin, navigateTo} from '#app'
|
|
import useAuth from "./composables/useAuth"
|
|
|
|
export default defineNuxtPlugin(() => {
|
|
addRouteMiddleware('auth', async (to) => {
|
|
const {user, authConfig, setBearerToken} = await useAuth()
|
|
|
|
if (to.path === authConfig.redirect.callback) {
|
|
const queryParams = new URLSearchParams(to.query.toString());
|
|
if (queryParams.has('error')) {
|
|
return navigateTo(authConfig.redirect.login)
|
|
}
|
|
|
|
const hashParams = new URLSearchParams(to.hash.substring(1))
|
|
|
|
if (hashParams.has('access_token')) {
|
|
const token = hashParams.get('access_token') as string;
|
|
const tokenType = hashParams.get('token_type') as string;
|
|
const expires = hashParams.get('expires_in') as string;
|
|
|
|
await setBearerToken(token, tokenType, parseInt(expires));
|
|
return navigateTo(authConfig.redirect.home)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
if (user.value === undefined) {
|
|
return navigateTo(authConfig.redirect.login)
|
|
}
|
|
})
|
|
|
|
addRouteMiddleware('guest', async () => {
|
|
const {user, authConfig} = await useAuth()
|
|
|
|
if (user.value !== undefined) {
|
|
return navigateTo(authConfig.redirect.home)
|
|
}
|
|
})
|
|
})
|