App Logo
Plugins

Admin Plugin

Overview

This plugin provides administrative operations for managing users, accounts, sessions, and user impersonation. It enables system administrators to perform CRUD operations on users and accounts, manage user and session states (banning, revoking sessions), control impersonation activities and more.


Configuration

Standalone Mode

[plugins.admin]
enabled = true
impersonation_max_expires_in = "15m"

Library Mode

import (
  adminplugin "github.com/Authula/authula/plugins/admin"
  adminplugintypes "github.com/Authula/authula/plugins/admin/types"
)

adminplugin.New(adminplugintypes.AdminPluginConfig{
  Enabled: true,
  ImpersonationMaxExpiresIn: 15 * time.Minute,
}),

Database Schema

admin_impersonations Table

ColumnType
idstring
actor_user_idstring
target_user_idstring
actor_session_idstring
impersonation_session_idstring
reasonstring
started_attimestamp
expires_attimestamp
ended_attimestamp
ended_by_user_idstring
created_attimestamp
updated_attimestamp

admin_user_states Table

ColumnType
user_idstring
bannedboolean
banned_attimestamp
banned_untiltimestamp
banned_reasonstring
banned_by_user_idstring
created_attimestamp
updated_attimestamp

admin_session_states Table

ColumnType
session_idstring
revoked_attimestamp
revoked_reasonstring
revoked_by_user_idstring
impersonator_user_idstring
impersonation_reasonstring
impersonation_expires_attimestamp
created_attimestamp
updated_attimestamp

API Reference

User Management

MethodEndpointDescription
CreateUserPOST /admin/usersCreate a new user.
GetAllUsersGET /admin/usersRetrieve all users with cursor-based pagination.
GetUserByIDGET /admin/users/{user_id}Fetch a specific user by ID.
UpdateUserPATCH /admin/users/{user_id}Update user.
DeleteUserDELETE /admin/users/{user_id}Delete a user.

Account Management

MethodEndpointDescription
CreateAccountPOST /admin/users/{user_id}/accountsCreate a new linked provider account for a user.
GetUserAccountsGET /admin/users/{user_id}/accountsRetrieve all accounts associated with a user.
GetAccountByIDGET /admin/accounts/{id}Fetch a specific account by ID.
UpdateAccountPATCH /admin/accounts/{id}Update account details.
DeleteAccountDELETE /admin/accounts/{id}Delete a user account and remove provider linkage.

User State Management

MethodEndpointDescription
GetUserStateGET /admin/users/{user_id}/stateRetrieve user state including banned status and ban details.
CreateUserStatePOST /admin/users/{user_id}/stateCreate user state.
UpdateUserStatePATCH /admin/users/{user_id}/stateUpdate user state.
DeleteUserStateDELETE /admin/users/{user_id}/stateDelete user state record.
GetBannedUserStatesGET /admin/users/states/bannedRetrieve all banned users.
BanUserPOST /admin/users/{user_id}/banBan a user with optional expiration time and reason.
UnbanUserPOST /admin/users/{user_id}/unbanRemove ban from a user.

Session State Management

MethodEndpointDescription
GetSessionStateGET /admin/sessions/{session_id}/stateRetrieve session state including revocation status.
CreateSessionStatePOST /admin/sessions/{session_id}/stateCreate session state.
UpdateSessionStatePATCH /admin/sessions/{session_id}/stateUpdate session state.
DeleteSessionStateDELETE /admin/sessions/{session_id}/stateDelete session state record.
RevokeSessionPOST /admin/sessions/{session_id}/revokeRevoke a session with optional reason.
GetRevokedSessionStatesGET /admin/sessions/states/revokedRetrieve all revoked sessions with session state.
GetUserAdminSessionsGET /admin/users/{user_id}/sessionsRetrieve all sessions with session state for a user.

Impersonation Management

MethodEndpointDescription
GetAllImpersonationsGET /admin/impersonationsRetrieve all active impersonations.
GetImpersonationByIDGET /admin/impersonations/{impersonation_id}Fetch a specific impersonation.
StartImpersonationPOST /admin/impersonationsBegin impersonating a user as an admin with audit trail.
StopImpersonationPOST /admin/impersonations/{impersonation_id}/stopEnd impersonation and restore original admin session.

On this page