Documentation
¶
Overview ¶
Package admin is a reserved module for administrative capabilities.
Index ¶
- Constants
- Variables
- func RegisterSchema(s *schema.Schema) error
- type AccountDetail
- type Admin
- type AdminRoleAssignedPayload
- type Authorizer
- type AuthorizerFunc
- type Capability
- type Config
- type CredentialDetail
- type EmailVerifiedPayload
- type ListFilter
- type Module
- type Option
- type PasswordResetInitiatedPayload
- type ScopedAdmin
- type ScopedAdminPrincipal
- type SessionDetail
- type SessionRevokedPayload
- type UserDeletedPayload
- type UserDetail
- type UserDisabledPayload
- type UserEnabledPayload
- type UserListResult
- type UserRecord
Constants ¶
const ( ActionLookupUser = "admin:lookup_user" ActionListUsers = "admin:list_users" ActionDisableUser = "admin:disable_user" ActionEnableUser = "admin:enable_user" ActionRevokeSessions = "admin:revoke_sessions" ActionResetPassword = "admin:reset_password" ActionVerifyEmail = "admin:verify_email" ActionInspectAccounts = "admin:inspect_accounts" ActionInspectCredentials = "admin:inspect_credentials" ActionDeleteUser = "admin:delete_user" ActionSetAdmin = "admin:set_admin" )
Administrative action identifiers checked by the Authorizer.
const ( EventUserDisabled auth.EventName = "admin.user.disabled" EventUserEnabled auth.EventName = "admin.user.enabled" EventUserDeleted auth.EventName = "admin.user.deleted" EventSessionRevoked auth.EventName = "admin.session.revoked" EventPasswordResetInitiated auth.EventName = "admin.password_reset.initiated" EventEmailVerified auth.EventName = "admin.email.verified" EventAdminRoleAssigned auth.EventName = "admin.role.assigned" )
Administrative audit event identifiers emitted to GoModularAuth's EventBus.
const (
ModelAdminUsers = "admin_users"
)
const PluginID = "admin"
PluginID identifies this plugin in the GoModularAuth runtime.
Variables ¶
var ( ErrUnauthorized = errors.New("admin: unauthorized operation") // ErrUserNotFound indicates the target user does not exist in Core or Admin persistence. ErrUserNotFound = errors.New("admin: user not found") // ErrUserDisabled indicates the user is disabled and prohibited from authenticating. ErrUserDisabled = errors.New("admin: user account is disabled") // ErrUserAlreadyDisabled indicates the user is already in a disabled state. ErrUserAlreadyDisabled = errors.New("admin: user is already disabled") // ErrUserNotDisabled indicates the user is already active. ErrUserNotDisabled = errors.New("admin: user is not disabled") // ErrCannotDisableSelf prevents an administrator from locking their own account. ErrCannotDisableSelf = errors.New("admin: cannot disable own administrator account") // ErrCannotDeleteSelf prevents an administrator from deleting their own account. ErrCannotDeleteSelf = errors.New("admin: cannot delete own administrator account") // ErrInvalidInput indicates validation failure on input arguments. ErrInvalidInput = errors.New("admin: invalid input parameters") // ErrStoreRequired indicates that a persistent store implementation was not supplied. ErrStoreRequired = errors.New("admin: store is required") // ErrOrganizationsNotInstalled indicates organization-scoped administration was requested but Organizations plugin is not installed. ErrOrganizationsNotInstalled = errors.New("admin: organizations plugin not installed or configured") // ErrUserNotInOrganization indicates the target user does not belong to the target organization. ErrUserNotInOrganization = errors.New("admin: target user does not belong to specified organization") )
Functions ¶
func RegisterSchema ¶ added in v1.3.0
RegisterSchema registers the admin_users model in the compiled schema.
Types ¶
type AccountDetail ¶ added in v1.3.0
type AccountDetail struct {
ID string `json:"id"`
UserID string `json:"user_id"`
Provider string `json:"provider"`
ProviderID string `json:"provider_id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
AccountDetail exposes non-sensitive external account linkage details for administrative inspection.
type Admin ¶ added in v1.3.0
type Admin interface {
// LookupUser retrieves comprehensive administrative details for a Core User by ID.
LookupUser(ctx context.Context, p auth.Principal, userID string) (*UserDetail, error)
// LookupUserByEmail retrieves comprehensive administrative details for a Core User by email.
LookupUserByEmail(ctx context.Context, p auth.Principal, email string) (*UserDetail, error)
// ListUsers returns paginated user records matching filter criteria.
ListUsers(ctx context.Context, p auth.Principal, filter ListFilter) (*UserListResult, error)
// DisableUser disables a user account, revokes all active sessions, and emits audit events.
DisableUser(ctx context.Context, p auth.Principal, targetUserID string, reason string) error
// EnableUser re-enables a disabled user account and emits audit events.
EnableUser(ctx context.Context, p auth.Principal, targetUserID string) error
// RevokeUserSessions immediately terminates all active sessions for a target user.
RevokeUserSessions(ctx context.Context, p auth.Principal, targetUserID string) error
// InitiatePasswordReset generates a single-use verification token for password reset.
// Returns the raw verification token to send via out-of-band communication or email adapter.
InitiatePasswordReset(ctx context.Context, p auth.Principal, targetUserID string) (string, error)
// VerifyUserEmail marks the target user's email as verified.
VerifyUserEmail(ctx context.Context, p auth.Principal, targetUserID string) error
// InspectAccounts returns external provider account linkages for a target user.
InspectAccounts(ctx context.Context, p auth.Principal, targetUserID string) ([]AccountDetail, error)
// InspectCredentials returns sanitized credential records for a target user (NEVER exposes secrets or password hashes).
InspectCredentials(ctx context.Context, p auth.Principal, targetUserID string) ([]CredentialDetail, error)
// DeleteUser permanently deletes a user, their credentials, accounts, sessions, and admin metadata.
DeleteUser(ctx context.Context, p auth.Principal, targetUserID string) error
// SetAdminStatus assigns or revokes administrative status and role for a user.
SetAdminStatus(ctx context.Context, p auth.Principal, targetUserID string, isAdmin bool, role string) error
// IsUserDisabled checks if a user is currently disabled (used by hooks and auth workflows).
IsUserDisabled(ctx context.Context, userID string) (bool, error)
// ForOrg returns an organization-scoped administrative capability.
// Requires the Organizations plugin to be configured.
ForOrg(orgID string) ScopedAdmin
}
Admin defines privileged administrative operations over Core authentication state and selected plugin state. Every administrative operation explicitly requires an authenticated Principal and enforces authorization checks.
type AdminRoleAssignedPayload ¶ added in v1.3.0
type AdminRoleAssignedPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
IsAdmin bool `json:"is_admin"`
Role string `json:"role"`
AssignedAt time.Time `json:"assigned_at"`
}
AdminRoleAssignedPayload describes an administrative privilege assignment audit event.
type Authorizer ¶ added in v1.3.0
type Authorizer interface {
Authorize(ctx context.Context, p auth.Principal, action string, targetUserID string) error
}
Authorizer evaluates whether an authenticated Principal is authorized to perform an administrative action.
type AuthorizerFunc ¶ added in v1.3.0
type AuthorizerFunc func(ctx context.Context, p auth.Principal, action string, targetUserID string) error
AuthorizerFunc allows ordinary functions to act as an Authorizer.
type Capability ¶ added in v1.3.0
type Capability = Admin
Capability is an alias for Admin to support standard capability discovery conventions.
type Config ¶
type Config struct {
Authorizer Authorizer
Organizations organizations.Organization
CacheTTL time.Duration
}
Config encapsulates configuration settings for the admin plugin.
type CredentialDetail ¶ added in v1.3.0
type CredentialDetail struct {
ID string `json:"id"`
UserID string `json:"user_id"`
AccountID string `json:"account_id,omitempty"`
Type string `json:"type"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
RevokedAt *time.Time `json:"revoked_at,omitempty"`
}
CredentialDetail exposes sanitized credential metadata.
type EmailVerifiedPayload ¶ added in v1.3.0
type EmailVerifiedPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
VerifiedAt time.Time `json:"verified_at"`
}
EmailVerifiedPayload describes an administrative email verification override.
type ListFilter ¶ added in v1.3.0
type ListFilter struct {
Limit int
Offset int
Search string // Prefix or substring match for email
Status string // "all", "active", "disabled"
}
ListFilter specifies parameters for querying administrative user lists.
type Module ¶ added in v1.3.0
type Module struct {
// contains filtered or unexported fields
}
Module implements auth.PluginModule using plugin-sdk.
type Option ¶
type Option func(*Config)
Option configures administrative plugin settings.
func WithAuthorizer ¶ added in v1.3.0
func WithAuthorizer(a Authorizer) Option
WithAuthorizer provides a custom authorization policy implementation.
func WithAuthorizerFunc ¶ added in v1.3.0
func WithAuthorizerFunc(fn func(ctx context.Context, p auth.Principal, action string, targetUserID string) error) Option
WithAuthorizerFunc provides an authorization function.
func WithCacheTTL ¶ added in v1.3.0
WithCacheTTL configures the TTL for cached administrative flags.
func WithOrganizations ¶ added in v1.3.0
func WithOrganizations(orgs organizations.Organization) Option
WithOrganizations configures integration with the Organizations plugin for organization-scoped administration.
type PasswordResetInitiatedPayload ¶ added in v1.3.0
type PasswordResetInitiatedPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
InitiatedAt time.Time `json:"initiated_at"`
}
PasswordResetInitiatedPayload describes an administrative password reset initiation. CRITICAL: NEVER includes reset tokens or secret material in the event payload.
type ScopedAdmin ¶ added in v1.3.0
type ScopedAdmin interface {
// LookupUser retrieves administrative details for a user belonging to the organization.
LookupUser(ctx context.Context, p auth.Principal, userID string) (*UserDetail, error)
// ListUsers returns paginated user records belonging to the organization.
ListUsers(ctx context.Context, p auth.Principal, filter ListFilter) (*UserListResult, error)
// DisableUser disables a user within the organization context and revokes active sessions.
DisableUser(ctx context.Context, p auth.Principal, targetUserID string, reason string) error
// EnableUser re-enables a disabled user within the organization context.
EnableUser(ctx context.Context, p auth.Principal, targetUserID string) error
// RevokeUserSessions immediately terminates all active sessions for a target member.
RevokeUserSessions(ctx context.Context, p auth.Principal, targetUserID string) error
// InspectAccounts returns external provider account linkages for a target member.
InspectAccounts(ctx context.Context, p auth.Principal, targetUserID string) ([]AccountDetail, error)
// InspectCredentials returns sanitized credential records for a target member.
InspectCredentials(ctx context.Context, p auth.Principal, targetUserID string) ([]CredentialDetail, error)
// RemoveUser removes the user from the organization.
RemoveUser(ctx context.Context, p auth.Principal, targetUserID string) error
}
ScopedAdmin provides organization-scoped administrative operations. All operations verify that the calling Principal has administrative rights in the target organization and that the target user belongs to the target organization.
type ScopedAdminPrincipal ¶ added in v1.3.0
ScopedAdminPrincipal encapsulates an authenticated Principal along with an optional organization scope.
type SessionDetail ¶ added in v1.3.0
type SessionDetail struct {
ID string `json:"id"`
UserID string `json:"user_id"`
CreatedAt time.Time `json:"created_at"`
ExpiresAt time.Time `json:"expires_at"`
RevokedAt *time.Time `json:"revoked_at,omitempty"`
}
SessionDetail exposes active session metadata without exposing raw session tokens or hashes.
type SessionRevokedPayload ¶ added in v1.3.0
type SessionRevokedPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
RevokedAt time.Time `json:"revoked_at"`
}
SessionRevokedPayload describes a session revocation audit event.
type UserDeletedPayload ¶ added in v1.3.0
type UserDeletedPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
DeletedAt time.Time `json:"deleted_at"`
}
UserDeletedPayload describes a user deletion audit event.
type UserDetail ¶ added in v1.3.0
type UserDetail struct {
User *user.User `json:"user"`
Record *UserRecord `json:"record"`
Accounts []AccountDetail `json:"accounts"`
Credentials []CredentialDetail `json:"credentials"`
Sessions []SessionDetail `json:"sessions,omitempty"`
}
UserDetail provides comprehensive administrative inspection data for a Core User.
type UserDisabledPayload ¶ added in v1.3.0
type UserDisabledPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
Reason string `json:"reason"`
DisabledAt time.Time `json:"disabled_at"`
}
UserDisabledPayload describes a user disable audit event.
type UserEnabledPayload ¶ added in v1.3.0
type UserEnabledPayload struct {
ActorID string `json:"actor_id"`
TargetUserID string `json:"target_user_id"`
EnabledAt time.Time `json:"enabled_at"`
}
UserEnabledPayload describes a user enable audit event.
type UserListResult ¶ added in v1.3.0
type UserListResult struct {
Users []*UserRecord `json:"users"`
Total int `json:"total"`
Limit int `json:"limit"`
Offset int `json:"offset"`
}
UserListResult encapsulates a paginated set of administrative user summaries.
type UserRecord ¶ added in v1.3.0
type UserRecord struct {
UserID string `json:"user_id"`
Email string `json:"email"`
Disabled bool `json:"disabled"`
DisabledAt *time.Time `json:"disabled_at,omitempty"`
DisabledReason string `json:"disabled_reason,omitempty"`
IsAdmin bool `json:"is_admin"`
Role string `json:"role,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
UserRecord represents administrative metadata and lifecycle state associated with a Core User.
func (*UserRecord) Active ¶ added in v1.3.0
func (r *UserRecord) Active() bool
Active reports whether the user is not disabled.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package cache provides caching support for high-frequency administrative queries.
|
Package cache provides caching support for high-frequency administrative queries. |
|
Package events exports administrative audit event types for GoModularAuth.
|
Package events exports administrative audit event types for GoModularAuth. |
|
Package migrations contains SQL schema migrations for the admin plugin.
|
Package migrations contains SQL schema migrations for the admin plugin. |
|
Package plugins exposes capability aliases for GoModularAuth plugins.
|
Package plugins exposes capability aliases for GoModularAuth plugins. |