@lacspace/auth
v2.1.1
Published
Authentication flows (login, register, token, refresh) for Lacspace APIs.
Downloads
1,183
Maintainers
Readme
@lacspace/auth
Authentication flows for Lacspace APIs — login, register, refresh — with the token applied for you.
Sign a user in and the bearer token is set on the shared client automatically — every request after that just works.
- 🔐 login · register · me · logout · refresh
- ⚡ Zero dependencies · 🌍 isomorphic · 📦 ESM + CJS · fully typed
Install
npm install @lacspace/auth # or pnpm add / yarn add / bun addQuick start
import { LacspaceAuth } from "@lacspace/auth";
const auth = new LacspaceAuth({ baseURL: "https://api.lacspace.com/api" });
const { token, user } = await auth.login({ email: "[email protected]", password: "••••••••" });
const me = await auth.me(); // already authenticated
await auth.logout();Recipes
Register
const { user } = await auth.register({ username: "ada", email: "[email protected]", password: "••••••••" });Persist & restore the session
// after login
localStorage.setItem("lac_token", token);
// on next app start
const saved = localStorage.getItem("lac_token");
if (saved) auth.setToken(saved);
// keep it fresh
const { token: fresh } = await auth.refresh();
localStorage.setItem("lac_token", fresh);Share one client across your app (so auth + your other calls use the same token)
import { LacspaceApi } from "@lacspace/api";
import { LacspaceAuth } from "@lacspace/auth";
const api = new LacspaceApi({ baseURL: "https://api.lacspace.com/api" });
const auth = new LacspaceAuth({ api });
await auth.login({ email, password });
const orders = await api.get("orders"); // authenticatedMatch your backend's routes
const auth = new LacspaceAuth({
baseURL,
endpoints: { login: "v2/sessions", register: "v2/users", me: "v2/users/me" },
});Defaults: auth/login, auth/register, auth/me, auth/logout, auth/refresh.
Show the right error
import { LacspaceApiError } from "@lacspace/api";
try {
await auth.login({ email, password });
} catch (err) {
if (err instanceof LacspaceApiError && err.status === 401) showMessage("Wrong email or password.");
}API
login(credentials) · register(data) · me() · logout() · refresh() · setToken(t) · getToken() · auth.api (the underlying LacspaceApi). login/register/refresh return { token, user } and apply the token.
The Lacspace family
| Package | For |
| --- | --- |
| @lacspace/sdk | Everything in one client |
| @lacspace/api | The core HTTP client |
| @lacspace/auth | Login, register, tokens (this package) |
| @lacspace/analytics | Event tracking |
| @lacspace/react | React hooks |
| @lacspace/nepali-date | Bikram Sambat dates |
| @lacspace/nepali-utils | Nepal helpers |
New in 2.1 — auto-refresh, storage & auth events
import { createAuth, localStorageTokenStorage } from "@lacspace/auth";
const auth = createAuth({
baseURL: "https://api.example.com",
storage: localStorageTokenStorage(), // persist token across reloads
autoRefresh: true, // 401 → refresh() once → retry, deduped
onAuthChange: (user) => render(user), // reactive UI
});
await auth.restore({ fetchUser: true }); // rehydrate session on startup
await auth.login({ email, password }); // token persisted, listeners notified
await auth.logout(); // clears local token tooLicensing
This package is free under the Lacspace Free Licence — MIT-equivalent freedoms. Use it in personal and commercial projects at no cost; just keep the notice.
Not every Lacspace package is free. We also offer Commercial (paid), Client-specific, and Private (proprietary) packages under separate terms. See the full Lacspace Licence Centre.
Part of the Lacspace ecosystem — 35 zero-dependency, isomorphic TypeScript packages.
