better-auth 1.4.18 → 1.4.19

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 (118) hide show
  1. package/dist/adapters/drizzle-adapter/drizzle-adapter.mjs +37 -5
  2. package/dist/adapters/drizzle-adapter/drizzle-adapter.mjs.map +1 -1
  3. package/dist/adapters/kysely-adapter/kysely-adapter.mjs +13 -3
  4. package/dist/adapters/kysely-adapter/kysely-adapter.mjs.map +1 -1
  5. package/dist/adapters/memory-adapter/memory-adapter.mjs +21 -17
  6. package/dist/adapters/memory-adapter/memory-adapter.mjs.map +1 -1
  7. package/dist/adapters/mongodb-adapter/mongodb-adapter.mjs +12 -1
  8. package/dist/adapters/mongodb-adapter/mongodb-adapter.mjs.map +1 -1
  9. package/dist/adapters/prisma-adapter/prisma-adapter.mjs +2 -2
  10. package/dist/adapters/prisma-adapter/prisma-adapter.mjs.map +1 -1
  11. package/dist/api/index.d.mts +407 -407
  12. package/dist/api/routes/account.d.mts +11 -11
  13. package/dist/api/routes/account.mjs +1 -1
  14. package/dist/api/routes/account.mjs.map +1 -1
  15. package/dist/api/routes/callback.d.mts +2 -2
  16. package/dist/api/routes/callback.mjs +1 -1
  17. package/dist/api/routes/callback.mjs.map +1 -1
  18. package/dist/api/routes/email-verification.d.mts +4 -4
  19. package/dist/api/routes/email-verification.mjs +1 -1
  20. package/dist/api/routes/email-verification.mjs.map +1 -1
  21. package/dist/api/routes/error.d.mts +2 -2
  22. package/dist/api/routes/ok.d.mts +2 -2
  23. package/dist/api/routes/password.d.mts +7 -7
  24. package/dist/api/routes/session.d.mts +14 -14
  25. package/dist/api/routes/sign-in.d.mts +4 -4
  26. package/dist/api/routes/sign-out.d.mts +2 -2
  27. package/dist/api/routes/sign-up.d.mts +3 -3
  28. package/dist/api/routes/update-user.d.mts +13 -13
  29. package/dist/api/routes/update-user.mjs +1 -1
  30. package/dist/api/routes/update-user.mjs.map +1 -1
  31. package/dist/client/react/index.d.mts +13 -13
  32. package/dist/client/svelte/index.d.mts +15 -15
  33. package/dist/client/vanilla.d.mts +15 -15
  34. package/dist/client/vue/index.d.mts +15 -15
  35. package/dist/context/create-context.mjs +1 -1
  36. package/dist/context/create-context.mjs.map +1 -1
  37. package/dist/cookies/index.d.mts +6 -6
  38. package/dist/cookies/index.mjs +5 -8
  39. package/dist/cookies/index.mjs.map +1 -1
  40. package/dist/db/field.d.mts +10 -10
  41. package/dist/db/field.mjs.map +1 -1
  42. package/dist/db/internal-adapter.mjs +1 -1
  43. package/dist/db/internal-adapter.mjs.map +1 -1
  44. package/dist/integrations/next-js.d.mts +4 -4
  45. package/dist/integrations/svelte-kit.d.mts +2 -2
  46. package/dist/integrations/tanstack-start-solid.d.mts +4 -4
  47. package/dist/integrations/tanstack-start.d.mts +4 -4
  48. package/dist/plugins/access/types.d.mts +1 -1
  49. package/dist/plugins/admin/admin.d.mts +114 -119
  50. package/dist/plugins/admin/admin.mjs +1 -1
  51. package/dist/plugins/admin/admin.mjs.map +1 -1
  52. package/dist/plugins/admin/routes.mjs +1 -1
  53. package/dist/plugins/admin/routes.mjs.map +1 -1
  54. package/dist/plugins/anonymous/index.d.mts +7 -7
  55. package/dist/plugins/api-key/index.d.mts +95 -80
  56. package/dist/plugins/api-key/routes/verify-api-key.mjs +1 -0
  57. package/dist/plugins/api-key/routes/verify-api-key.mjs.map +1 -1
  58. package/dist/plugins/bearer/index.d.mts +6 -6
  59. package/dist/plugins/captcha/index.d.mts +2 -2
  60. package/dist/plugins/custom-session/index.d.mts +5 -5
  61. package/dist/plugins/custom-session/index.mjs +13 -5
  62. package/dist/plugins/custom-session/index.mjs.map +1 -1
  63. package/dist/plugins/device-authorization/index.d.mts +6 -6
  64. package/dist/plugins/email-otp/index.d.mts +16 -16
  65. package/dist/plugins/email-otp/routes.mjs +1 -1
  66. package/dist/plugins/email-otp/routes.mjs.map +1 -1
  67. package/dist/plugins/generic-oauth/error-codes.mjs +3 -1
  68. package/dist/plugins/generic-oauth/error-codes.mjs.map +1 -1
  69. package/dist/plugins/generic-oauth/index.d.mts +32 -29
  70. package/dist/plugins/generic-oauth/index.mjs +8 -0
  71. package/dist/plugins/generic-oauth/index.mjs.map +1 -1
  72. package/dist/plugins/generic-oauth/routes.mjs +19 -2
  73. package/dist/plugins/generic-oauth/routes.mjs.map +1 -1
  74. package/dist/plugins/generic-oauth/types.d.mts +14 -0
  75. package/dist/plugins/haveibeenpwned/index.d.mts +3 -3
  76. package/dist/plugins/jwt/client.d.mts +2 -2
  77. package/dist/plugins/jwt/index.d.mts +9 -9
  78. package/dist/plugins/last-login-method/index.d.mts +4 -4
  79. package/dist/plugins/magic-link/index.d.mts +4 -4
  80. package/dist/plugins/mcp/authorize.mjs +1 -1
  81. package/dist/plugins/mcp/authorize.mjs.map +1 -1
  82. package/dist/plugins/mcp/index.d.mts +10 -10
  83. package/dist/plugins/multi-session/index.d.mts +9 -9
  84. package/dist/plugins/oauth-proxy/index.d.mts +8 -8
  85. package/dist/plugins/oidc-provider/authorize.mjs +1 -1
  86. package/dist/plugins/oidc-provider/authorize.mjs.map +1 -1
  87. package/dist/plugins/oidc-provider/index.d.mts +15 -15
  88. package/dist/plugins/one-tap/client.d.mts +5 -5
  89. package/dist/plugins/one-tap/index.d.mts +2 -2
  90. package/dist/plugins/one-time-token/index.d.mts +5 -5
  91. package/dist/plugins/open-api/index.d.mts +3 -3
  92. package/dist/plugins/organization/client.d.mts +9 -9
  93. package/dist/plugins/organization/error-codes.d.mts +1 -0
  94. package/dist/plugins/organization/error-codes.mjs +2 -1
  95. package/dist/plugins/organization/error-codes.mjs.map +1 -1
  96. package/dist/plugins/organization/organization.d.mts +4 -4
  97. package/dist/plugins/organization/routes/crud-access-control.d.mts +22 -22
  98. package/dist/plugins/organization/routes/crud-access-control.mjs +22 -0
  99. package/dist/plugins/organization/routes/crud-access-control.mjs.map +1 -1
  100. package/dist/plugins/organization/routes/crud-invites.d.mts +70 -70
  101. package/dist/plugins/organization/routes/crud-invites.mjs +0 -4
  102. package/dist/plugins/organization/routes/crud-invites.mjs.map +1 -1
  103. package/dist/plugins/organization/routes/crud-members.d.mts +67 -67
  104. package/dist/plugins/organization/routes/crud-org.d.mts +59 -59
  105. package/dist/plugins/organization/routes/crud-team.d.mts +79 -79
  106. package/dist/plugins/phone-number/index.d.mts +33 -33
  107. package/dist/plugins/phone-number/routes.mjs +6 -2
  108. package/dist/plugins/phone-number/routes.mjs.map +1 -1
  109. package/dist/plugins/siwe/index.d.mts +3 -3
  110. package/dist/plugins/two-factor/backup-codes/index.d.mts +5 -5
  111. package/dist/plugins/two-factor/client.d.mts +2 -2
  112. package/dist/plugins/two-factor/index.d.mts +18 -18
  113. package/dist/plugins/two-factor/otp/index.d.mts +3 -3
  114. package/dist/plugins/two-factor/totp/index.d.mts +5 -5
  115. package/dist/plugins/username/index.d.mts +12 -12
  116. package/dist/plugins/username/schema.d.mts +3 -3
  117. package/dist/test-utils/test-instance.d.mts +1242 -1242
  118. package/package.json +3 -3
