UNPKG

@better-auth-ui/core

Version:

Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.

387 lines (386 loc) 9.75 kB
import { t as e } from "../../auth-query-keys-B_bcsA3s.js"; import { t } from "../../create-auth-plugin-BXWyolC8.js"; import { skipToken as n } from "@tanstack/query-core"; //#region src/plugins/admin/admin-localization.ts var r = { accessDenied: "Access denied", accessDeniedDescription: "You do not have permission to manage users.", active: "Active", accountInformation: "Account information", admin: "Administration", banned: "Banned", banDuration: "Ban duration (days)", banDurationDescription: "Leave blank for a permanent ban.", banExpires: "Ban expires", banReason: "Ban reason", banUser: "Ban user", cancel: "Cancel", close: "Close", copyUserId: "Copy user ID", created: "Created", createUser: "Create user", deleteUser: "Delete user", dangerZone: "Danger zone", email: "Email", emailVerified: "Email verified", endsWith: "Ends with", filterAllStatuses: "All statuses", loadUsersError: "Could not load users", loadUsersErrorDescription: "Try again or check your Admin plugin configuration.", name: "Name", moreActions: "More actions", noUsers: "No users found", noUsersDescription: "Change the search or create a user.", nextPage: "Next page", previousPage: "Previous page", impersonateUser: "Impersonate user", overview: "Overview", password: "Password", profileAndAccess: "Profile and access", retry: "Retry", role: "Role", search: "Search", searchOperator: "Search operator", searchContains: "Contains", startsWith: "Starts with", searchByEmail: "Search by email", searchByName: "Search by name", sessions: "Sessions", noSessions: "No active sessions", revoke: "Revoke", revokeAllSessions: "Revoke all sessions", saveRole: "Save role", saveChanges: "Save changes", saveUser: "Save user", setPassword: "Set password", security: "Security", status: "Status", sort: "Sort", sortNewest: "Newest first", sortOldest: "Oldest first", sortNameAscending: "Name A-Z", sortNameDescending: "Name Z-A", stopImpersonating: "Stop impersonating", userDetails: "User details", userId: "User ID", unknownView: "Unknown admin view", unknownViewDescription: "This static admin path is not registered.", unbanUser: "Unban user", users: "Users", usersDescription: "Manage user access, roles, and sessions.", usersPaginationRange: "{{from}}-{{to}} of {{total}}" }, i = { all: ["auth", "admin"], banUser: [ "auth", "admin", "banUser" ], createUser: [ "auth", "admin", "createUser" ], impersonateUser: [ "auth", "admin", "impersonateUser" ], removeUser: [ "auth", "admin", "removeUser" ], revokeUserSession: [ "auth", "admin", "revokeUserSession" ], revokeUserSessions: [ "auth", "admin", "revokeUserSessions" ], setRole: [ "auth", "admin", "setRole" ], setUserPassword: [ "auth", "admin", "setUserPassword" ], stopImpersonating: [ "auth", "admin", "stopImpersonating" ], unbanUser: [ "auth", "admin", "unbanUser" ], updateUser: [ "auth", "admin", "updateUser" ] }, a = { all: (t) => [...e.user(t), "admin"], users: { all: (e) => [...a.all(e), "users"], lists: (e) => [...a.users.all(e), "list"], list: (e, t) => [...a.users.lists(e), t], details: (e) => [...a.users.all(e), "detail"], detail: (e, t) => [...a.users.details(e), t ?? null], sessions: (e, t) => [...a.users.detail(e, t), "sessions"] }, permissions: { all: (e) => [...a.all(e), "permissions"], has: (e, t) => [...a.permissions.all(e), t] } }; //#endregion //#region src/plugins/admin/admin-mutations.ts function o(e, t) { return { mutationKey: i.createUser, mutationFn: (t) => e.admin.createUser({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t)] } }; } function s(e, t) { return { mutationKey: i.updateUser, mutationFn: (t) => e.admin.updateUser({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t), a.users.details(t)] } }; } function c(e, t) { return { mutationKey: i.setRole, mutationFn: (t) => e.admin.setRole({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t), a.users.details(t)] } }; } function l(e, t = () => {}) { return { mutationKey: i.setUserPassword, mutationFn: (t) => e.admin.setUserPassword({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), gcTime: 0, onSettled: t }; } function u(e, t) { return { mutationKey: i.banUser, mutationFn: (t) => e.admin.banUser({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t), a.users.details(t)] } }; } function d(e, t) { return { mutationKey: i.unbanUser, mutationFn: (t) => e.admin.unbanUser({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t), a.users.details(t)] } }; } function f(e, t, n) { return { mutationKey: i.revokeUserSession, mutationFn: (t) => e.admin.revokeUserSession({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.sessions(t, n)] } }; } function p(e, t, n) { return { mutationKey: i.revokeUserSessions, mutationFn: (t) => e.admin.revokeUserSessions({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.sessions(t, n)] } }; } function m(t, n) { return { mutationKey: i.impersonateUser, mutationFn: (e) => t.admin.impersonateUser({ ...e, fetchOptions: { ...e.fetchOptions, throw: !0 } }), meta: { removes: [a.all(n)], awaits: [e.session] } }; } function h(e, t) { return { mutationKey: i.removeUser, mutationFn: (t) => e.admin.removeUser({ ...t, fetchOptions: { ...t.fetchOptions, throw: !0 } }), meta: { awaits: [a.users.lists(t), a.users.details(t)] } }; } //#endregion //#region src/plugins/admin/admin-plugin.ts var g = (e) => { let t = e ?? 20; return Number.isFinite(t) ? Math.min(100, Math.max(1, Math.floor(t))) : 20; }, _ = (e) => { let t = Array.from(new Set(e?.map((e) => e.trim()).filter(Boolean))); return t.length ? t : ["user", "admin"]; }, v = (e) => { let t = typeof e == "string" ? [e] : e; return Array.from(new Set(t?.map((e) => e.trim()).filter(Boolean))); }; function y(e, t = ["admin"], n = []) { return n.includes(e.id) ? !0 : (e.role?.split(",").map((e) => e.trim()).filter(Boolean))?.some((e) => t.includes(e)) ?? !1; } function b(e) { return !e || typeof e != "object" || !("session" in e) || !e.session || typeof e.session != "object" || !("impersonatedBy" in e.session) ? !1 : typeof e.session.impersonatedBy == "string" && e.session.impersonatedBy.length > 0; } var x = t("admin", (e = {}) => { let t = _(e.roles), n = e.defaultRole?.trim() || t[0] || "user", i = v(e.adminRoles); return { adminRoles: i.length ? i : ["admin"], adminUserIds: v(e.adminUserIds), allowMultipleRoles: e.allowMultipleRoles ?? !0, defaultRole: n, impersonationRedirectTo: e.impersonationRedirectTo, localization: { ...r, ...e.localization }, pageSize: g(e.pageSize), roles: t.includes(n) ? t : [n, ...t], showIpAddress: e.showIpAddress ?? !1 }; }), S = class extends Error { code; status; statusText; constructor(e) { super(e.message || e.statusText || "Admin request failed"), this.name = "AdminClientError", this.code = e.code, this.status = e.status, this.statusText = e.statusText; } }, C = (e) => { if (e.error) throw new S(e.error); return e.data; }; function w(e, t, r = {}) { return { queryKey: a.users.list(t, r), meta: { errorPresentation: "inline" }, queryFn: t ? async ({ signal: t }) => C(await e.admin.listUsers({ query: r, fetchOptions: { signal: t } })) : n }; } function T(e, t, r) { return { queryKey: a.users.detail(t, r), meta: { errorPresentation: "inline" }, queryFn: t && r ? async ({ signal: t }) => C(await e.admin.getUser({ query: { id: r }, fetchOptions: { signal: t } })) : n }; } function E(e, t, r) { return { queryKey: a.users.sessions(t, r), meta: { errorPresentation: "inline" }, queryFn: t && r ? async ({ signal: t }) => C(await e.admin.listUserSessions({ userId: r, fetchOptions: { signal: t } })) : n }; } function D(e, t, r) { return { queryKey: a.permissions.has(t, r), queryFn: t ? async ({ signal: t }) => C(await e.admin.hasPermission({ permissions: r, fetchOptions: { signal: t } })) : n }; } var O = (e, t, n, r) => e.ensureQueryData(w(t, n, r)), k = (e, t, n, r) => e.fetchQuery(T(t, n, r)); //#endregion //#region src/plugins/admin/admin-route.ts function A(e, t) { if (e !== void 0) return t.find((t) => t.path === e); } //#endregion //#region src/plugins/admin/stop-impersonating-mutation.ts function j(t) { return { mutationKey: i.stopImpersonating, mutationFn: (e) => t.admin.stopImpersonating({ ...e ?? {}, fetchOptions: { ...e?.fetchOptions, throw: !0 } }), meta: { awaits: [e.session] } }; } //#endregion export { S as AdminClientError, r as adminLocalization, i as adminMutationKeys, D as adminPermissionOptions, x as adminPlugin, a as adminQueryKeys, T as adminUserOptions, E as adminUserSessionsOptions, w as adminUsersOptions, u as banAdminUserOptions, o as createAdminUserOptions, O as ensureAdminUsers, k as fetchAdminUser, m as impersonateAdminUserOptions, y as isAdminTarget, b as isImpersonatingSession, h as removeAdminUserOptions, A as resolveAdminPath, f as revokeAdminUserSessionOptions, p as revokeAdminUserSessionsOptions, l as setAdminUserPasswordOptions, c as setAdminUserRoleOptions, j as stopImpersonatingOptions, d as unbanAdminUserOptions, s as updateAdminUserOptions };