1.0.3 • Published 3 months ago
@eenvoud/eenvauth v1.0.3
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