Admin
Manage users and sessions as an administrator.
This page documents the current Ruby port behavior. Ruby uses snake_case option names and auth.api method names; HTTP paths and JSON keys keep the upstream wire shape where implemented.
Configure
require "better_auth"
auth = BetterAuth.auth(
secret: ENV.fetch("BETTER_AUTH_SECRET"),
base_url: ENV.fetch("BETTER_AUTH_URL", "http://localhost:3000"),
plugins: [
BetterAuth::Plugins.admin(admin_roles: ["admin"], default_role: "user")
]
)Usage
users = auth.api.list_users(headers: { "cookie" => admin_cookie }, query: { searchValue: "ada", searchField: "email" })
auth.api.set_role(headers: { "cookie" => admin_cookie }, body: { userId: users[:users].first["id"], role: "admin" })Routes
| Method | Path | Ruby API method |
|---|---|---|
GET | /admin/list-users | auth.api.list_users |
POST | /admin/create-user | auth.api.create_user |
POST | /admin/set-role | auth.api.set_role |
POST | /admin/ban-user | auth.api.ban_user |
POST | /admin/unban-user | auth.api.unban_user |
POST | /admin/impersonate-user | auth.api.impersonate_user |
POST | /admin/set-user-password | auth.api.set_user_password |
POST | /admin/has-permission | auth.api.user_has_permission |
Options
Current Ruby options accepted by BetterAuth::Plugins.admin:
default_roleadmin_rolesbanned_user_messageimpersonation_session_durationacrolesdefault_ban_expires_indefault_ban_reasonallow_impersonating_adminsadmin_user_ids
Support Notes
- The examples above are based on Ruby plugin source and tests in
packages/better_auth. - If an upstream section is not represented here, treat it as not yet documented or not yet supported by the Ruby port until the matching Ruby implementation exists.