@@ -1,11 +1,11 @@
1
1
  import { AccessControl, Statements } from "../access/types.mjs";
2
2
  import { AdminOptions, InferAdminRolesFromOption, SessionWithImpersonatedBy, UserWithRole } from "./types.mjs";
3
3
  import "../index.mjs";
4
- import * as _better_auth_core29 from "@better-auth/core";
5
- import * as _better_auth_core_db10 from "@better-auth/core/db";
6
- import * as better_call675 from "better-call";
7
- import * as zod1850 from "zod";
8
- import * as zod_v4_core264 from "zod/v4/core";
4
+ import * as _better_auth_core43 from "@better-auth/core";
5
+ import * as _better_auth_core_db23 from "@better-auth/core/db";
6
+ import * as better_call706 from "better-call";
7
+ import * as zod1930 from "zod";
8
+ import * as zod_v4_core269 from "zod/v4/core";
9
9
 
10
10
  //#region src/plugins/admin/admin.d.ts
11
11
  declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
@@ -48,7 +48,7 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
48
48
  token: string;
49
49
  ipAddress?: string | null | undefined;
50
50
  userAgent?: string | null | undefined;
51
- } & Record<string, unknown>, ctx: _better_auth_core29.GenericEndpointContext | null): Promise<void>;
51
+ } & Record<string, unknown>, ctx: _better_auth_core43.GenericEndpointContext | null): Promise<void>;
52
52
  };
53
53
  };
54
54
  };
@@ -56,22 +56,22 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
56
56
  };
