Skip to content
0

katanakit-js / IAuthProvider

Interface: IAuthProvider ​

Defined in: src/core/services/auth.service.ts:65

An identity provider the kit can ask "who is this?".

This is the whole authentication surface. The kit does not re-expose the provider's API — signing in, refreshing tokens and revoking sessions belong to the provider's own SDK, which already does them correctly for that provider. What the kit needs is a single normalised answer so that authorization never has to know which provider produced it.

The contract has exactly two answers. A visitor is { ok: true, data: null } — not an error, because "nobody" is a legitimate answer. Only a real failure (misconfigured provider, unreachable backend, malformed response) is ok: false. Collapsing those two is how a broken provider starts reading as "nobody is logged in" and silently opens a public route.

Implement it for any IdP: the two shipped are Better Auth and InsForge.

Example ​

A deployment's own provider

ts
const nationalId: IAuthProvider = {
  provider: "dni",
  methods: ["password"],
  async useResolve(input) {
    const token = bearer(input);
    if (!token) return { data: null, error: null, ok: true };
    const person = await registry.lookup(token);
    return person
      ? { data: { subject: person.id, method: "password", provider: "dni" }, error: null, ok: true }
      : { data: null, error: null, ok: true };
  },
};

Properties ​

PropertyModifierTypeDescriptionDefined in
methods?readonlyreadonly string[]Methods this deployment enabled — "password", "oauth:google", "otp", "passkey". Informational: it describes the deployment's configuration, and never feeds into authorization.src/core/services/auth.service.ts:73
providerreadonlystringStable id used to select this provider, e.g. "better-auth".src/core/services/auth.service.ts:67

Methods ​

useResolve() ​

ts
useResolve(input): Promise<AuthResult<
  | {
  claims?: Record<string, unknown>;
  email?: string;
  emailVerified?: boolean;
  method: string;
  provider: string;
  subject: string;
}
| null>>;

Defined in: src/core/services/auth.service.ts:75

Resolves the caller. Returns null data for an anonymous request.

Parameters ​

ParameterType
inputAuthRequestLike

Returns ​

Promise<AuthResult< | { claims?: Record<string, unknown>; email?: string; emailVerified?: boolean; method: string; provider: string; subject: string; } | null>>

Released under the MIT License.