@gauts/auth 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +465 -438
  2. package/SECURITY.md +44 -1
  3. package/dist/adapters/hono/index.d.ts +33 -19
  4. package/dist/adapters/hono/index.d.ts.map +1 -1
  5. package/dist/adapters/hono/index.js +134 -55
  6. package/dist/adapters/hono/index.js.map +1 -1
  7. package/dist/adapters/next/index.d.ts +24 -0
  8. package/dist/adapters/next/index.d.ts.map +1 -0
  9. package/dist/adapters/next/index.js +90 -0
  10. package/dist/adapters/next/index.js.map +1 -0
  11. package/dist/adapters/prisma/index.d.ts +12 -4
  12. package/dist/adapters/prisma/index.d.ts.map +1 -1
  13. package/dist/adapters/prisma/index.js +95 -9
  14. package/dist/adapters/prisma/index.js.map +1 -1
  15. package/dist/auth.d.ts +8 -6
  16. package/dist/auth.d.ts.map +1 -1
  17. package/dist/auth.js +7 -9
  18. package/dist/auth.js.map +1 -1
  19. package/dist/client/index.d.ts +5 -0
  20. package/dist/client/index.d.ts.map +1 -1
  21. package/dist/client/index.js +6 -1
  22. package/dist/client/index.js.map +1 -1
  23. package/dist/config.d.ts +2 -2
  24. package/dist/config.d.ts.map +1 -1
  25. package/dist/config.js +8 -7
  26. package/dist/config.js.map +1 -1
  27. package/dist/errors.d.ts +1 -1
  28. package/dist/errors.d.ts.map +1 -1
  29. package/dist/errors.js.map +1 -1
  30. package/dist/index.d.ts +2 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/session/cache.d.ts +32 -0
  33. package/dist/session/cache.d.ts.map +1 -0
  34. package/dist/session/cache.js +136 -0
  35. package/dist/session/cache.js.map +1 -0
  36. package/dist/session/cookie.d.ts +15 -0
  37. package/dist/session/cookie.d.ts.map +1 -0
  38. package/dist/session/cookie.js +31 -0
  39. package/dist/session/cookie.js.map +1 -0
  40. package/dist/session/guards.d.ts +6 -0
  41. package/dist/session/guards.d.ts.map +1 -0
  42. package/dist/session/guards.js +23 -0
  43. package/dist/session/guards.js.map +1 -0
  44. package/dist/session/service.d.ts +2 -3
  45. package/dist/session/service.d.ts.map +1 -1
  46. package/dist/session/service.js +117 -162
  47. package/dist/session/service.js.map +1 -1
  48. package/dist/session/types.d.ts +47 -58
  49. package/dist/session/types.d.ts.map +1 -1
  50. package/package.json +9 -10
  51. package/dist/adapters/redis/index.d.ts +0 -11
  52. package/dist/adapters/redis/index.d.ts.map +0 -1
  53. package/dist/adapters/redis/index.js +0 -62
  54. package/dist/adapters/redis/index.js.map +0 -1
  55. package/dist/session/schema.d.ts +0 -5
  56. package/dist/session/schema.d.ts.map +0 -1
  57. package/dist/session/schema.js +0 -56
  58. package/dist/session/schema.js.map +0 -1
package/SECURITY.md CHANGED
@@ -1,3 +1,46 @@
1
1
  # Security Policy
2
2
 
