mirror of https://github.com/veypi/OneAuth.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
916 B
JavaScript
37 lines
916 B
JavaScript
import routes from './routes.js'
|
|
import token from './token.js'
|
|
|
|
export default ($env) => {
|
|
console.log($env, $vyes.root)
|
|
token.setBaseUrl($env.root)
|
|
token.wrapAxios($env.$axios)
|
|
$env.$G.token = token
|
|
let user = token.body()
|
|
$env.$G.user = user
|
|
|
|
|
|
$env.$router.addRoutes(routes)
|
|
$env.$router.beforeEnter = async (to, from, next) => {
|
|
if (to.meta && to.meta.auth) {
|
|
if (token.isExpired()) {
|
|
await token.refresh()
|
|
}
|
|
if (token.isExpired()) {
|
|
token.logout(to.fullPath)
|
|
}
|
|
if (!token.check('app', '', 2)) {
|
|
next('/')
|
|
}
|
|
} else {
|
|
next();
|
|
}
|
|
};
|
|
$env.$axios.interceptors.response.use(function(response) {
|
|
return response?.data || response;
|
|
}, function(error) {
|
|
console.error('Axios Error:', error);
|
|
error = error?.response?.data || error?.response || error
|
|
return Promise.reject(error.message || error);
|
|
});
|
|
}
|