@eenvoud/eenvauth
v1.0.3
Published
Eenvauth is an authentication package that streamlines the management of authentication flows within your application. It allows you to control and handle secure routes, manage tokens, and interact seamlessly with backend services for sign-in and sign-out
Downloads
15
Maintainers
Readme
Eenvauth
This package helps to interface between the backend authentication and, usually, a vue package.
Options
declare type Options = {
/**
* @param url The url to fetch the user from
* @param method The method to use to fetch the user
*/
fetchData: {
url: HttpData['url'],
method: HttpData['method'],
},
/**
* @param fetchUser Whether or not to fetch the user after logging in
* @param url The url to log the user in from
* @param method The method to use to log the user in
*/
loginData: {
fetchUser?: boolean,
url: HttpData['url'],
method: HttpData['method'],
},
/**
* @param interval The interval at which to refresh the token, must be in minutes
* @param url The url to refresh the token from
* @param method The method to use to refresh the token
*/
refreshData?: {
interval?: number,
url: HttpData['url'],
method: HttpData['method'],
},
/**
* @param url The url to log the user out from
* @param method The method to use to log the user out
*/
logoutData: {
url: HttpData['url'],
method: HttpData['method'],
},
/**
* @param apiLibrary The library to use to make http requests. This is used to set the driver automatically
*/
apiLibrary: AxiosStatic | undefined,
/**
* @param persistTokenKey The key we use to store the token in localstorage
* @param persistExpiryKey The key we use to store the expiry timestamp in localstorage
*/
persistTokenKey: string | null,
persistExpiryKey: string | null,
}
How to use
// plugins/auth.ts
import { useAuth } from "@eenvoud/eenvauth"
import axios from "axios"
export default {
install () {
useAuth().create({
fetchData: {
url: '/auth/user',
method: 'GET'
},
refreshData: {
url: '/sanctum/refresh/token',
method: 'POST'
},
loginData: {
url: '/login',
method: 'POST'
},
logoutData: {
url: '/logout',
method: 'POST'
},
apiLibrary: axios
})
}
}
and install it into vue
// main.ts
import auth from "plugins/auth"
// Define your vue application like usual and then add the plugin
app.use(auth)
And then call the helper functions:
useAuth().login(payload);
useAuth().logout();
useAuth().fetch();
useAuth().refresh();
Auto-refresh and refresh based on an expiry date set in a response are available as well