Overview

type Options = {
  initSync?: boolean

  //var
  rolesKey?: string
  rememberKey?: string
  userKey?: string
  staySignedInKey?: string
  tokenDefaultKey?: string
  tokenImpersonateKey?: string
  stores?: (
    | "cookie"
    | "storage"
    | {
        set: <T>(key: string, value: T, expires: boolean, auth: Auth) => void
        get: <T>(key: string) => T
        remove: (key: string) => void
      }
  )[]
  cookie?: CookieOptions

  // Redirects

  authRedirect?: RouteLocationRaw
  forbiddenRedirect?: RouteLocationRaw
  notFoundRedirect?: RouteLocationRaw

  // Http

  registerData?: HttpData & {
    keyUser?: string
    autoLogin?: boolean
    fetchUser?: boolean
    staySignedIn?: boolean
    remember?: boolean
  }
  loginData?: HttpData & {
    keyUser?: string
    fetchUser?: boolean
    staySignedIn?: boolean
    remember?: boolean
    cacheUser?: boolean
  }

  logoutData?: HttpData & {
    makeRequest?: boolean
  }
  fetchData?: HttpData & {
    keyUser?: string
    enabled?: boolean
    cache?: boolean
    enabledInBackground?: boolean
    waitRefresh?: boolean
  }
  refreshToken?: Omit<HttpData, "redirect"> & {
    enabled?: boolean
    enabledInBackground?: boolean
    interval?: number | false
  }
  impersonateData?: HttpData & {
    fetchUser?: boolean
    cacheUser?: boolean
  }
  unimpersonateData?: HttpData & {
    fetchUser?: boolean
    makeRequest?: boolean
    cacheUser?: boolean
  }
  oauth2Data?: HttpData & {
    fetchUser?: true
  }

  // Plugin

  plugins?: {
    router?: Router
  }

  // Driver

  drivers: {
    auth: AuthDriver
    http: {
      request: AxiosInstance
      invalidToken?: (auth: Auth, response: AxiosResponse) => boolean
    }
    oauth2?: {
      facebook?: OAuth2Driver
      google?: OAuth2Driver
    }
  }
}

The set of core options.

initSync

 @typeof boolean
 @default 'false'

The default vue-auth3 will not perform auth authentication until a router is processed which leads to inside dependencies receiving results that are not ready. this option allows vue-auth3 to authenticate on initialization

rolesKey

 @typeof string
 @default 'roles'

The default field to check against on the user object when using "auth meta" or $auth.check().

The key also supports dot notation as in "my.role.key".

References

rememberKey

 @typeof string
 @default 'auth_remember'

The name under which the remember string is stored under.

References

staySignedInKey

 @typeof string
 @default 'auth_stay_signed_in'

The name under which the staySignedIn option from login is stored.

References

tokenDefaultKey

 @typeof string
 @default 'auth_token_default'

The name under which the default token String is stored under.

References

tokenImpersonateKey

 @typeof string
 @default 'auth_token_impersonate'

The name under which the impersonate token String is stored under.

References

stores

 @typeof ("storage" | "cookie" | {
    get: (key: string) => any;
    set: (key: string, val: any, expires?: boolean) => void;
    remove: (key: string) => void;
 })[]
 @default ['storage', 'cookie']

The order in which to attempt storage of "token" and "remember" String data.

References

 @typeof {
    path?: string;
    domain?: string | number;
    secure?: boolean;
    expires?: number;
    sameSite?: string;
 }
 @default  {
    path: "/",
    domain: void 0,
    secure: true,
    expires: 12096e5,
    sameSite: "None",
  }

The default params that will be set on cookies when cookie storage is enabled.

References

authRedirect

 @typeof RouteLocationRaw;
 @default {
    path: "/login"
 }

The router redirect to use if any authentication is required on a route.

This will trigger if meta.auth is set to anything other than undefined or false.

This also accepts a callback function which passes the transition for dynamic handling.

References

forbiddenRedirect

 @typeof RouteLocationRaw;
 @default {
    path: "/403"
 }

The router redirect to use if a route is forbidden.

This will trigger if the user object's role property does not match up with the auth value.

This also accepts a callback function which passes the transition for dynamic handling.

References

notFoundRedirect

 @typeof RouteLocationRaw;
 @default {
    path: "/404"
 }

The router redirect to use if route is "not found".

Typically used to hide pages while logged in. For instance we don't want the user to access a login or register page while they are authenticated. Hence a "404 Not Found".

This will trigger if auth.meta is set to false and the user is already authenticated.

This also accepts a callback function which passes the transition for dynamic handling.

References

registerData

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  autoLogin?: boolean
  fetchUser?: boolean
  staySignedIn?: boolean
  remember?: boolean
};
@default {
  url: "auth/register",
  method: "POST",
  redirect: "/login",
  autoLogin: false,
}

Default register request data.

If the autoLogin is enabled it will subsequently trigger a login call. All options available to the login method will also be available here.

References

autoLogin

@typeof boolean;

Specify when the user should be auto logged in.

Used in register method.

staySignedIn

@typeof boolean;

Specify whether the token data stored will be long lived or not.

Meaning does it expire after the browser is closed or not.

loginData

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  fetchUser?: boolean
  staySignedIn?: boolean
  remember?: boolean
  cacheUser?: boolean
}
@default{
  url: "auth/login",
  method: "POST",
  redirect: "/",
  fetchUser: true,
  staySignedIn: true,
}

Default login request data.

References

logoutData

 @typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
    makeRequest?: boolean
  }
 @default {
    url: "auth/logout",
    method: "POST",
    redirect: "/",
    makeRequest: false,
  },

Default logout request data.

References

oauth2Data

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  fetchUser?: true
}
@default {
  url: "auth/social",
  method: "POST",
  redirect: "/",
  fetchUser: true,
},

Default oauth2 request data.

After a token is received and the API request is made this will execute via the login method. All options available to the login method will also be available here.

References

fetchData

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  enabled?: boolean
  cache?: boolean
  enabledInBackground?: boolean
}
@default{
  url: "auth/user",
  method: "GET",
  enabled: true,
},

Default fetch request data.

References

refreshToken

@typeof AxiosRequestConfig & {
  enabled?: boolean
  enabledInBackground?: boolean
  interval?: number | false
}
@default{
  url: "auth/refresh",
  method: "GET",
  enabled: true,
  interval: 30,
},

Default refresh request data.

References

interval

@typeof number;

Specity interval length for a feature.

This is used primarily to keep token alive while a user is active on the app.

impersonateData

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  fetchUser?: boolean
  cacheUser?: boolean
}
@default {
  url: "auth/impersonate",
  method: "POST",
  redirect: "/",
  fetchUser: true,
},

Default impersonate request data.

References

unimpersonateData

@typeof  AxiosRequestConfig & {
  redirect?: RouteLocationRaw
  fetchUser?: boolean
  makeRequest?: boolean
  cacheUser?: boolean
}
@default {
  url: "auth/unimpersonate",
  method: "POST",
  redirect: "/admin",
  fetchUser: true,
  makeRequest: false,
},

Default unimpersonate request data.

References