Versions in this module Expand all Collapse all v0 v0.1.0 Oct 14, 2026 Changes in this version + const ActionBan + const ActionCreate + const ActionDelete + const ActionDisable + const ActionEnable + const ActionGet + const ActionImpersonate + const ActionImpersonateAdmins + const ActionList + const ActionReset + const ActionRevoke + const ActionSetEmail + const ActionSetPassword + const ActionSetRole + const ActionUpdate + const ColBanExpiresAt + const ColBanReason + const ColBannedAt + const ColGrantedAt + const ColRole + const DataImage + const DataName + const DefaultBannedMessage + const DefaultPageSize + const DefaultSearchLimit + const DefaultSearchWindow + const EndpointAllSessions + const EndpointAudit + const EndpointBan + const EndpointCreateUser + const EndpointDisableTwoFactor + const EndpointEnableTwoFactor + const EndpointHasPermission + const EndpointImpersonate + const EndpointRemoveUser + const EndpointResetTwoFactor + const EndpointRevokeSession + const EndpointRevokeSessions + const EndpointSearchUsers + const EndpointSessions + const EndpointSetAdmin + const EndpointSetEmail + const EndpointSetPassword + const EndpointSetRole + const EndpointStopImpersonating + const EndpointTwoFactor + const EndpointUnban + const EndpointUpdateUser + const EndpointUser + const EndpointUsers + const FilterListSeparator + const MaxFilterValues + const MaxPageSize + const MaxSearchLength + const PluginName + const ResourceSession + const ResourceTwoFactor + const ResourceUser + const RoleAdmin + const RoleUser + var BanExpiresAt = sqlb.Col[*time.Time](auth.TableUser, ColBanExpiresAt) + var BanReason = sqlb.Col[string](auth.TableUser, ColBanReason) + var BannedAt = sqlb.Col[*time.Time](auth.TableUser, ColBannedAt) + var DefaultStatements = Permissions + var ErrAdminTarget = auth.NewError("admin.admin_target", http.StatusConflict, ...) + var ErrBadFilter = auth.NewError("admin.bad_filter", http.StatusBadRequest, ...) + var ErrBadFilterField = auth.NewError("admin.bad_filter_field", http.StatusBadRequest, ...) + var ErrBadFilterOperator = auth.NewError("admin.bad_filter_operator", http.StatusBadRequest, ...) + var ErrBadFilterValue = auth.NewError("admin.bad_filter_value", http.StatusBadRequest, ...) + var ErrBadRole = auth.NewError("admin.bad_role", http.StatusBadRequest, "This role does not exist.") + var ErrBadSearchField = auth.NewError("admin.bad_search_field", http.StatusBadRequest, ...) + var ErrBadSearchOperator = auth.NewError("admin.bad_search_operator", http.StatusBadRequest, ...) + var ErrBadSort = auth.NewError("admin.bad_sort", http.StatusBadRequest, "This sort order does not exist.") + var ErrBadUserData = auth.NewError("admin.bad_user_data", http.StatusBadRequest, ...) + var ErrBanned = auth.NewError("admin.banned", http.StatusForbidden, DefaultBannedMessage) + var ErrBannedTarget = auth.NewError("admin.banned_target", http.StatusConflict, "This user is banned.") + var ErrEmailRequired = auth.NewError("admin.email_required", http.StatusBadRequest, "An email address is required.") + var ErrFieldNotEditable = auth.NewError("admin.field_not_editable", http.StatusBadRequest, ...) + var ErrForbidden = auth.NewError("admin.forbidden", http.StatusForbidden, "Only an administrator can do this.") + var ErrLastAdmin = auth.NewError("admin.last_admin", http.StatusConflict, "Keep at least one administrator.") + var ErrNoAuditPlugin = auth.NewError("admin.no_audit_plugin", http.StatusConflict, "No audit plugin is registered.") + var ErrNoAuthorizer = errors.New("admin: WithAuthorizer needs an authorizer") + var ErrNoEmailPlugin = auth.NewError("admin.no_email_plugin", http.StatusConflict, "No email plugin is registered.") + var ErrNoPasswordPlugin = auth.NewError("admin.no_password_plugin", http.StatusConflict, ...) + var ErrNoTwoFactorPlugin = auth.NewError("admin.no_two_factor_plugin", http.StatusConflict, ...) + var ErrNoUserData = auth.NewError("admin.no_user_data", http.StatusBadRequest, "There is nothing to update.") + var ErrNotImpersonating = auth.NewError("admin.not_impersonating", http.StatusConflict, ...) + var ErrSearchValue = auth.NewError("admin.search_value", http.StatusBadRequest, ...) + var ErrSelfTarget = auth.NewError("admin.self_target", http.StatusConflict, "You cannot do this to yourself.") + var ErrSessionsNotListable = auth.NewError("admin.sessions_not_listable", http.StatusConflict, ...) + var FilterFieldValues = []FilterField + var FilterOperatorValues = []FilterOperator + var FlagValues = []Flag + var GrantedAt = sqlb.Col[*time.Time](auth.TableUser, ColGrantedAt) + var SearchFieldValues = []SearchField + var SearchOperatorValues = []SearchOperator + var SortDirectionValues = []SortDirection + var SortFieldValues = []SortField + var UserRole = sqlb.Col[string](auth.TableUser, ColRole) + var UserSortValues = []UserSort + func Bindings(c *AdminColumns) []sqlb.Binding + func DefaultRoles() map[string]Permissions + func Grants(granted, want Permissions, connector Connector) bool + type AccessRequest struct + Call *auth.Call + Connector Connector + Operation auth.EndpointID + Permissions Permissions + Roles []string + TargetUserID string + UserID string + type AdminColumns struct + AdminGrantedAt *time.Time + BanExpiresAt *time.Time + BanReason string + BannedAt *time.Time + Role string + type AllSessionsRequest struct + Limit int + Offset int + Page int + UserID string + type AllSessionsResult struct + Limit int + Offset int + Page int + Sessions []FleetSession + Total int64 + type Authorizer interface + Authorize func(ctx context.Context, req AccessRequest) (bool, error) + type AuthorizerFunc func(ctx context.Context, req AccessRequest) (bool, error) + func (f AuthorizerFunc) Authorize(ctx context.Context, req AccessRequest) (bool, error) + type Ban struct + BannedAt time.Time + ExpiresAt *time.Time + Reason string + UserID string + type BanRequest struct + Minutes int + Reason string + UserID string + func (r BanRequest) TargetUserID() string + type Connector string + const And + const Or + type CreateUserRequest struct + Email string + Image string + Name string + Password auth.Token + Verified bool + type CreateUserResult struct + User auth.UserView + type EditableColumn struct + func Editable[T any](col sqlb.Expr[T], check func(T) error) EditableColumn + func (e EditableColumn) Name() string + type EmailSetter interface + SetFor func(ctx context.Context, userID, address string, verified bool) error + type EventQuerier interface + Events func(ctx context.Context, q audit.Query) (audit.Page, error) + type EventRecorder interface + Record func(ctx context.Context, e audit.Event) error + type FilterField string + const FilterBanExpires + const FilterBanReason + const FilterBanned + const FilterCreatedAt + const FilterEmail + const FilterEmailVerified + const FilterID + const FilterName + const FilterRole + const FilterUpdatedAt + type FilterOperator string + const FilterContains + const FilterEndsWith + const FilterEq + const FilterGt + const FilterGte + const FilterIn + const FilterLt + const FilterLte + const FilterNe + const FilterNotIn + const FilterStartsWith + func FilterOperatorsOf(field FilterField) []FilterOperator + type Flag string + const FlagFalse + const FlagTrue + type FleetSession struct + CreatedAt time.Time + ExpiresAt time.Time + ID string + IP string + Impersonated bool + LastSeenAt time.Time + UserAgent string + UserID string + type IdentityView struct + Kind auth.IdentifierKindName + Primary bool + Value string + Verified bool + type ImpersonateRequest struct + Minutes int + UserID string + func (r ImpersonateRequest) TargetUserID() string + type ImpersonateResult struct + AdminToken auth.Token + ExpiresAt time.Time + Token auth.Token + User auth.UserView + type Option func(*Plugin) + func AdminIDs(ids ...string) Option + func AdminRoles(names ...string) Option + func AllowImpersonatingAdmins() Option + func BannedMessage(fn func(ctx context.Context, b Ban) string) Option + func DefaultBanDuration(d time.Duration) Option + func DefaultBanReason(reason string) Option + func DefaultRole(name string) Option + func EditableColumns(cols ...EditableColumn) Option + func ImpersonationTTL(d time.Duration) Option + func SearchRate(limit int, window time.Duration) Option + func WithAuthorizer(a Authorizer) Option + type PasswordSetter interface + SetPassword func(ctx context.Context, userID string, password auth.Token) error + type PermissionRequest struct + Connector Connector + Permissions Permissions + UserID string + type PermissionResult struct + Success bool + type Permissions map[string][]string + func (p Permissions) Clone() Permissions + type Plugin struct + func New(opts ...Option) *Plugin + func (p *Plugin) AllSessions(ctx context.Context, in AllSessionsRequest) (AllSessionsResult, error) + func (p *Plugin) Audit(ctx context.Context, q audit.Query) (audit.Page, error) + func (p *Plugin) Ban(ctx context.Context, userID, reason string) error + func (p *Plugin) BanFor(ctx context.Context, userID, reason string, until time.Time) error + func (p *Plugin) CheckRolePermission(ctx context.Context, role string, perms Permissions) bool + func (p *Plugin) Columns() []auth.ColumnExtension + func (p *Plugin) CreateUser(ctx context.Context, in CreateUserRequest) (auth.UserView, error) + func (p *Plugin) DataHooks() auth.DataHooks + func (p *Plugin) DisableTwoFactor(ctx context.Context, userID string) error + func (p *Plugin) EnableTwoFactor(ctx context.Context, userID string) error + func (p *Plugin) Grant(ctx context.Context, userID string) error + func (p *Plugin) HasPermission(ctx context.Context, in PermissionRequest) (bool, error) + func (p *Plugin) Impersonate(ctx context.Context, in ImpersonateRequest) (ImpersonateResult, error) + func (p *Plugin) Init(a *auth.Auth) error + func (p *Plugin) Name() string + func (p *Plugin) Operations() []auth.Operation + func (p *Plugin) OptionErr() error + func (p *Plugin) RateLimits() []auth.RateRule + func (p *Plugin) RemoveUser(ctx context.Context, userID string) error + func (p *Plugin) ResetTwoFactor(ctx context.Context, userID string) error + func (p *Plugin) ResetTwoFactorFor(ctx context.Context, userID string) error + func (p *Plugin) RevokeSession(ctx context.Context, userID, sessionID string) error + func (p *Plugin) RevokeSessions(ctx context.Context, userID string) error + func (p *Plugin) RolesOf(ctx context.Context, userID string) ([]string, error) + func (p *Plugin) SearchUsers(ctx context.Context, in SearchUsersRequest) (UsersResult, error) + func (p *Plugin) SessionPredicates() []sqlb.Predicate + func (p *Plugin) Sessions(ctx context.Context, userID string) ([]auth.SessionView, error) + func (p *Plugin) SetAdmin(ctx context.Context, userID string, admin bool) error + func (p *Plugin) SetRole(ctx context.Context, in SetRoleRequest) error + func (p *Plugin) SetRoleFor(ctx context.Context, userID string, roles ...string) error + func (p *Plugin) SetUserEmail(ctx context.Context, in SetEmailRequest) error + func (p *Plugin) SetUserPassword(ctx context.Context, userID string, password auth.Token) error + func (p *Plugin) StopImpersonating(ctx context.Context) (StopResult, error) + func (p *Plugin) TwoFactor(ctx context.Context, userID string) (TwoFactorResult, error) + func (p *Plugin) Unban(ctx context.Context, userID string) error + func (p *Plugin) UpdateUser(ctx context.Context, in UpdateUserRequest) error + func (p *Plugin) User(ctx context.Context, userID string) (UserDetail, error) + func (p *Plugin) Users(ctx context.Context, in UsersRequest) (UsersResult, error) + func (p *Plugin) Validate(*auth.Config) error + type RevokeSessionRequest struct + SessionID string + UserID string + func (r RevokeSessionRequest) TargetUserID() string + type RoleCatalog interface + DefinesRole func(name string) bool + type Roles []string + func (r *Roles) UnmarshalJSON(b []byte) error + type SearchField string + const SearchEmail + const SearchName + type SearchOperator string + const SearchContains + const SearchEndsWith + const SearchStartsWith + type SearchUsersRequest struct + Admin Flag + Banned Flag + Field SearchField + FilterField FilterField + FilterOperator FilterOperator + FilterValue *string + Limit int + Offset int + Operator SearchOperator + Page int + Sort UserSort + SortBy SortField + SortDirection SortDirection + Value string + type SessionsResult struct + Sessions []auth.SessionView + type SetAdminRequest struct + Admin bool + UserID string + func (r SetAdminRequest) TargetUserID() string + type SetEmailRequest struct + Email string + UserID string + Verified bool + func (r SetEmailRequest) TargetUserID() string + type SetPasswordRequest struct + Password auth.Token + UserID string + func (r SetPasswordRequest) TargetUserID() string + type SetRoleRequest struct + Role Roles + UserID string + func (r SetRoleRequest) TargetUserID() string + type SortDirection string + const SortAsc + const SortDesc + type SortField string + const SortByCreatedAt + const SortByID + const SortByName + const SortByUpdatedAt + type StopResult struct + OK bool + Restored bool + type TwoFactorManager interface + DisableFor func(ctx context.Context, userID string) error + EnableFor func(ctx context.Context, userID string) error + FactorOf func(ctx context.Context, userID string) (method string, enabled bool, err error) + Reset func(ctx context.Context, userID string) error + type TwoFactorResult struct + Enabled bool + Enrolled bool + Method string + type UpdateUserRequest struct + Data map[string]json.RawMessage + Image *string + Name *string + UserID string + func (r UpdateUserRequest) TargetUserID() string + type UserDetail struct + BanReason string + Identities []IdentityView + Sessions int + User UserSummary + type UserRequest struct + UserID string + func (r UserRequest) TargetUserID() string + type UserSort string + const UserSortNameAsc + const UserSortNameDesc + const UserSortNewest + const UserSortOldest + type UserSummary struct + Admin bool + Banned bool + CreatedAt time.Time + Email string + ID string + LastActiveAt *time.Time + Name string + Roles []string + type UsersRequest struct + Admin Flag + Banned Flag + FilterField FilterField + FilterOperator FilterOperator + FilterValue *string + Limit int + Offset int + Page int + Query string + Sort UserSort + SortBy SortField + SortDirection SortDirection + type UsersResult struct + Limit int + Offset int + Page int + Total int64 + Users []UserSummary