Skip to content

Commit 5d7dd9e

Browse files
fix: access control indexing type (#8155)
Co-authored-by: Alex Yang <himself65@outlook.com>
1 parent 8959cb9 commit 5d7dd9e

File tree

5 files changed

+10
-8
lines changed

5 files changed

+10
-8
lines changed

packages/better-auth/src/plugins/access/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type { LiteralString } from "@better-auth/core";
22
import type { AuthorizeResponse, createAccessControl } from "./access";
33

4+
export type ArrayElement<T> = T extends readonly (infer E)[] ? E : never;
5+
46
export type SubArray<T extends unknown[] | readonly unknown[] | any[]> =
57
| T[number][]
68
| ReadonlyArray<T[number]>;

packages/better-auth/src/plugins/admin/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { BetterAuthClientPlugin } from "@better-auth/core";
2-
import type { AccessControl, Role } from "../access";
2+
import type { AccessControl, ArrayElement, Role } from "../access";
33
import type { defaultStatements } from "./access";
44
import { adminAc, userAc } from "./access";
55
import type { admin } from "./admin";
@@ -26,7 +26,7 @@ export const adminClient = <O extends AdminClientOptions>(
2626
type PermissionType = {
2727
[key in keyof Statements]?: Array<
2828
Statements[key] extends readonly unknown[]
29-
? Statements[key][number]
29+
? ArrayElement<Statements[key]>
3030
: never
3131
>;
3232
};

packages/better-auth/src/plugins/admin/routes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from "../../cookies";
1616
import { parseSessionOutput, parseUserOutput } from "../../db/schema";
1717
import { getDate } from "../../utils/date";
18-
import type { AccessControl } from "../access";
18+
import type { AccessControl, ArrayElement } from "../access";
1919
import type { defaultStatements } from "./access";
2020
import { ADMIN_ERROR_CODES } from "./error-codes";
2121
import { hasPermission } from "./has-permission";
@@ -1603,7 +1603,7 @@ export const userHasPermission = <O extends AdminOptions>(opts: O) => {
16031603
type PermissionType = {
16041604
[key in keyof Statements]?: Array<
16051605
Statements[key] extends readonly unknown[]
1606-
? Statements[key][number]
1606+
? ArrayElement<Statements[key]>
16071607
: never
16081608
>;
16091609
};

packages/better-auth/src/plugins/organization/client.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type {
1111
} from "../../plugins/organization/schema";
1212
import type { BetterAuthOptions, BetterAuthPlugin } from "../../types";
1313
import type { Prettify } from "../../types/helper";
14-
import type { AccessControl, Role } from "../access";
14+
import type { AccessControl, ArrayElement, Role } from "../access";
1515
import type { defaultStatements } from "./access";
1616
import { adminAc, defaultRoles, memberAc, ownerAc } from "./access";
1717
import { ORGANIZATION_ERROR_CODES } from "./error-codes";
@@ -95,7 +95,7 @@ export const organizationClient = <CO extends OrganizationClientOptions>(
9595
type PermissionType = {
9696
[key in keyof Statements]?: Array<
9797
Statements[key] extends readonly unknown[]
98-
? Statements[key][number]
98+
? ArrayElement<Statements[key]>
9999
: never
100100
>;
101101
};

packages/better-auth/src/plugins/organization/organization.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { APIError } from "@better-auth/core/error";
55
import * as z from "zod";
66
import { getSessionFromCtx } from "../../api";
77
import { shimContext } from "../../utils/shim";
8-
import type { AccessControl } from "../access";
8+
import type { AccessControl, ArrayElement } from "../access";
99
import type { defaultStatements } from "./access";
1010
import { defaultRoles } from "./access";
1111
import { getOrgAdapter } from "./adapter";
@@ -183,7 +183,7 @@ const createHasPermission = <O extends OrganizationOptions>(options: O) => {
183183
type PermissionType = {
184184
[key in keyof Statements]?: Array<
185185
Statements[key] extends readonly unknown[]
186-
? Statements[key][number]
186+
? ArrayElement<Statements[key]>
187187
: never
188188
>;
189189
};

0 commit comments

Comments
 (0)