diff --git a/packages/client/package.json b/packages/client/package.json index b1aa112..20fff35 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@auth-tools/client", - "version": "0.0.1-alpha.5", + "version": "0.0.1-alpha.6", "description": "A structured authentication protocol for Javascript. (client)", "main": "dist/index.js", "repository": "https://github.com/auth-tools/auth-tools", diff --git a/packages/client/src/auth.ts b/packages/client/src/auth.ts index 7262829..a680cc5 100644 --- a/packages/client/src/auth.ts +++ b/packages/client/src/auth.ts @@ -15,7 +15,7 @@ import { createLogout } from "./methods/logout"; import { createRefresh } from "./methods/refresh"; import { createCheck } from "./methods/check"; -type MethodReturn = +export type MethodReturn = | { clientError: true; res: null } | { clientError: false; res: AuthResponse }; @@ -88,4 +88,21 @@ export class AuthClient extends AuthBase< check: createCheck(this._internal), }; } + + //check if user is logged in + public async isLoggedIn(): Promise { + const checkResponse = await ( + this._internal.config.connector as AuthClientConnector<"check"> + )("check", {}); + + if (checkResponse.clientError) return false; + if (!checkResponse.res.error) return true; + + const refreshResponse = await ( + this._internal.config.connector as AuthClientConnector<"refresh"> + )("refresh", {}); + + if (refreshResponse.clientError) return false; + return !refreshResponse.res.error; + } }