@better-auth-ui/core
Version:
Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.
127 lines (126 loc) • 4.1 kB
TypeScript
import { AdminLocalization } from './admin-localization';
export type AdminPluginOptions = {
/** Roles Better Auth treats as administrators. @default ["admin"] */
adminRoles?: string | readonly string[];
/** User IDs Better Auth treats as administrators regardless of role. */
adminUserIds?: readonly string[];
/** Whether users can have more than one role. @default true */
allowMultipleRoles?: boolean;
/** Default role selected when an administrator creates a user. @default "user" */
defaultRole?: string;
/** Where to navigate after starting an impersonation session. */
impersonationRedirectTo?: string;
/**
* Override the plugin's default localization strings.
* @remarks `AdminLocalization`
*/
localization?: Partial<AdminLocalization>;
/** Number of users loaded per page. Clamped to 1-100. @default 20 */
pageSize?: number;
/** Roles offered by user-management forms. @default ["user", "admin"] */
roles?: readonly string[];
/** Show session IP addresses. @default false */
showIpAddress?: boolean;
};
/** Check whether a target requires Better Auth's `user:impersonate-admins` permission. */
export declare function isAdminTarget(user: {
id: string;
role?: string | null;
}, adminRoles?: readonly string[], adminUserIds?: readonly string[]): boolean;
export type ImpersonatingSession = {
session: {
impersonatedBy: string;
};
};
/**
* Check whether a Better Auth session belongs to an impersonated user.
*/
export declare function isImpersonatingSession(session: unknown): session is ImpersonatingSession;
/**
* Adds UI integrations for Better Auth's admin plugin.
*
* Pair this UI plugin with Better Auth's `admin()` server plugin and
* `adminClient()` client plugin.
*/
export declare const adminPlugin: ((options?: AdminPluginOptions | undefined) => {
adminRoles: string[];
adminUserIds: string[];
allowMultipleRoles: boolean;
defaultRole: string;
impersonationRedirectTo: string | undefined;
localization: {
accessDenied: string;
accessDeniedDescription: string;
active: string;
accountInformation: string;
admin: string;
banned: string;
banDuration: string;
banDurationDescription: string;
banExpires: string;
banReason: string;
banUser: string;
cancel: string;
close: string;
copyUserId: string;
created: string;
createUser: string;
deleteUser: string;
dangerZone: string;
email: string;
emailVerified: string;
endsWith: string;
filterAllStatuses: string;
loadUsersError: string;
loadUsersErrorDescription: string;
name: string;
moreActions: string;
noUsers: string;
noUsersDescription: string;
nextPage: string;
previousPage: string;
impersonateUser: string;
overview: string;
password: string;
profileAndAccess: string;
retry: string;
role: string;
search: string;
searchOperator: string;
searchContains: string;
startsWith: string;
searchByEmail: string;
searchByName: string;
sessions: string;
noSessions: string;
revoke: string;
revokeAllSessions: string;
saveRole: string;
saveChanges: string;
saveUser: string;
setPassword: string;
security: string;
status: string;
sort: string;
sortNewest: string;
sortOldest: string;
sortNameAscending: string;
sortNameDescending: string;
stopImpersonating: string;
userDetails: string;
userId: string;
unknownView: string;
unknownViewDescription: string;
unbanUser: string;
users: string;
usersDescription: string;
usersPaginationRange: string;
};
pageSize: number;
roles: string[];
showIpAddress: boolean;
} & {
id: "admin";
}) & {
id: "admin";
};