Auth & users
LioranClient exposes authentication + user management methods.
Related page: Maintenance & core APIs for snapshots, server pause/resume/stop, and core introspection endpoints.
connect() (URI auto-detect)
connect() chooses behavior based on your URI:
lioran://username:password@host:port→ logs in and stores a JWT tokenliorans://username:password@host:port→ same aslioran://, but uses HTTPSliorandb://dbUsername:dbPassword@host[:port]/databaseName→ uses connection-string mode (database-scoped identity)liorandbs://dbUsername:dbPassword@host[:port]/databaseName→ same asliorandb://, but uses HTTPShttp(s)://host:port→ no auto-login (calllogin()/superAdminLogin()orsetToken()/setConnectionString())
Example: lioran:// (username/password)
- TypeScript
- JavaScript
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient("lioran://admin:admin@localhost:4000");
await client.connect();
console.log(client.isAuthenticated(), client.getUser()?.role);
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient("lioran://admin:admin@localhost:4000");
await client.connect();
console.log(client.isAuthenticated(), client.getUser()?.role);
Example: liorandb:// (database-scoped connection string)
This mode authenticates as a single database only (no user-management APIs). In practice, database-scoped identities are meant for application traffic, not for admin/user-management endpoints.
- TypeScript
- JavaScript
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient(
"liorandb://db_user:db_pass@localhost:4000/app"
);
await client.connect();
const db = await client.db("app");
console.log(await db.collection("items").count());
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient(
"liorandb://db_user:db_pass@localhost:4000/app"
);
await client.connect();
const db = await client.db("app");
console.log(await db.collection("items").count());
login(username, password)
Use this with http:// or https:// URIs.
- TypeScript
- JavaScript
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient("http://localhost:4000");
await client.login("admin", "admin");
console.log(client.getToken());
import { LioranClient } from "@liorandb/driver";
const client = new LioranClient("http://localhost:4000");
await client.login("admin", "admin");
console.log(client.getToken());
superAdminLogin(secret)
Use the raw contents of the server secret.key.
- TypeScript
- JavaScript
import fs from "node:fs";
import { LioranClient } from "@liorandb/driver";
const secret = fs.readFileSync("./secret.key", "utf8").trim();
const client = new LioranClient("http://localhost:4000");
await client.superAdminLogin(secret);
console.log(client.getUser());
import fs from "node:fs";
import { LioranClient } from "@liorandb/driver";
const secret = fs.readFileSync("./secret.key", "utf8").trim();
const client = new LioranClient("http://localhost:4000");
await client.superAdminLogin(secret);
console.log(client.getUser());
Session helpers
setToken() / getToken()
- TypeScript
- JavaScript
client.setToken("<jwt>");
console.log(client.getToken());
client.setToken("<jwt>");
console.log(client.getToken());
setConnectionString() / getConnectionString()
- TypeScript
- JavaScript
client.setConnectionString("liorandb://db_user:db_pass@localhost:4000/app");
console.log(client.getConnectionString());
client.setConnectionString("liorandb://db_user:db_pass@localhost:4000/app");
console.log(client.getConnectionString());
isAuthenticated() / getUser() / logout()
- TypeScript
- JavaScript
console.log(client.isAuthenticated(), client.getUser());
client.logout();
console.log(client.isAuthenticated());
console.log(client.isAuthenticated(), client.getUser());
client.logout();
console.log(client.isAuthenticated());
User APIs (require JWT auth)
me()
- TypeScript
- JavaScript
const me = await client.me();
console.log(me.user.username);
const me = await client.me();
console.log(me.user.username);
register(...)
register() is a protected route (admins/super-admins).
- TypeScript
- JavaScript
await client.register({ userId: "editor", password: "secret123", role: "admin" });
await client.register({ userId: "editor", password: "secret123", role: "admin" });
listUsers()
- TypeScript
- JavaScript
const users = await client.listUsers();
console.log(users.map((u) => ({ userId: u.userId, role: u.role })));
const users = await client.listUsers();
console.log(users.map((u) => ({ userId: u.userId, role: u.role })));
issueUserToken(userId)
- TypeScript
- JavaScript
const out = await client.issueUserToken("editor");
console.log(out.token);
const out = await client.issueUserToken("editor");
console.log(out.token);
CORS helpers (require JWT auth)
updateMyCors(origins)
- TypeScript
- JavaScript
await client.updateMyCors(["https://app.example.com"]);
await client.updateMyCors(["https://app.example.com"]);
updateUserCors(userId, origins)
- TypeScript
- JavaScript
await client.updateUserCors("editor", ["https://app.example.com"]);
await client.updateUserCors("editor", ["https://app.example.com"]);
Public info APIs
health() / info()
- TypeScript
- JavaScript
console.log(await client.health());
console.log(await client.info());
console.log(await client.health());
console.log(await client.info());
Embedded docs APIs
listDocs() / getDoc(id)
- TypeScript
- JavaScript
const list = await client.listDocs();
const first = list.docs[0];
if (first) console.log(await client.getDoc(first.id));
const list = await client.listDocs();
const first = list.docs[0];
if (first) console.log(await client.getDoc(first.id));
Maintenance APIs
maintenanceStatus()
- TypeScript
- JavaScript
const status = await client.maintenanceStatus();
console.log(status.snapshots);
const status = await client.maintenanceStatus();
console.log(status.snapshots);
listSnapshots() / createSnapshotNow()
- TypeScript
- JavaScript
console.log(await client.listSnapshots());
console.log(await client.createSnapshotNow());
console.log(await client.listSnapshots());
console.log(await client.createSnapshotNow());
compactAllDatabases()
- TypeScript
- JavaScript
console.log(await client.compactAllDatabases());
console.log(await client.compactAllDatabases());
For server stop/pause/resume/restore and the core* introspection APIs, see Maintenance & core APIs.