Vue wrapper for auth0-spa-js. As seen in Auth0's Vue: Login Tutorial.
- Make sure an application in the Auth0 dashboard has been created.
- Install this package, using
npm install @marketredesign/auth0-spa-vue
. - Import the
Auth0Plugin
Vue plugin, and optionally theauthGuard
into your application, usingimport { Auth0Plugin, authGuard } from "@marketredesign/auth0-spa-vue";
- Register the plugin with Vue:
Vue.use(Auth0Plugin, {
domain: 'The Auth0 login domain',
clientId: 'Auth0 client ID for this application',
onRedirectCallback: appState => {
router.push(
appState && appState.targetUrl
? appState.targetUrl
: 'default redirect'
);
}
});
Example template providing a login button:
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<HelloWorld msg="Welcome to Your Vue.js App" />
<!-- Check that the SDK client is not currently loading before accessing is methods -->
<div v-if="!$auth.state.loading">
<!-- show login when not authenticated -->
<button v-if="!$auth.state.isAuthenticated" @click="login">Login</button>
<!-- show logout when authenticated -->
<button v-if="$auth.state.isAuthenticated" @click="logout">Logout</button>
</div>
</div>
</template>
Define the login and logout functions for instance as follows.
login() {
this.$auth.loginWithRedirect();
}
logout() {
this.$auth.logout({
returnTo: window.location.origin
});
}
Once the user authenticates, the SDK extracts the user's profile information and stores it in memory.
It can be accessed using this.$auth.state.user
from inside a Vue component.
Routes can be protected by specifying beforeEnter: authGuard
.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project to NPM.
- NodeJS >= 10
- Clone the repository
- Execute
npm install
- Make sure you are logged into NPM using
npm adduser
- Verify the version is correct using
npm version
- Publish the package using
npm publish
- Marijn van der Horst - Initial work
See also the list of contributors who participated in this project.
This project is licensed under the MRD License - see the LICENSE file for details