1.0.3 • Published 3 months ago

@eenvoud/eenvauth v1.0.3

Weekly downloads
-
License
Copyright
Repository
-
Last release
3 months ago

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

1.0.3

3 months ago

1.0.2

3 months ago

1.0.1

4 months ago

1.0.0

5 months ago