3
- {}
3
+ ## Supported versions
4
+
5
+ Security fixes are provided for the latest published minor version.
6
+
7
+ | Version | Supported |
8
+ | --- | --- |
9
+ | `0.3.x` | Yes |
10
+ | `< 0.3` | No |
11
+
12
+ ## Reporting a vulnerability
13
+
14
+ Do not report suspected vulnerabilities through public GitHub issues or discussions.
15
+
16
+ Use [GitHub private vulnerability reporting](https://github.com/GVALFER/GAUTS-AUTH/security/advisories/new) and include:
17
+
18
+ - the affected package version;
19
+ - a clear description of the impact;
20
+ - reproduction steps or a minimal proof of concept;
21
+ - any known mitigations;
22
+ - whether the report may be disclosed after a fix is available.
23
+
24
+ Reports are reviewed privately. A public advisory and patched release will be prepared when the issue is confirmed.
25
+
26
+ ## Scope
27
+
28
+ Security reports may cover the password service, session core, database adapters, framework adapters, published package contents, or dependency supply chain.
29
+
30
+ Application-specific authorization, rate limiting, CSRF, CORS, proxy trust, deployment, and database access policies remain the consuming application's responsibility unless the vulnerability is caused by package behavior.
31
+
32
+ ## Signed session cache
33
+
34
+ The optional browser cache is disabled when omitted. When configured, it is accepted only for `GET` and `HEAD` requests and is signed with HMAC-SHA-256 using an application-provided secret of at least 32 bytes.
35
+
36
+ The cache is bound to the opaque session token, its own expiry, the authoritative session expiry, and the configured client fields. Invalid cache data never authenticates a request; it causes normal database validation.
37
+
38
+ Cookie caching introduces a bounded consistency window. A session revoked on another device, or account/user access changed in the database, may remain readable until the cache TTL expires. Unsafe methods, renewal, logout, WebSockets, and direct core calls always validate through the database. Applications requiring immediate cross-device read revocation must leave the cache disabled or provide shared server-side enforcement outside this package.
39
+
40
+ Keep `AUTH_SECRET` in the API environment. Do not expose it to browser code or share it with a frontend merely to inspect the renewal marker. The marker is intentionally untrusted and never authenticates or renews a session by itself.
41
+
42
+ ## Session lifetime
43
+
44
+ Sliding renewal is limited by `session.maxLifetime`, which defaults to 30 days from the original login. The maximum expiry is derived from the immutable session `created_at` value and enforced by the core during resolution and renewal. Browser cookies and cached session data never outlive the authoritative session expiry.
45
+
46
+ Activity and possession of the session token cannot extend this absolute limit. After it is reached, the user must authenticate again and receive a new session token.
@@ -1,45 +1,59 @@
1
1
  import type { Context, Env, MiddlewareHandler } from "hono";
2
2
  import { type Auth, type AuthDeps } from "../../auth.js";
3
- import type { Session } from "../../session/types.js";
4
- export type HonoAuthVariables<TData extends object> = {
5
- account: TData;
6
- session: Session<TData>;
3
+ import { type SessionCacheConfig } from "../../session/cache.js";
4
+ import type { AuthAccount, AuthUser, ResolvedSession, Session } from "../../session/types.js";
5
+ export type { SessionCacheConfig } from "../../session/cache.js";
6
+ export type HonoAuthVariables = {
7
+ account: AuthAccount;
8
+ session: Session;
9
+ user: AuthUser;
7
10
  };
8
- export type HonoAuthEnv<TData extends object> = Env & {
9
- Variables: HonoAuthVariables<TData>;
11
+ export type HonoAuthEnv = Env & {
12
+ Variables: HonoAuthVariables;
10
13
  };
11
14
  export type HonoCookieConfig = {
15
+ cacheName?: string;
12
16
  domain?: string;
13
17
  name?: string;
14
18
  path?: string;
19
+ renewName?: string;
15
20
  sameSite?: "Strict" | "Lax" | "None";
16
21
  secure?: boolean;
17
22
  };
18
23
  export type HonoGetIp = (c: Context) => Promise<string | null | undefined> | string | null | undefined;
19
- export type HonoAdapterConfig<TData extends object> = {
20
- auth: Auth<TData>;
24
+ type HonoCacheOptions = {
25
+ cache: SessionCacheConfig;
26
+ secret: string;
27
+ } | {
28
+ cache?: undefined;
29
+ secret?: string;
30
+ };
31
+ export type HonoAdapterConfig = {
32
+ auth: Auth;
33
+ cache?: SessionCacheConfig;
21
34
  cookie?: HonoCookieConfig;
22
35
  getIp: HonoGetIp;
36
+ secret?: string;
23
37
  };
24
- export type HonoAuthConfig = AuthDeps & {
38
+ type HonoAuthBase = AuthDeps & {
25
39
  cookie?: HonoCookieConfig;
26
40
  getIp: HonoGetIp;
27
41
  };
28
- type CreateSessionInput<TData extends object> = {
42
+ export type HonoAuthConfig = HonoAuthBase & HonoCacheOptions;
43
+ type CreateSessionInput = {
29
44
  account_id: string;
30
45
  context: Context;
31
- data: TData;
32
46
  };
33
- export type HonoAdapter<TData extends object> = {
47
+ export type HonoAdapter = {
34
48
  clearSession(c: Context): void;
35
- createSession(input: CreateSessionInput<TData>): Promise<Session<TData>>;
49
+ createSession(input: CreateSessionInput): Promise<Session>;
36
50
  getToken(c: Context): string | null;
37
- requireSession: MiddlewareHandler<HonoAuthEnv<TData>>;
38
- resolveSession(c: Context): Promise<Session<TData>>;
51
+ renewSession(c: Context): Promise<Session>;
52
+ requireSession: MiddlewareHandler<HonoAuthEnv>;
53
+ resolveSession(c: Context): Promise<ResolvedSession>;
39
54
  revokeSession(c: Context): Promise<string[]>;
40
55
  };
41
- export type HonoAuth<TData extends object> = Auth<TData> & HonoAdapter<TData>;
42
- export declare const createHonoAdapter: <TData extends object>({ auth, cookie, getIp, }: HonoAdapterConfig<TData>) => HonoAdapter<TData>;
43
- export declare const createHonoAuth: <TData extends object = Record<string, unknown>>({ cookie, db, getIp, password, redis, session, }: HonoAuthConfig) => HonoAuth<TData>;
44
- export {};
56
+ export type HonoAuth = Auth & HonoAdapter;
57
+ export declare const createHonoAdapter: ({ auth, cache, cookie, getIp, secret, }: HonoAdapterConfig) => HonoAdapter;
58
+ export declare const createHonoAuth: ({ cache, cookie, db, getIp, password, secret, session, }: HonoAuthConfig) => HonoAuth;
45
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI;IAClD,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,IAAI,GAAG,GAAG;IAClD,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACpB,CAAC,EAAE,OAAO,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,iBAAiB,CAAC,KAAK,SAAS,MAAM,IAAI;IAClD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IACpC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAAI;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,MAAM,IAAI;IAC5C,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAyD9E,eAAO,MAAM,iBAAiB,GAAI,KAAK,SAAS,MAAM,EAAE,0BAIrD,iBAAiB,CAAC,KAAK,CAAC,KAAG,WAAW,CAAC,KAAK,CAiI9C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,KAAK,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,kDAO5E,cAAc,KAAG,QAAQ,CAAC,KAAK,CAgBjC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE9F,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOjE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG;IAC5B,SAAS,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACpB,CAAC,EAAE,OAAO,KACT,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEpE,KAAK,gBAAgB,GACf;IACI,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAClB,GACD;IACI,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAER,MAAM,MAAM,iBAAiB,GAAG;IAC5B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,YAAY,GAAG,QAAQ,GAAG;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,gBAAgB,CAAC;AAE7D,KAAK,kBAAkB,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAcF,MAAM,MAAM,WAAW,GAAG;IACtB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC;AAoD1C,eAAO,MAAM,iBAAiB,GAAI,yCAM/B,iBAAiB,KAAG,WA0NtB,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,0DAQ5B,cAAc,KAAG,QAiBnB,CAAC"}
@@ -1,35 +1,32 @@
1
1
  import { deleteCookie, getCookie, setCookie } from "hono/cookie";
2
2
  import { createAuth } from "../../auth.js";
3
3
  import { createError, isAuthError } from "../../errors.js";
4
- const COOKIE_NAME_PATTERN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
4
+ import { createSessionCache } from "../../session/cache.js";
5
+ import { parseSessionToken, RENEW_COOKIE_VALUE, resolveSessionCookieNames, } from "../../session/cookie.js";
5
6
  const resolveCookie = (config = {}) => {
6
- const name = config.name ?? "__Host-session";
7
+ const names = resolveSessionCookieNames(config);
7
8
  const path = config.path ?? "/";
8
9
  const sameSite = config.sameSite ?? "Lax";
9
10
  const secure = config.secure ?? true;
10
- if (!COOKIE_NAME_PATTERN.test(name)) {
11
- throw createError({
12
- code: "AUTH_CONFIG_INVALID",
13
- message: "Session cookie name is invalid.",
14
- });
15
- }
16
11
  if (!path.startsWith("/")) {
17
12
  throw createError({
18
13
  code: "AUTH_CONFIG_INVALID",
19
14
  message: "Session cookie path must start with /.",
20
15
  });
21
16
  }
22
- if (name.startsWith("__Host-") && (!secure || path !== "/" || config.domain)) {
23
- throw createError({
24
- code: "AUTH_CONFIG_INVALID",
25
- message: "__Host- cookies require secure=true, path=/, and no domain.",
26
- });
27
- }
28
- if (name.startsWith("__Secure-") && !secure) {
29
- throw createError({
30
- code: "AUTH_CONFIG_INVALID",
31
- message: "__Secure- cookies require secure=true.",
32
- });
17
+ for (const name of Object.values(names)) {
18
+ if (name.startsWith("__Host-") && (!secure || path !== "/" || config.domain)) {
19
+ throw createError({
20
+ code: "AUTH_CONFIG_INVALID",
21
+ message: "__Host- cookies require secure=true, path=/, and no domain.",
22
+ });
23
+ }
24
+ if (name.startsWith("__Secure-") && !secure) {
25
+ throw createError({
26
+ code: "AUTH_CONFIG_INVALID",
27
+ message: "__Secure- cookies require secure=true.",
28
+ });
29
+ }
33
30
  }
34
31
  if (sameSite === "None" && !secure) {
35
32
  throw createError({
@@ -38,7 +35,7 @@ const resolveCookie = (config = {}) => {
38
35
  });
39
36
  }
40
37
  return {
41
- name,
38
+ names,
42
39
  options: {
43
40
  ...(config.domain ? { domain: config.domain } : {}),
44
41
  httpOnly: true,
@@ -48,7 +45,8 @@ const resolveCookie = (config = {}) => {
48
45
  },
49
46
  };
50
47
  };
51
- export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
48
+ const canUseCache = (method) => method === "GET" || method === "HEAD";
49
+ export const createHonoAdapter = ({ auth, cache, cookie, getIp, secret, }) => {
52
50
  if (typeof getIp !== "function") {
53
51
  throw createError({
54
52
  code: "AUTH_CONFIG_INVALID",
@@ -56,48 +54,131 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
56
54
  });
57
55
  }
58
56
  const resolved = resolveCookie(cookie);
57
+ let cacheService = null;
58
+ if (cache !== undefined) {
59
+ if (typeof secret !== "string") {
60
+ throw createError({
61
+ code: "AUTH_CONFIG_INVALID",
62
+ message: "Authentication secret is required when session cache is configured.",
63
+ });
64
+ }
65
+ cacheService = createSessionCache({
66
+ config: cache,
67
+ secret,
68
+ session: auth.config.session,
69
+ });
70
+ }
59
71
  const getSessionClient = async (c) => ({
60
72
  agent: c.req.header("user-agent") ?? null,
61
73
  ip: (await getIp(c)) ?? null,
62
74
  platform: c.req.header("sec-ch-ua-platform") ?? null,
63
75
  });
64
76
  const getToken = (c) => {
65
- const token = getCookie(c, resolved.name)?.trim();
66
- return token?.length ? token : null;
77
+ return parseSessionToken(getCookie(c, resolved.names.name));
78
+ };
79
+ const setSession = ({ context, session: value, token }) => {
80
+ setCookie(context, resolved.names.name, token, {
81
+ ...resolved.options,
82
+ expires: value.expires_at,
83
+ });
84
+ setCookie(context, resolved.names.renewName, RENEW_COOKIE_VALUE, {
85
+ ...resolved.options,
86
+ expires: value.renew_at,
87
+ });
67
88
  };
68
- const setToken = ({ context, expires_at, token, }) => {
69
- setCookie(context, resolved.name, token, {
89
+ const setCache = ({ context, resolved: value, token }) => {
90
+ if (!cacheService) {
91
+ return;
92
+ }
93
+ const cached = cacheService.create({ resolved: value, token });
94
+ setCookie(context, resolved.names.cacheName, cached.value, {
70
95
  ...resolved.options,
71
- expires: expires_at,
96
+ expires: cached.expires_at,
72
97
  });
73
98
  };
99
+ const clearCache = (c) => {
100
+ if (cacheService) {
101
+ deleteCookie(c, resolved.names.cacheName, resolved.options);
102
+ }
103
+ };
74
104
  const clearSession = (c) => {
75
- deleteCookie(c, resolved.name, resolved.options);
105
+ deleteCookie(c, resolved.names.name, resolved.options);
106
+ deleteCookie(c, resolved.names.cacheName, resolved.options);
107
+ deleteCookie(c, resolved.names.renewName, resolved.options);
108
+ };
109
+ const requireToken = (c) => {
110
+ const token = getToken(c);
111
+ if (!token) {
112
+ clearSession(c);
113
+ throw createError({
114
+ code: "SESSION_INVALID",
115
+ message: "Authentication required.",
116
+ });
117
+ }
118
+ return token;
76
119
  };
77
- const createSession = async ({ account_id, context, data, }) => {
120
+ const resolveDbSession = async ({ client, context, token, }) => {
121
+ let value;
122
+ try {
123
+ value = await auth.session.resolve({ client, token });
124
+ }
125
+ catch (error) {
126
+ if (isAuthError(error) && error.code === "SESSION_CLIENT_MISMATCH") {
127
+ clearSession(context);
128
+ }
129
+ throw error;
130
+ }
131
+ if (!value) {
132
+ clearSession(context);
133
+ throw createError({
134
+ code: "SESSION_INVALID",
135
+ message: "Authentication required.",
136
+ });
137
+ }
138
+ return value;
139
+ };
140
+ const createSession = async ({ account_id, context }) => {
78
141
  const created = await auth.session.create({
79
142
  account_id,
80
143
  client: await getSessionClient(context),
81
- data,
82
- });
83
- setToken({
84
- context,
85
- expires_at: created.session.expires_at,
86
- token: created.token,
87
144
  });
145
+ const value = {
146
+ account: created.account,
147
+ session: created.session,
148
+ user: created.user,
149
+ };
150
+ setSession({ context, session: created.session, token: created.token });
151
+ setCache({ context, resolved: value, token: created.token });
88
152
  return created.session;
89
153
  };
90
154
  const resolveSession = async (c) => {
91
- const token = getToken(c);
92
- if (!token) {
93
- throw createError({
94
- code: "SESSION_INVALID",
95
- message: "Authentication required.",
155
+ const token = requireToken(c);
156
+ const client = await getSessionClient(c);
157
+ const useCache = canUseCache(c.req.method);
158
+ if (cacheService && useCache) {
159
+ const cached = cacheService.resolve({
160
+ client,
161
+ token,
162
+ value: getCookie(c, resolved.names.cacheName),
96
163
  });
164
+ if (cached) {
165
+ return cached;
166
+ }
167
+ }
168
+ const value = await resolveDbSession({ client, context: c, token });
169
+ if (cacheService && useCache) {
170
+ setCache({ context: c, resolved: value, token });
171
+ }
172
+ else {
173
+ clearCache(c);
97
174
  }
98
- let resolvedSession;
175
+ return value;
176
+ };
177
+ const renewSession = async (c) => {
178
+ const token = requireToken(c);
179
+ let renewed;
99
180
  try {
100
- resolvedSession = await auth.session.resolve({
181
+ renewed = await auth.session.renew({
101
182
  client: await getSessionClient(c),
102
183
  token,
103
184
  });
@@ -108,26 +189,22 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
108
189
  }
109
190
  throw error;
110
191
  }
111
- if (!resolvedSession) {
192
+ if (!renewed) {
112
193
  clearSession(c);
113
194
  throw createError({
114
195
  code: "SESSION_INVALID",
115
196
  message: "Authentication required.",
116
197
  });
117
198
  }
118
- if (resolvedSession.renewed) {
119
- setToken({
120
- context: c,
121
- expires_at: resolvedSession.session.expires_at,
122
- token,
123
- });
124
- }
125
- return resolvedSession.session;
199
+ setSession({ context: c, session: renewed.session, token });
200
+ setCache({ context: c, resolved: renewed, token });
201
+ return renewed.session;
126
202
  };
127
203
  const requireSession = async (c, next) => {
128
- const session = await resolveSession(c);
129
- c.set("session", session);
130
- c.set("account", session.data);
204
+ const value = await resolveSession(c);
205
+ c.set("session", value.session);
206
+ c.set("account", value.account);
207
+ c.set("user", value.user);
131
208
  await next();
132
209
  };
133
210
  const revokeSession = async (c) => {
@@ -140,15 +217,15 @@ export const createHonoAdapter = ({ auth, cookie, getIp, }) => {
140
217
  clearSession,
141
218
  createSession,
142
219
  getToken,
220
+ renewSession,
143
221
  requireSession,
144
222
  resolveSession,
145
223
  revokeSession,
146
224
  };
147
225
  };
148
- export const createHonoAuth = ({ cookie, db, getIp, password, redis, session, }) => {
226
+ export const createHonoAuth = ({ cache, cookie, db, getIp, password, secret, session, }) => {
149
227
  const auth = createAuth({
150
228
  db,
151
- redis,
152
229
  ...(password === undefined ? {} : { password }),
153
230
  ...(session === undefined ? {} : { session }),
154
231
  });
@@ -157,7 +234,9 @@ export const createHonoAuth = ({ cookie, db, getIp, password, redis, session, })
157
234
  ...createHonoAdapter({
158
235
  auth,
159
236
  getIp,
237
+ ...(cache === undefined ? {} : { cache }),
160
238
  ...(cookie === undefined ? {} : { cookie }),
239
+ ...(secret === undefined ? {} : { secret }),
161
240
  }),
162
241
  };
163
242
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/hono/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { NextRequest, NextResponse } from "next/server.js";
2
+ export type NextCookieConfig = {
3
+ name?: string;
4
+ renewName?: string;
5
+ };
6
+ export type NextAuthConfig = {
7
+ cookie?: NextCookieConfig;
8
+ renewUrl: string;
9
+ };
10
+ export type NextRenewInput = {
11
+ request: NextRequest;
12
+ response: NextResponse;
13
+ };
14
+ export type NextRenewResult = {
15
+ attempted: boolean;
16
+ response: NextResponse;
17
+ status: number | null;
18
+ };
19
+ export type NextAuth = {
20
+ renew(input: NextRenewInput): Promise<NextRenewResult>;
21
+ };
22
+ export declare const FORWARD_HEADERS: readonly ["cf-connecting-ip", "origin", "referer", "sec-ch-ua-platform", "sec-fetch-dest", "sec-fetch-mode", "sec-fetch-site", "sec-fetch-user", "true-client-ip", "user-agent", "x-forwarded-for", "x-real-ip"];
23
+ export declare const createNextAuth: ({ cookie, renewUrl }: NextAuthConfig) => NextAuth;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAShE,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACnB,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1D,CAAC;AAUF,eAAO,MAAM,eAAe,kNAalB,CAAC;AA6BX,eAAO,MAAM,cAAc,GAAI,sBAAsB,cAAc,KAAG,QA4DrE,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { createError } from "../../errors.js";
2
+ import { parseSessionToken, RENEW_COOKIE_VALUE, resolveSessionCookieNames, } from "../../session/cookie.js";
3
+ const RENEW_TIMEOUT = 5_000;
4
+ export const FORWARD_HEADERS = [
5
+ "cf-connecting-ip",
6
+ "origin",
7
+ "referer",
8
+ "sec-ch-ua-platform",
9
+ "sec-fetch-dest",
10
+ "sec-fetch-mode",
11
+ "sec-fetch-site",
12
+ "sec-fetch-user",
13
+ "true-client-ip",
14
+ "user-agent",
15
+ "x-forwarded-for",
16
+ "x-real-ip",
17
+ ];
18
+ const getSetCookies = (headers) => {
19
+ const cookieHeaders = headers;
20
+ if (typeof cookieHeaders.getSetCookie === "function") {
21
+ return cookieHeaders.getSetCookie();
22
+ }
23
+ const cookie = headers.get("set-cookie");
24
+ return cookie ? [cookie] : [];
25
+ };
26
+ const getForwardHeaders = ({ name, request, token }) => {
27
+ const headers = new Headers({ cookie: `${name}=${token}` });
28
+ for (const header of FORWARD_HEADERS) {
29
+ const value = request.headers.get(header);
30
+ if (value !== null) {
31
+ headers.set(header, value);
32
+ }
33
+ }
34
+ return headers;
35
+ };
36
+ export const createNextAuth = ({ cookie, renewUrl }) => {
37
+ const names = resolveSessionCookieNames(cookie);
38
+ let url;
39
+ try {
40
+ url = new URL(renewUrl);
41
+ }
42
+ catch (error) {
43
+ throw createError({
44
+ cause: error,
45
+ code: "AUTH_CONFIG_INVALID",
46
+ message: "Next renewal URL is invalid.",
47
+ });
48
+ }
49
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
50
+ throw createError({
51
+ code: "AUTH_CONFIG_INVALID",
52
+ message: "Next renewal URL must use HTTP or HTTPS.",
53
+ });
54
+ }
55
+ return {
56
+ renew: async ({ request, response }) => {
57
+ const token = parseSessionToken(request.cookies.get(names.name)?.value);
58
+ if (!token) {
59
+ return {
60
+ attempted: false,
61
+ response,
62
+ status: 401,
63
+ };
64
+ }
65
+ if (request.cookies.get(names.renewName)?.value === RENEW_COOKIE_VALUE) {
66
+ return {
67
+ attempted: false,
68
+ response,
69
+ status: null,
70
+ };
71
+ }
72
+ const renewal = await fetch(url.toString(), {
73
+ cache: "no-store",
74
+ headers: getForwardHeaders({ name: names.name, request, token }),
75
+ method: "POST",
76
+ redirect: "error",
77
+ signal: AbortSignal.timeout(RENEW_TIMEOUT),
78
+ });
79
+ for (const value of getSetCookies(renewal.headers)) {
80
+ response.headers.append("set-cookie", value);
81
+ }
82
+ return {
83
+ attempted: true,
84
+ response,
85
+ status: renewal.status,
86
+ };
87
+ },
88
+ };
89
+ };
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/next/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { DbAdapter, SessionRecord } from "../../session/types.js";
2
- declare const DEFAULT_TABLE = "auth_sessions";
2
+ declare const DEFAULT_TABLE = "account_sessions";
3
3
  type DelegateMeta<T> = T[Extract<keyof T, symbol>];
4
4
  type DelegateRow<T> = DelegateMeta<T> extends {
5
5
  types: {
@@ -12,12 +12,20 @@ type IsSessionTable<T> = [DelegateRow<T>] extends [never] ? false : DelegateRow<
12
12
  export type PrismaSessionTable<Client> = {
13
13
  [Key in keyof Client]: IsSessionTable<Client[Key]> extends true ? Key : never;
14
14
  }[keyof Client] & string;
15
- export type PrismaAdapterConfig<Client> = {
15
+ export type PrismaAccessConfig = {
16
+ role?: readonly string[];
17
+ status: readonly string[];
18
+ };
19
+ type PrismaAuthConfig = {
20
+ account: PrismaAccessConfig;
21
+ user: PrismaAccessConfig;
22
+ };
23
+ export type PrismaAdapterConfig<Client> = PrismaAuthConfig & {
16
24
  table?: PrismaSessionTable<Client>;
17
25
  };
18
26
  type DefaultPrismaAdapterInput<Client extends object> = {
19
27
  client: Client;
20
- config?: PrismaAdapterConfig<Client>;
28
+ config: PrismaAdapterConfig<Client>;
21
29
  };
22
30
  type CustomPrismaAdapterInput<Client extends object> = {
23
31
  client: Client;
@@ -26,6 +34,6 @@ type CustomPrismaAdapterInput<Client extends object> = {
26
34
  };
27
35
  };
28
36
  export type PrismaAdapterInput<Client extends object> = typeof DEFAULT_TABLE extends PrismaSessionTable<Client> ? DefaultPrismaAdapterInput<Client> : CustomPrismaAdapterInput<Client>;
29
- export declare const createDbAdapter: <Client extends object>(input: PrismaAdapterInput<Client>) => DbAdapter;
37
+ export declare const createPrismaAdapter: <Client extends object>(input: PrismaAdapterInput<Client>) => DbAdapter;
30
38
  export {};
31
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvE,QAAA,MAAM,aAAa,kBAAkB,CAAC;AAEtC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnD,KAAK,WAAW,CAAC,CAAC,IACd,YAAY,CAAC,CAAC,CAAC,SAAS;IACpB,KAAK,EAAE;QACH,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;KACtC,CAAC;CACL,GACK,MAAM,GACN,KAAK,CAAC;AAEhB,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACnD,KAAK,GACL,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,GAClC,IAAI,GACJ,KAAK,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAAC,MAAM,IAAI;KACpC,GAAG,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,GAAG,KAAK;CAChF,CAAC,MAAM,MAAM,CAAC,GACX,MAAM,CAAC;AAEX,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI;IACtC,KAAK,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,yBAAyB,CAAC,MAAM,SAAS,MAAM,IAAI;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF,KAAK,wBAAwB,CAAC,MAAM,SAAS,MAAM,IAAI;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;QAClC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,MAAM,IAChD,OAAO,aAAa,SAAS,kBAAkB,CAAC,MAAM,CAAC,GACjD,yBAAyB,CAAC,MAAM,CAAC,GACjC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AA8E3C,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,MAAM,EACjD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAClC,SAsEF,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1F,QAAA,MAAM,aAAa,qBAAqB,CAAC;AAEzC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEnD,KAAK,WAAW,CAAC,CAAC,IACd,YAAY,CAAC,CAAC,CAAC,SAAS;IACpB,KAAK,EAAE;QACH,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;KACtC,CAAC;CACL,GACK,MAAM,GACN,KAAK,CAAC;AAEhB,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACnD,KAAK,GACL,WAAW,CAAC,CAAC,CAAC,SAAS,aAAa,GAClC,IAAI,GACJ,KAAK,CAAC;AAEd,MAAM,MAAM,kBAAkB,CAAC,MAAM,IAAI;KACpC,GAAG,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,GAAG,GAAG,KAAK;CAChF,CAAC,MAAM,MAAM,CAAC,GACX,MAAM,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG;IAC7B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,IAAI,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,MAAM,IAAI,gBAAgB,GAAG;IACzD,KAAK,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,yBAAyB,CAAC,MAAM,SAAS,MAAM,IAAI;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,KAAK,wBAAwB,CAAC,MAAM,SAAS,MAAM,IAAI;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;QAClC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;KACrC,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,MAAM,IAChD,OAAO,aAAa,SAAS,kBAAkB,CAAC,MAAM,CAAC,GACjD,yBAAyB,CAAC,MAAM,CAAC,GACjC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AA2L3C,eAAO,MAAM,mBAAmB,GAAI,MAAM,SAAS,MAAM,EACrD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAClC,SAgFF,CAAC"}