57
57
  hooks: {
58
58
  after: {
59
- matcher(context: _better_auth_core29.HookEndpointContext): boolean;
60
- handler: (inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<SessionWithImpersonatedBy[] | undefined>;
59
+ matcher(context: _better_auth_core43.HookEndpointContext): boolean;
60
+ handler: (inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<SessionWithImpersonatedBy[] | undefined>;
61
61
  }[];
62
62
  };
63
63
  endpoints: {
64
- setRole: better_call675.StrictEndpoint<"/admin/set-role", {
64
+ setRole: better_call706.StrictEndpoint<"/admin/set-role", {
65
65
  method: "POST";
66
- body: zod1850.ZodObject<{
67
- userId: zod1850.ZodCoercedString<unknown>;
68
- role: zod1850.ZodUnion<readonly [zod1850.ZodString, zod1850.ZodArray<zod1850.ZodString>]>;
69
- }, zod_v4_core264.$strip>;
66
+ body: zod1930.ZodObject<{
67
+ userId: zod1930.ZodCoercedString<unknown>;
68
+ role: zod1930.ZodUnion<readonly [zod1930.ZodString, zod1930.ZodArray<zod1930.ZodString>]>;
69
+ }, zod_v4_core269.$strip>;
70
70
  requireHeaders: true;
71
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
71
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
72
72
  session: {
73
73
  user: UserWithRole;
74
- session: _better_auth_core_db10.Session;
74
+ session: _better_auth_core_db23.Session;
75
75
  };
76
76
  }>)[];
77
77
  metadata: {
@@ -107,15 +107,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
107
107
  }, {
108
108
  user: UserWithRole;
109
109
  }>;
110
- getUser: better_call675.StrictEndpoint<"/admin/get-user", {
110
+ getUser: better_call706.StrictEndpoint<"/admin/get-user", {
111
111
  method: "GET";
112
- query: zod1850.ZodObject<{
113
- id: zod1850.ZodString;
114
- }, zod_v4_core264.$strip>;
115
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
112
+ query: zod1930.ZodObject<{
113
+ id: zod1930.ZodString;
114
+ }, zod_v4_core269.$strip>;
115
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
116
116
  session: {
117
117
  user: UserWithRole;
118
- session: _better_auth_core_db10.Session;
118
+ session: _better_auth_core_db23.Session;
119
119
  };
120
120
  }>)[];
121
121
  metadata: {
@@ -143,15 +143,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
143
143
  };
144
144
  };
145
145
  }, UserWithRole>;
146
- createUser: better_call675.StrictEndpoint<"/admin/create-user", {
146
+ createUser: better_call706.StrictEndpoint<"/admin/create-user", {
147
147
  method: "POST";
148
- body: zod1850.ZodObject<{
149
- email: zod1850.ZodString;
150
- password: zod1850.ZodOptional<zod1850.ZodString>;
151
- name: zod1850.ZodString;
152
- role: zod1850.ZodOptional<zod1850.ZodUnion<readonly [zod1850.ZodString, zod1850.ZodArray<zod1850.ZodString>]>>;
153
- data: zod1850.ZodOptional<zod1850.ZodRecord<zod1850.ZodString, zod1850.ZodAny>>;
154
- }, zod_v4_core264.$strip>;
148
+ body: zod1930.ZodObject<{
149
+ email: zod1930.ZodString;
150
+ password: zod1930.ZodOptional<zod1930.ZodString>;
151
+ name: zod1930.ZodString;
152
+ role: zod1930.ZodOptional<zod1930.ZodUnion<readonly [zod1930.ZodString, zod1930.ZodArray<zod1930.ZodString>]>>;
153
+ data: zod1930.ZodOptional<zod1930.ZodRecord<zod1930.ZodString, zod1930.ZodAny>>;
154
+ }, zod_v4_core269.$strip>;
155
155
  metadata: {
156
156
  openapi: {
157
157
  operationId: string;
@@ -188,16 +188,16 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
188
188
  }, {
189
189
  user: UserWithRole;
190
190
  }>;
191
- adminUpdateUser: better_call675.StrictEndpoint<"/admin/update-user", {
191
+ adminUpdateUser: better_call706.StrictEndpoint<"/admin/update-user", {
192
192
  method: "POST";
193
- body: zod1850.ZodObject<{
194
- userId: zod1850.ZodCoercedString<unknown>;
195
- data: zod1850.ZodRecord<zod1850.ZodAny, zod1850.ZodAny>;
196
- }, zod_v4_core264.$strip>;
197
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
193
+ body: zod1930.ZodObject<{
194
+ userId: zod1930.ZodCoercedString<unknown>;
195
+ data: zod1930.ZodRecord<zod1930.ZodAny, zod1930.ZodAny>;
196
+ }, zod_v4_core269.$strip>;
197
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
198
198
  session: {
199
199
  user: UserWithRole;
200
- session: _better_auth_core_db10.Session;
200
+ session: _better_auth_core_db23.Session;
201
201
  };
202
202
  }>)[];
203
203
  metadata: {
@@ -225,35 +225,35 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
225
225
  };
226
226
  };
227
227
  }, UserWithRole>;
228
- listUsers: better_call675.StrictEndpoint<"/admin/list-users", {
228
+ listUsers: better_call706.StrictEndpoint<"/admin/list-users", {
229
229
  method: "GET";
230
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
230
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
231
231
  session: {
232
232
  user: UserWithRole;
233
- session: _better_auth_core_db10.Session;
233
+ session: _better_auth_core_db23.Session;
234
234
  };
235
235
  }>)[];
236
- query: zod1850.ZodObject<{
237
- searchValue: zod1850.ZodOptional<zod1850.ZodString>;
238
- searchField: zod1850.ZodOptional<zod1850.ZodEnum<{
236
+ query: zod1930.ZodObject<{
237
+ searchValue: zod1930.ZodOptional<zod1930.ZodString>;
238
+ searchField: zod1930.ZodOptional<zod1930.ZodEnum<{
239
239
  name: "name";
240
240
  email: "email";
241
241
  }>>;
242
- searchOperator: zod1850.ZodOptional<zod1850.ZodEnum<{
242
+ searchOperator: zod1930.ZodOptional<zod1930.ZodEnum<{
243
243
  contains: "contains";
244
244
  starts_with: "starts_with";
245
245
  ends_with: "ends_with";
246
246
  }>>;
247
- limit: zod1850.ZodOptional<zod1850.ZodUnion<[zod1850.ZodString, zod1850.ZodNumber]>>;
248
- offset: zod1850.ZodOptional<zod1850.ZodUnion<[zod1850.ZodString, zod1850.ZodNumber]>>;
249
- sortBy: zod1850.ZodOptional<zod1850.ZodString>;
250
- sortDirection: zod1850.ZodOptional<zod1850.ZodEnum<{
247
+ limit: zod1930.ZodOptional<zod1930.ZodUnion<[zod1930.ZodString, zod1930.ZodNumber]>>;
248
+ offset: zod1930.ZodOptional<zod1930.ZodUnion<[zod1930.ZodString, zod1930.ZodNumber]>>;
249
+ sortBy: zod1930.ZodOptional<zod1930.ZodString>;
250
+ sortDirection: zod1930.ZodOptional<zod1930.ZodEnum<{
251
251
  asc: "asc";
252
252
  desc: "desc";
253
253
  }>>;
254
- filterField: zod1850.ZodOptional<zod1850.ZodString>;
255
- filterValue: zod1850.ZodOptional<zod1850.ZodUnion<[zod1850.ZodUnion<[zod1850.ZodString, zod1850.ZodNumber]>, zod1850.ZodBoolean]>>;
256
- filterOperator: zod1850.ZodOptional<zod1850.ZodEnum<{
254
+ filterField: zod1930.ZodOptional<zod1930.ZodString>;
255
+ filterValue: zod1930.ZodOptional<zod1930.ZodUnion<[zod1930.ZodUnion<[zod1930.ZodString, zod1930.ZodNumber]>, zod1930.ZodBoolean]>>;
256
+ filterOperator: zod1930.ZodOptional<zod1930.ZodEnum<{
257
257
  eq: "eq";
258
258
  ne: "ne";
259
259
  lt: "lt";
@@ -262,7 +262,7 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
262
262
  gte: "gte";
263
263
  contains: "contains";
264
264
  }>>;
265
- }, zod_v4_core264.$strip>;
265
+ }, zod_v4_core269.$strip>;
266
266
  metadata: {
267
267
  openapi: {
268
268
  operationId: string;
@@ -303,23 +303,18 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
303
303
  }, {
304
304
  users: UserWithRole[];
305
305
  total: number;
306
- limit: number | undefined;
307
- offset: number | undefined;
308
- } | {
309
- users: never[];
310
- total: number;
311
306
  }>;
312
- listUserSessions: better_call675.StrictEndpoint<"/admin/list-user-sessions", {
307
+ listUserSessions: better_call706.StrictEndpoint<"/admin/list-user-sessions", {
313
308
  method: "POST";
314
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
309
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
315
310
  session: {
316
311
  user: UserWithRole;
317
- session: _better_auth_core_db10.Session;
312
+ session: _better_auth_core_db23.Session;
318
313
  };
319
314
  }>)[];
320
- body: zod1850.ZodObject<{
321
- userId: zod1850.ZodCoercedString<unknown>;
322
- }, zod_v4_core264.$strip>;
315
+ body: zod1930.ZodObject<{
316
+ userId: zod1930.ZodCoercedString<unknown>;
317
+ }, zod_v4_core269.$strip>;
323
318
  metadata: {
324
319
  openapi: {
325
320
  operationId: string;
@@ -350,15 +345,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
350
345
  }, {
351
346
  sessions: SessionWithImpersonatedBy[];
352
347
  }>;
353
- unbanUser: better_call675.StrictEndpoint<"/admin/unban-user", {
348
+ unbanUser: better_call706.StrictEndpoint<"/admin/unban-user", {
354
349
  method: "POST";
355
- body: zod1850.ZodObject<{
356
- userId: zod1850.ZodCoercedString<unknown>;
357
- }, zod_v4_core264.$strip>;
358
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
350
+ body: zod1930.ZodObject<{
351
+ userId: zod1930.ZodCoercedString<unknown>;
352
+ }, zod_v4_core269.$strip>;
353
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
359
354
  session: {
360
355
  user: UserWithRole;
361
- session: _better_auth_core_db10.Session;
356
+ session: _better_auth_core_db23.Session;
362
357
  };
363
358
  }>)[];
364
359
  metadata: {
@@ -388,17 +383,17 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
388
383
  }, {
389
384
  user: UserWithRole;
390
385
  }>;
391
- banUser: better_call675.StrictEndpoint<"/admin/ban-user", {
386
+ banUser: better_call706.StrictEndpoint<"/admin/ban-user", {
392
387
  method: "POST";
393
- body: zod1850.ZodObject<{
394
- userId: zod1850.ZodCoercedString<unknown>;
395
- banReason: zod1850.ZodOptional<zod1850.ZodString>;
396
- banExpiresIn: zod1850.ZodOptional<zod1850.ZodNumber>;
397
- }, zod_v4_core264.$strip>;
398
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
388
+ body: zod1930.ZodObject<{
389
+ userId: zod1930.ZodCoercedString<unknown>;
390
+ banReason: zod1930.ZodOptional<zod1930.ZodString>;
391
+ banExpiresIn: zod1930.ZodOptional<zod1930.ZodNumber>;
392
+ }, zod_v4_core269.$strip>;
393
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
399
394
  session: {
400
395
  user: UserWithRole;
401
- session: _better_auth_core_db10.Session;
396
+ session: _better_auth_core_db23.Session;
402
397
  };
403
398
  }>)[];
404
399
  metadata: {
@@ -428,15 +423,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
428
423
  }, {
429
424
  user: UserWithRole;
430
425
  }>;
431
- impersonateUser: better_call675.StrictEndpoint<"/admin/impersonate-user", {
426
+ impersonateUser: better_call706.StrictEndpoint<"/admin/impersonate-user", {
432
427
  method: "POST";
433
- body: zod1850.ZodObject<{
434
- userId: zod1850.ZodCoercedString<unknown>;
435
- }, zod_v4_core264.$strip>;
436
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
428
+ body: zod1930.ZodObject<{
429
+ userId: zod1930.ZodCoercedString<unknown>;
430
+ }, zod_v4_core269.$strip>;
431
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
437
432
  session: {
438
433
  user: UserWithRole;
439
- session: _better_auth_core_db10.Session;
434
+ session: _better_auth_core_db23.Session;
440
435
  };
441
436
  }>)[];
442
437
  metadata: {
@@ -479,7 +474,7 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
479
474
  };
480
475
  user: UserWithRole;
481
476
  }>;
482
- stopImpersonating: better_call675.StrictEndpoint<"/admin/stop-impersonating", {
477
+ stopImpersonating: better_call706.StrictEndpoint<"/admin/stop-impersonating", {
483
478
  method: "POST";
484
479
  requireHeaders: true;
485
480
  }, {
@@ -503,15 +498,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
503
498
  image?: string | null | undefined;
504
499
  } & Record<string, any>;
505
500
  }>;
506
- revokeUserSession: better_call675.StrictEndpoint<"/admin/revoke-user-session", {
501
+ revokeUserSession: better_call706.StrictEndpoint<"/admin/revoke-user-session", {
507
502
  method: "POST";
508
- body: zod1850.ZodObject<{
509
- sessionToken: zod1850.ZodString;
510
- }, zod_v4_core264.$strip>;
511
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
503
+ body: zod1930.ZodObject<{
504
+ sessionToken: zod1930.ZodString;
505
+ }, zod_v4_core269.$strip>;
506
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
512
507
  session: {
513
508
  user: UserWithRole;
514
- session: _better_auth_core_db10.Session;
509
+ session: _better_auth_core_db23.Session;
515
510
  };
516
511
  }>)[];
517
512
  metadata: {
@@ -541,15 +536,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
541
536
  }, {
542
537
  success: boolean;
543
538
  }>;
544
- revokeUserSessions: better_call675.StrictEndpoint<"/admin/revoke-user-sessions", {
539
+ revokeUserSessions: better_call706.StrictEndpoint<"/admin/revoke-user-sessions", {
545
540
  method: "POST";
546
- body: zod1850.ZodObject<{
547
- userId: zod1850.ZodCoercedString<unknown>;
548
- }, zod_v4_core264.$strip>;
549
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
541
+ body: zod1930.ZodObject<{
542
+ userId: zod1930.ZodCoercedString<unknown>;
543
+ }, zod_v4_core269.$strip>;
544
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
550
545
  session: {
551
546
  user: UserWithRole;
552
- session: _better_auth_core_db10.Session;
547
+ session: _better_auth_core_db23.Session;
553
548
  };
554
549
  }>)[];
555
550
  metadata: {
@@ -579,15 +574,15 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
579
574
  }, {
580
575
  success: boolean;
581
576
  }>;
582
- removeUser: better_call675.StrictEndpoint<"/admin/remove-user", {
577
+ removeUser: better_call706.StrictEndpoint<"/admin/remove-user", {
583
578
  method: "POST";
584
- body: zod1850.ZodObject<{
585
- userId: zod1850.ZodCoercedString<unknown>;
586
- }, zod_v4_core264.$strip>;
587
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
579
+ body: zod1930.ZodObject<{
580
+ userId: zod1930.ZodCoercedString<unknown>;
581
+ }, zod_v4_core269.$strip>;
582
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
588
583
  session: {
589
584
  user: UserWithRole;
590
- session: _better_auth_core_db10.Session;
585
+ session: _better_auth_core_db23.Session;
591
586
  };
592
587
  }>)[];
593
588
  metadata: {
@@ -617,16 +612,16 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
617
612
  }, {
618
613
  success: boolean;
619
614
  }>;
620
- setUserPassword: better_call675.StrictEndpoint<"/admin/set-user-password", {
615
+ setUserPassword: better_call706.StrictEndpoint<"/admin/set-user-password", {
621
616
  method: "POST";
622
- body: zod1850.ZodObject<{
623
- newPassword: zod1850.ZodString;
624
- userId: zod1850.ZodCoercedString<unknown>;
625
- }, zod_v4_core264.$strip>;
626
- use: ((inputContext: better_call675.MiddlewareInputContext<better_call675.MiddlewareOptions>) => Promise<{
617
+ body: zod1930.ZodObject<{
618
+ newPassword: zod1930.ZodString;
619
+ userId: zod1930.ZodCoercedString<unknown>;
620
+ }, zod_v4_core269.$strip>;
621
+ use: ((inputContext: better_call706.MiddlewareInputContext<better_call706.MiddlewareOptions>) => Promise<{
627
622
  session: {
628
623
  user: UserWithRole;
629
- session: _better_auth_core_db10.Session;
624
+ session: _better_auth_core_db23.Session;
630
625
  };
631
626
  }>)[];
632
627
  metadata: {
@@ -656,18 +651,18 @@ declare const admin: <O extends AdminOptions>(options?: O | undefined) => {
656
651
  }, {
657
652
  status: boolean;
658
653
  }>;
659
- userHasPermission: better_call675.StrictEndpoint<"/admin/has-permission", {
654
+ userHasPermission: better_call706.StrictEndpoint<"/admin/has-permission", {
660
655
  method: "POST";
661
- body: zod1850.ZodIntersection<zod1850.ZodObject<{
662
- userId: zod1850.ZodOptional<zod1850.ZodCoercedString<unknown>>;
663
- role: zod1850.ZodOptional<zod1850.ZodString>;
664
- }, zod_v4_core264.$strip>, zod1850.ZodUnion<readonly [zod1850.ZodObject<{
665
- permission: zod1850.ZodRecord<zod1850.ZodString, zod1850.ZodArray<zod1850.ZodString>>;
666
- permissions: zod1850.ZodUndefined;
667
- }, zod_v4_core264.$strip>, zod1850.ZodObject<{
668
- permission: zod1850.ZodUndefined;
669
- permissions: zod1850.ZodRecord<zod1850.ZodString, zod1850.ZodArray<zod1850.ZodString>>;
670
- }, zod_v4_core264.$strip>]>>;
656
+ body: zod1930.ZodIntersection<zod1930.ZodObject<{
657
+ userId: zod1930.ZodOptional<zod1930.ZodCoercedString<unknown>>;
658
+ role: zod1930.ZodOptional<zod1930.ZodString>;
659
+ }, zod_v4_core269.$strip>, zod1930.ZodUnion<readonly [zod1930.ZodObject<{
660
+ permission: zod1930.ZodRecord<zod1930.ZodString, zod1930.ZodArray<zod1930.ZodString>>;
661
+ permissions: zod1930.ZodUndefined;
662
+ }, zod_v4_core269.$strip>, zod1930.ZodObject<{
663
+ permission: zod1930.ZodUndefined;
664
+ permissions: zod1930.ZodRecord<zod1930.ZodString, zod1930.ZodArray<zod1930.ZodString>>;
665
+ }, zod_v4_core269.$strip>]>>;
671
666
  metadata: {
672
667
  openapi: {
673
668
  description: string;
@@ -34,7 +34,7 @@ const admin = (options) => {
34
34
  session: { create: { async before(session, ctx) {
35
35
  if (!ctx) return;
36
36
  const user = await ctx.context.internalAdapter.findUserById(session.userId);
37
- if (user.banned) {
37
+ if (user?.banned) {
38
38
  if (user.banExpires && new Date(user.banExpires).getTime() < Date.now()) {
39
39
  await ctx.context.internalAdapter.updateUser(session.userId, {
40
40
  banned: false,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.mjs","names":[],"sources":["../../../src/plugins/admin/admin.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport { createAuthMiddleware } from \"@better-auth/core/api\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport { APIError } from \"../../api\";\nimport { mergeSchema } from \"../../db/schema\";\nimport { getEndpointResponse } from \"../../utils/plugin-helper\";\nimport { defaultRoles } from \"./access\";\nimport { ADMIN_ERROR_CODES } from \"./error-codes\";\nimport {\n\tadminUpdateUser,\n\tbanUser,\n\tcreateUser,\n\tgetUser,\n\timpersonateUser,\n\tlistUserSessions,\n\tlistUsers,\n\tremoveUser,\n\trevokeUserSession,\n\trevokeUserSessions,\n\tsetRole,\n\tsetUserPassword,\n\tstopImpersonating,\n\tunbanUser,\n\tuserHasPermission,\n} from \"./routes\";\nimport { schema } from \"./schema\";\nimport type {\n\tAdminOptions,\n\tSessionWithImpersonatedBy,\n\tUserWithRole,\n} from \"./types\";\n\nexport const admin = <O extends AdminOptions>(options?: O | undefined) => {\n\tconst opts = {\n\t\t...(options || {}),\n\t\tdefaultRole: options?.defaultRole ?? \"user\",\n\t\tadminRoles: options?.adminRoles ?? [\"admin\"],\n\t\tbannedUserMessage:\n\t\t\toptions?.bannedUserMessage ??\n\t\t\t\"You have been banned from this application. Please contact support if you believe this is an error.\",\n\t} as O &\n\t\tRequired<\n\t\t\tPick<AdminOptions, \"defaultRole\" | \"adminRoles\" | \"bannedUserMessage\">\n\t\t>;\n\n\tif (options?.adminRoles) {\n\t\tconst adminRoles = Array.isArray(options.adminRoles)\n\t\t\t? options.adminRoles\n\t\t\t: [...options.adminRoles.split(\",\")];\n\t\tconst invalidRoles = adminRoles.filter(\n\t\t\t(role) =>\n\t\t\t\t!Object.keys(options?.roles || defaultRoles)\n\t\t\t\t\t.map((r) => r.toLowerCase())\n\t\t\t\t\t.includes(role.toLowerCase()),\n\t\t);\n\t\tif (invalidRoles.length > 0) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t`Invalid admin roles: ${invalidRoles.join(\", \")}. Admin roles must be defined in the 'roles' configuration.`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn {\n\t\tid: \"admin\",\n\t\tinit() {\n\t\t\treturn {\n\t\t\t\toptions: {\n\t\t\t\t\tdatabaseHooks: {\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tcreate: {\n\t\t\t\t\t\t\t\tasync before(user) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\trole: options?.defaultRole ?? \"user\",\n\t\t\t\t\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsession: {\n\t\t\t\t\t\t\tcreate: {\n\t\t\t\t\t\t\t\tasync before(session, ctx) {\n\t\t\t\t\t\t\t\t\tif (!ctx) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst user = (await ctx.context.internalAdapter.findUserById(\n\t\t\t\t\t\t\t\t\t\tsession.userId,\n\t\t\t\t\t\t\t\t\t)) as UserWithRole;\n\n\t\t\t\t\t\t\t\t\tif (user.banned) {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tuser.banExpires &&\n\t\t\t\t\t\t\t\t\t\t\tnew Date(user.banExpires).getTime() < Date.now()\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tawait ctx.context.internalAdapter.updateUser(\n\t\t\t\t\t\t\t\t\t\t\t\tsession.userId,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanned: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanReason: null,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanExpires: null,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tctx &&\n\t\t\t\t\t\t\t\t\t\t\t(ctx.path.startsWith(\"/callback\") ||\n\t\t\t\t\t\t\t\t\t\t\t\tctx.path.startsWith(\"/oauth2/callback\"))\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tconst redirectURI =\n\t\t\t\t\t\t\t\t\t\t\t\tctx.context.options.onAPIError?.errorURL ||\n\t\t\t\t\t\t\t\t\t\t\t\t`${ctx.context.baseURL}/error`;\n\t\t\t\t\t\t\t\t\t\t\tthrow ctx.redirect(\n\t\t\t\t\t\t\t\t\t\t\t\t`${redirectURI}?error=banned&error_description=${opts.bannedUserMessage}`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tthrow new APIError(\"FORBIDDEN\", {\n\t\t\t\t\t\t\t\t\t\t\tmessage: opts.bannedUserMessage,\n\t\t\t\t\t\t\t\t\t\t\tcode: \"BANNED_USER\",\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\thooks: {\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn context.path === \"/list-sessions\";\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst response =\n\t\t\t\t\t\t\tawait getEndpointResponse<SessionWithImpersonatedBy[]>(ctx);\n\n\t\t\t\t\t\tif (!response) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newJson = response.filter((session) => {\n\t\t\t\t\t\t\treturn !session.impersonatedBy;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn ctx.json(newJson);\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tendpoints: {\n\t\t\tsetRole: setRole(opts),\n\t\t\tgetUser: getUser(opts),\n\t\t\tcreateUser: createUser(opts),\n\t\t\tadminUpdateUser: adminUpdateUser(opts),\n\t\t\tlistUsers: listUsers(opts),\n\t\t\tlistUserSessions: listUserSessions(opts),\n\t\t\tunbanUser: unbanUser(opts),\n\t\t\tbanUser: banUser(opts),\n\t\t\timpersonateUser: impersonateUser(opts),\n\t\t\tstopImpersonating: stopImpersonating(),\n\t\t\trevokeUserSession: revokeUserSession(opts),\n\t\t\trevokeUserSessions: revokeUserSessions(opts),\n\t\t\tremoveUser: removeUser(opts),\n\t\t\tsetUserPassword: setUserPassword(opts),\n\t\t\tuserHasPermission: userHasPermission(opts as O),\n\t\t},\n\t\t$ERROR_CODES: ADMIN_ERROR_CODES,\n\t\tschema: mergeSchema(schema, opts.schema),\n\t\toptions: options as NoInfer<O>,\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":";;;;;;;;;;;;AAgCA,MAAa,SAAiC,YAA4B;CACzE,MAAM,OAAO;EACZ,GAAI,WAAW,EAAE;EACjB,aAAa,SAAS,eAAe;EACrC,YAAY,SAAS,cAAc,CAAC,QAAQ;EAC5C,mBACC,SAAS,qBACT;EACD;AAKD,KAAI,SAAS,YAAY;EAIxB,MAAM,gBAHa,MAAM,QAAQ,QAAQ,WAAW,GACjD,QAAQ,aACR,CAAC,GAAG,QAAQ,WAAW,MAAM,IAAI,CAAC,EACL,QAC9B,SACA,CAAC,OAAO,KAAK,SAAS,SAAS,aAAa,CAC1C,KAAK,MAAM,EAAE,aAAa,CAAC,CAC3B,SAAS,KAAK,aAAa,CAAC,CAC/B;AACD,MAAI,aAAa,SAAS,EACzB,OAAM,IAAI,gBACT,wBAAwB,aAAa,KAAK,KAAK,CAAC,6DAChD;;AAIH,QAAO;EACN,IAAI;EACJ,OAAO;AACN,UAAO,EACN,SAAS,EACR,eAAe;IACd,MAAM,EACL,QAAQ,EACP,MAAM,OAAO,MAAM;AAClB,YAAO,EACN,MAAM;MACL,MAAM,SAAS,eAAe;MAC9B,GAAG;MACH,EACD;OAEF,EACD;IACD,SAAS,EACR,QAAQ,EACP,MAAM,OAAO,SAAS,KAAK;AAC1B,SAAI,CAAC,IACJ;KAED,MAAM,OAAQ,MAAM,IAAI,QAAQ,gBAAgB,aAC/C,QAAQ,OACR;AAED,SAAI,KAAK,QAAQ;AAChB,UACC,KAAK,cACL,IAAI,KAAK,KAAK,WAAW,CAAC,SAAS,GAAG,KAAK,KAAK,EAC/C;AACD,aAAM,IAAI,QAAQ,gBAAgB,WACjC,QAAQ,QACR;QACC,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,CACD;AACD;;AAGD,UACC,QACC,IAAI,KAAK,WAAW,YAAY,IAChC,IAAI,KAAK,WAAW,mBAAmB,GACvC;OACD,MAAM,cACL,IAAI,QAAQ,QAAQ,YAAY,YAChC,GAAG,IAAI,QAAQ,QAAQ;AACxB,aAAM,IAAI,SACT,GAAG,YAAY,kCAAkC,KAAK,oBACtD;;AAGF,YAAM,IAAI,SAAS,aAAa;OAC/B,SAAS,KAAK;OACd,MAAM;OACN,CAAC;;OAGJ,EACD;IACD,EACD,EACD;;EAEF,OAAO,EACN,OAAO,CACN;GACC,QAAQ,SAAS;AAChB,WAAO,QAAQ,SAAS;;GAEzB,SAAS,qBAAqB,OAAO,QAAQ;IAC5C,MAAM,WACL,MAAM,oBAAiD,IAAI;AAE5D,QAAI,CAAC,SACJ;IAED,MAAM,UAAU,SAAS,QAAQ,YAAY;AAC5C,YAAO,CAAC,QAAQ;MACf;AAEF,WAAO,IAAI,KAAK,QAAQ;KACvB;GACF,CACD,EACD;EACD,WAAW;GACV,SAAS,QAAQ,KAAK;GACtB,SAAS,QAAQ,KAAK;GACtB,YAAY,WAAW,KAAK;GAC5B,iBAAiB,gBAAgB,KAAK;GACtC,WAAW,UAAU,KAAK;GAC1B,kBAAkB,iBAAiB,KAAK;GACxC,WAAW,UAAU,KAAK;GAC1B,SAAS,QAAQ,KAAK;GACtB,iBAAiB,gBAAgB,KAAK;GACtC,mBAAmB,mBAAmB;GACtC,mBAAmB,kBAAkB,KAAK;GAC1C,oBAAoB,mBAAmB,KAAK;GAC5C,YAAY,WAAW,KAAK;GAC5B,iBAAiB,gBAAgB,KAAK;GACtC,mBAAmB,kBAAkB,KAAU;GAC/C;EACD,cAAc;EACd,QAAQ,YAAY,QAAQ,KAAK,OAAO;EAC/B;EACT"}
1
+ {"version":3,"file":"admin.mjs","names":[],"sources":["../../../src/plugins/admin/admin.ts"],"sourcesContent":["import type { BetterAuthPlugin } from \"@better-auth/core\";\nimport { createAuthMiddleware } from \"@better-auth/core/api\";\nimport { BetterAuthError } from \"@better-auth/core/error\";\nimport { APIError } from \"../../api\";\nimport { mergeSchema } from \"../../db/schema\";\nimport { getEndpointResponse } from \"../../utils/plugin-helper\";\nimport { defaultRoles } from \"./access\";\nimport { ADMIN_ERROR_CODES } from \"./error-codes\";\nimport {\n\tadminUpdateUser,\n\tbanUser,\n\tcreateUser,\n\tgetUser,\n\timpersonateUser,\n\tlistUserSessions,\n\tlistUsers,\n\tremoveUser,\n\trevokeUserSession,\n\trevokeUserSessions,\n\tsetRole,\n\tsetUserPassword,\n\tstopImpersonating,\n\tunbanUser,\n\tuserHasPermission,\n} from \"./routes\";\nimport { schema } from \"./schema\";\nimport type {\n\tAdminOptions,\n\tSessionWithImpersonatedBy,\n\tUserWithRole,\n} from \"./types\";\n\nexport const admin = <O extends AdminOptions>(options?: O | undefined) => {\n\tconst opts = {\n\t\t...(options || {}),\n\t\tdefaultRole: options?.defaultRole ?? \"user\",\n\t\tadminRoles: options?.adminRoles ?? [\"admin\"],\n\t\tbannedUserMessage:\n\t\t\toptions?.bannedUserMessage ??\n\t\t\t\"You have been banned from this application. Please contact support if you believe this is an error.\",\n\t} as O &\n\t\tRequired<\n\t\t\tPick<AdminOptions, \"defaultRole\" | \"adminRoles\" | \"bannedUserMessage\">\n\t\t>;\n\n\tif (options?.adminRoles) {\n\t\tconst adminRoles = Array.isArray(options.adminRoles)\n\t\t\t? options.adminRoles\n\t\t\t: [...options.adminRoles.split(\",\")];\n\t\tconst invalidRoles = adminRoles.filter(\n\t\t\t(role) =>\n\t\t\t\t!Object.keys(options?.roles || defaultRoles)\n\t\t\t\t\t.map((r) => r.toLowerCase())\n\t\t\t\t\t.includes(role.toLowerCase()),\n\t\t);\n\t\tif (invalidRoles.length > 0) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t`Invalid admin roles: ${invalidRoles.join(\", \")}. Admin roles must be defined in the 'roles' configuration.`,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn {\n\t\tid: \"admin\",\n\t\tinit() {\n\t\t\treturn {\n\t\t\t\toptions: {\n\t\t\t\t\tdatabaseHooks: {\n\t\t\t\t\t\tuser: {\n\t\t\t\t\t\t\tcreate: {\n\t\t\t\t\t\t\t\tasync before(user) {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\t\t\t\trole: options?.defaultRole ?? \"user\",\n\t\t\t\t\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsession: {\n\t\t\t\t\t\t\tcreate: {\n\t\t\t\t\t\t\t\tasync before(session, ctx) {\n\t\t\t\t\t\t\t\t\tif (!ctx) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst user = (await ctx.context.internalAdapter.findUserById(\n\t\t\t\t\t\t\t\t\t\tsession.userId,\n\t\t\t\t\t\t\t\t\t)) as UserWithRole | null;\n\n\t\t\t\t\t\t\t\t\tif (user?.banned) {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tuser.banExpires &&\n\t\t\t\t\t\t\t\t\t\t\tnew Date(user.banExpires).getTime() < Date.now()\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tawait ctx.context.internalAdapter.updateUser(\n\t\t\t\t\t\t\t\t\t\t\t\tsession.userId,\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanned: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanReason: null,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbanExpires: null,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tctx &&\n\t\t\t\t\t\t\t\t\t\t\t(ctx.path.startsWith(\"/callback\") ||\n\t\t\t\t\t\t\t\t\t\t\t\tctx.path.startsWith(\"/oauth2/callback\"))\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tconst redirectURI =\n\t\t\t\t\t\t\t\t\t\t\t\tctx.context.options.onAPIError?.errorURL ||\n\t\t\t\t\t\t\t\t\t\t\t\t`${ctx.context.baseURL}/error`;\n\t\t\t\t\t\t\t\t\t\t\tthrow ctx.redirect(\n\t\t\t\t\t\t\t\t\t\t\t\t`${redirectURI}?error=banned&error_description=${opts.bannedUserMessage}`,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tthrow new APIError(\"FORBIDDEN\", {\n\t\t\t\t\t\t\t\t\t\t\tmessage: opts.bannedUserMessage,\n\t\t\t\t\t\t\t\t\t\t\tcode: \"BANNED_USER\",\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\thooks: {\n\t\t\tafter: [\n\t\t\t\t{\n\t\t\t\t\tmatcher(context) {\n\t\t\t\t\t\treturn context.path === \"/list-sessions\";\n\t\t\t\t\t},\n\t\t\t\t\thandler: createAuthMiddleware(async (ctx) => {\n\t\t\t\t\t\tconst response =\n\t\t\t\t\t\t\tawait getEndpointResponse<SessionWithImpersonatedBy[]>(ctx);\n\n\t\t\t\t\t\tif (!response) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newJson = response.filter((session) => {\n\t\t\t\t\t\t\treturn !session.impersonatedBy;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn ctx.json(newJson);\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tendpoints: {\n\t\t\tsetRole: setRole(opts),\n\t\t\tgetUser: getUser(opts),\n\t\t\tcreateUser: createUser(opts),\n\t\t\tadminUpdateUser: adminUpdateUser(opts),\n\t\t\tlistUsers: listUsers(opts),\n\t\t\tlistUserSessions: listUserSessions(opts),\n\t\t\tunbanUser: unbanUser(opts),\n\t\t\tbanUser: banUser(opts),\n\t\t\timpersonateUser: impersonateUser(opts),\n\t\t\tstopImpersonating: stopImpersonating(),\n\t\t\trevokeUserSession: revokeUserSession(opts),\n\t\t\trevokeUserSessions: revokeUserSessions(opts),\n\t\t\tremoveUser: removeUser(opts),\n\t\t\tsetUserPassword: setUserPassword(opts),\n\t\t\tuserHasPermission: userHasPermission(opts as O),\n\t\t},\n\t\t$ERROR_CODES: ADMIN_ERROR_CODES,\n\t\tschema: mergeSchema(schema, opts.schema),\n\t\toptions: options as NoInfer<O>,\n\t} satisfies BetterAuthPlugin;\n};\n"],"mappings":";;;;;;;;;;;;AAgCA,MAAa,SAAiC,YAA4B;CACzE,MAAM,OAAO;EACZ,GAAI,WAAW,EAAE;EACjB,aAAa,SAAS,eAAe;EACrC,YAAY,SAAS,cAAc,CAAC,QAAQ;EAC5C,mBACC,SAAS,qBACT;EACD;AAKD,KAAI,SAAS,YAAY;EAIxB,MAAM,gBAHa,MAAM,QAAQ,QAAQ,WAAW,GACjD,QAAQ,aACR,CAAC,GAAG,QAAQ,WAAW,MAAM,IAAI,CAAC,EACL,QAC9B,SACA,CAAC,OAAO,KAAK,SAAS,SAAS,aAAa,CAC1C,KAAK,MAAM,EAAE,aAAa,CAAC,CAC3B,SAAS,KAAK,aAAa,CAAC,CAC/B;AACD,MAAI,aAAa,SAAS,EACzB,OAAM,IAAI,gBACT,wBAAwB,aAAa,KAAK,KAAK,CAAC,6DAChD;;AAIH,QAAO;EACN,IAAI;EACJ,OAAO;AACN,UAAO,EACN,SAAS,EACR,eAAe;IACd,MAAM,EACL,QAAQ,EACP,MAAM,OAAO,MAAM;AAClB,YAAO,EACN,MAAM;MACL,MAAM,SAAS,eAAe;MAC9B,GAAG;MACH,EACD;OAEF,EACD;IACD,SAAS,EACR,QAAQ,EACP,MAAM,OAAO,SAAS,KAAK;AAC1B,SAAI,CAAC,IACJ;KAED,MAAM,OAAQ,MAAM,IAAI,QAAQ,gBAAgB,aAC/C,QAAQ,OACR;AAED,SAAI,MAAM,QAAQ;AACjB,UACC,KAAK,cACL,IAAI,KAAK,KAAK,WAAW,CAAC,SAAS,GAAG,KAAK,KAAK,EAC/C;AACD,aAAM,IAAI,QAAQ,gBAAgB,WACjC,QAAQ,QACR;QACC,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,CACD;AACD;;AAGD,UACC,QACC,IAAI,KAAK,WAAW,YAAY,IAChC,IAAI,KAAK,WAAW,mBAAmB,GACvC;OACD,MAAM,cACL,IAAI,QAAQ,QAAQ,YAAY,YAChC,GAAG,IAAI,QAAQ,QAAQ;AACxB,aAAM,IAAI,SACT,GAAG,YAAY,kCAAkC,KAAK,oBACtD;;AAGF,YAAM,IAAI,SAAS,aAAa;OAC/B,SAAS,KAAK;OACd,MAAM;OACN,CAAC;;OAGJ,EACD;IACD,EACD,EACD;;EAEF,OAAO,EACN,OAAO,CACN;GACC,QAAQ,SAAS;AAChB,WAAO,QAAQ,SAAS;;GAEzB,SAAS,qBAAqB,OAAO,QAAQ;IAC5C,MAAM,WACL,MAAM,oBAAiD,IAAI;AAE5D,QAAI,CAAC,SACJ;IAED,MAAM,UAAU,SAAS,QAAQ,YAAY;AAC5C,YAAO,CAAC,QAAQ;MACf;AAEF,WAAO,IAAI,KAAK,QAAQ;KACvB;GACF,CACD,EACD;EACD,WAAW;GACV,SAAS,QAAQ,KAAK;GACtB,SAAS,QAAQ,KAAK;GACtB,YAAY,WAAW,KAAK;GAC5B,iBAAiB,gBAAgB,KAAK;GACtC,WAAW,UAAU,KAAK;GAC1B,kBAAkB,iBAAiB,KAAK;GACxC,WAAW,UAAU,KAAK;GAC1B,SAAS,QAAQ,KAAK;GACtB,iBAAiB,gBAAgB,KAAK;GACtC,mBAAmB,mBAAmB;GACtC,mBAAmB,kBAAkB,KAAK;GAC1C,oBAAoB,mBAAmB,KAAK;GAC5C,YAAY,WAAW,KAAK;GAC5B,iBAAiB,gBAAgB,KAAK;GACtC,mBAAmB,kBAAkB,KAAU;GAC/C;EACD,cAAc;EACd,QAAQ,YAAY,QAAQ,KAAK,OAAO;EAC/B;EACT"}
@@ -307,7 +307,7 @@ const listUsers = (opts) => createAuthEndpoint("/admin/list-users", {
307
307
  operator: ctx.query.searchOperator || "contains",
308
308
  value: ctx.query.searchValue
309
309
  });
310
- if (ctx.query?.filterValue) where.push({
310
+ if (ctx.query?.filterValue !== void 0) where.push({
311
311
  field: ctx.query.filterField || "email",
312
312
  operator: ctx.query.filterOperator || "eq",
313
313
  value: ctx.query.filterValue