humanauth

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuiltinRoles

func BuiltinRoles() map[RoleKey]RoleDefinition

func WithPrincipal added in v0.3.0

func WithPrincipal(ctx context.Context, principal AuthenticatedPrincipal) context.Context

Types

type ApprovalPolicyRule

type ApprovalPolicyRule struct {
	ID                  uuid.UUID
	ScopeKind           ScopeKind
	ScopeID             string
	ActionKey           string
	RequireRoleKey      string
	RequireTicketStatus string
	Enabled             bool
	CreatedAt           time.Time
	UpdatedAt           time.Time
}

type AuthAuditEvent added in v0.3.0

type AuthAuditEvent struct {
	ID        uuid.UUID
	UserID    *uuid.UUID
	SessionID *uuid.UUID
	ActorID   string
	EventType AuthAuditEventType
	Message   string
	Metadata  map[string]any
	CreatedAt time.Time
}

type AuthAuditEventType added in v0.3.0

type AuthAuditEventType string
const (
	AuthAuditLoginSucceeded         AuthAuditEventType = "login.success"
	AuthAuditLoginFailed            AuthAuditEventType = "login.failed"
	AuthAuditLogout                 AuthAuditEventType = "logout"
	AuthAuditSessionRevoked         AuthAuditEventType = "session.revoked"
	AuthAuditSessionExpired         AuthAuditEventType = "session.expired"
	AuthAuditUserEnabled            AuthAuditEventType = "user.enabled"
	AuthAuditUserDisabled           AuthAuditEventType = "user.disabled"
	AuthAuditUserDisabledAfterLogin AuthAuditEventType = "user.disabled_after_login"
	AuthAuditLocalBootstrapIssued   AuthAuditEventType = "local_bootstrap.issued"
	AuthAuditLocalBootstrapRedeemed AuthAuditEventType = "local_bootstrap.redeemed"
	AuthAuditLocalBootstrapFailed   AuthAuditEventType = "local_bootstrap.failed"
)

type AuthenticatedPrincipal

type AuthenticatedPrincipal struct {
	User           User
	Identity       UserIdentity
	Groups         []UserGroupMembership
	Session        BrowserSession
	EffectiveRoles []RoleKey
	Permissions    []PermissionKey
}

func PrincipalFromContext added in v0.3.0

func PrincipalFromContext(ctx context.Context) (AuthenticatedPrincipal, bool)

func (AuthenticatedPrincipal) ActorID

func (p AuthenticatedPrincipal) ActorID() string

type BrowserSession

type BrowserSession struct {
	ID            uuid.UUID
	UserID        uuid.UUID
	SessionHash   string
	DeviceKind    SessionDeviceKind
	DeviceOS      string
	DeviceBrowser string
	DeviceLabel   string
	ExpiresAt     time.Time
	IdleExpiresAt time.Time
	CSRFSecret    string
	UserAgentHash string
	IPPrefix      string
	RevokedAt     *time.Time
	CreatedAt     time.Time
	UpdatedAt     time.Time
}

type EffectiveVisibility added in v0.3.0

type EffectiveVisibility struct {
	Instance             bool
	OrganizationIDs      []uuid.UUID
	OrganizationScopeIDs []uuid.UUID
	ProjectIDs           []uuid.UUID
}

func (EffectiveVisibility) AllowsOrganization added in v0.3.0

func (v EffectiveVisibility) AllowsOrganization(id uuid.UUID) bool

func (EffectiveVisibility) AllowsOrganizationScope added in v0.3.0

func (v EffectiveVisibility) AllowsOrganizationScope(id uuid.UUID) bool

func (EffectiveVisibility) AllowsProject added in v0.3.0

func (v EffectiveVisibility) AllowsProject(projectID uuid.UUID, organizationID uuid.UUID) bool

type Group

type Group struct {
	Key  string
	Name string
}

type InstanceRole added in v0.3.0

type InstanceRole string
const (
	InstanceRoleAdmin InstanceRole = "instance_admin"
)

func ParseInstanceRole added in v0.3.0

func ParseInstanceRole(raw string) (InstanceRole, error)

func (InstanceRole) ScopeKind added in v0.3.0

func (r InstanceRole) ScopeKind() ScopeKind

func (InstanceRole) String added in v0.3.0

func (r InstanceRole) String() string

type InstanceRoleBinding added in v0.3.0

type InstanceRoleBinding struct {
	RoleBindingMetadata
	RoleKey InstanceRole
}

func ParseInstanceRoleBinding added in v0.3.0

func ParseInstanceRoleBinding(input RoleBinding) (InstanceRoleBinding, error)

func (InstanceRoleBinding) Generic added in v0.3.0

func (b InstanceRoleBinding) Generic() RoleBinding

type LocalBootstrapAuthRequest added in v0.3.0

type LocalBootstrapAuthRequest struct {
	ID            uuid.UUID
	CodeHash      string
	NonceHash     string
	Purpose       string
	RequestedBy   string
	ExpiresAt     time.Time
	UsedSessionID *uuid.UUID
	UsedAt        *time.Time
	CreatedAt     time.Time
	UpdatedAt     time.Time
}

type OIDCProfile

type OIDCProfile struct {
	Issuer        string
	Subject       string
	Email         string
	EmailVerified bool
	DisplayName   string
	Username      string
	AvatarURL     string
	Groups        []Group
	RawClaimsJSON string
}

type OrganizationInvitation added in v0.3.0

type OrganizationInvitation struct {
	ID               uuid.UUID
	OrganizationID   uuid.UUID
	MembershipID     uuid.UUID
	Email            string
	Role             OrganizationMembershipRole
	Status           OrganizationInvitationStatus
	InvitedBy        string
	InviteTokenHash  string
	ExpiresAt        time.Time
	SentAt           time.Time
	AcceptedByUserID *uuid.UUID
	AcceptedAt       *time.Time
	CanceledAt       *time.Time
	CreatedAt        time.Time
	UpdatedAt        time.Time
}

type OrganizationInvitationStatus added in v0.3.0

type OrganizationInvitationStatus string
const (
	OrganizationInvitationStatusPending  OrganizationInvitationStatus = "pending"
	OrganizationInvitationStatusAccepted OrganizationInvitationStatus = "accepted"
	OrganizationInvitationStatusCanceled OrganizationInvitationStatus = "canceled"
	OrganizationInvitationStatusExpired  OrganizationInvitationStatus = "expired"
)

func ParseOrganizationInvitationStatus added in v0.3.0

func ParseOrganizationInvitationStatus(raw string) (OrganizationInvitationStatus, error)

func (OrganizationInvitationStatus) String added in v0.3.0

type OrganizationMembership added in v0.3.0

type OrganizationMembership struct {
	ID             uuid.UUID
	OrganizationID uuid.UUID
	UserID         *uuid.UUID
	Email          string
	Role           OrganizationMembershipRole
	Status         OrganizationMembershipStatus
	InvitedBy      string
	InvitedAt      time.Time
	AcceptedAt     *time.Time
	SuspendedAt    *time.Time
	RemovedAt      *time.Time
	CreatedAt      time.Time
	UpdatedAt      time.Time
}

type OrganizationMembershipEntry added in v0.3.0

type OrganizationMembershipEntry struct {
	Membership       OrganizationMembership
	User             *OrganizationMembershipUserSummary
	ActiveInvitation *OrganizationInvitation
}

type OrganizationMembershipRole added in v0.3.0

type OrganizationMembershipRole string
const (
	OrganizationMembershipRoleOwner  OrganizationMembershipRole = "owner"
	OrganizationMembershipRoleAdmin  OrganizationMembershipRole = "admin"
	OrganizationMembershipRoleMember OrganizationMembershipRole = "member"
)

func ParseOrganizationMembershipRole added in v0.3.0

func ParseOrganizationMembershipRole(raw string) (OrganizationMembershipRole, error)

func (OrganizationMembershipRole) RoleKey added in v0.3.0

func (r OrganizationMembershipRole) RoleKey() RoleKey

func (OrganizationMembershipRole) String added in v0.3.0

type OrganizationMembershipStatus added in v0.3.0

type OrganizationMembershipStatus string
const (
	OrganizationMembershipStatusInvited   OrganizationMembershipStatus = "invited"
	OrganizationMembershipStatusActive    OrganizationMembershipStatus = "active"
	OrganizationMembershipStatusSuspended OrganizationMembershipStatus = "suspended"
	OrganizationMembershipStatusRemoved   OrganizationMembershipStatus = "removed"
)

func ParseOrganizationMembershipStatus added in v0.3.0

func ParseOrganizationMembershipStatus(raw string) (OrganizationMembershipStatus, error)

func (OrganizationMembershipStatus) CanTransitionTo added in v0.3.0

func (OrganizationMembershipStatus) String added in v0.3.0

type OrganizationMembershipUserSummary added in v0.3.0

type OrganizationMembershipUserSummary struct {
	ID           uuid.UUID
	PrimaryEmail string
	DisplayName  string
	AvatarURL    string
}

type OrganizationRole added in v0.3.0

type OrganizationRole string
const (
	OrganizationRoleOwner  OrganizationRole = "org_owner"
	OrganizationRoleAdmin  OrganizationRole = "org_admin"
	OrganizationRoleMember OrganizationRole = "org_member"
)

func ParseOrganizationRole added in v0.3.0

func ParseOrganizationRole(raw string) (OrganizationRole, error)

func (OrganizationRole) ScopeKind added in v0.3.0

func (r OrganizationRole) ScopeKind() ScopeKind

func (OrganizationRole) String added in v0.3.0

func (r OrganizationRole) String() string

type OrganizationRoleBinding added in v0.3.0

type OrganizationRoleBinding struct {
	RoleBindingMetadata
	OrganizationID string
	RoleKey        OrganizationRole
}

func ParseOrganizationRoleBinding added in v0.3.0

func ParseOrganizationRoleBinding(input RoleBinding) (OrganizationRoleBinding, error)

func (OrganizationRoleBinding) Generic added in v0.3.0

type PermissionKey

type PermissionKey string
const (
	PermissionOrgRead   PermissionKey = "org.read"
	PermissionOrgCreate PermissionKey = "org.create"
	PermissionOrgUpdate PermissionKey = "org.update"
	PermissionOrgDelete PermissionKey = "org.delete"

	PermissionProjectRead   PermissionKey = "project.read"
	PermissionProjectCreate PermissionKey = "project.create"
	PermissionProjectUpdate PermissionKey = "project.update"
	PermissionProjectDelete PermissionKey = "project.delete"

	PermissionRepoRead   PermissionKey = "repo.read"
	PermissionRepoCreate PermissionKey = "repo.create"
	PermissionRepoUpdate PermissionKey = "repo.update"
	PermissionRepoDelete PermissionKey = "repo.delete"

	PermissionTicketRead   PermissionKey = "ticket.read"
	PermissionTicketCreate PermissionKey = "ticket.create"
	PermissionTicketUpdate PermissionKey = "ticket.update"
	PermissionTicketDelete PermissionKey = "ticket.delete"

	PermissionTicketCommentRead   PermissionKey = "ticket_comment.read"
	PermissionTicketCommentCreate PermissionKey = "ticket_comment.create"
	PermissionTicketCommentUpdate PermissionKey = "ticket_comment.update"
	PermissionTicketCommentDelete PermissionKey = "ticket_comment.delete"

	PermissionProjectUpdateRead   PermissionKey = "project_update.read"
	PermissionProjectUpdateCreate PermissionKey = "project_update.create"
	PermissionProjectUpdateUpdate PermissionKey = "project_update.update"
	PermissionProjectUpdateDelete PermissionKey = "project_update.delete"

	PermissionWorkflowRead   PermissionKey = "workflow.read"
	PermissionWorkflowCreate PermissionKey = "workflow.create"
	PermissionWorkflowUpdate PermissionKey = "workflow.update"
	PermissionWorkflowDelete PermissionKey = "workflow.delete"

	PermissionHarnessRead   PermissionKey = "harness.read"
	PermissionHarnessUpdate PermissionKey = "harness.update"

	PermissionStatusRead   PermissionKey = "status.read"
	PermissionStatusCreate PermissionKey = "status.create"
	PermissionStatusUpdate PermissionKey = "status.update"
	PermissionStatusDelete PermissionKey = "status.delete"

	PermissionSkillRead   PermissionKey = "skill.read"
	PermissionSkillCreate PermissionKey = "skill.create"
	PermissionSkillUpdate PermissionKey = "skill.update"
	PermissionSkillDelete PermissionKey = "skill.delete"

	PermissionAgentRead    PermissionKey = "agent.read"
	PermissionAgentCreate  PermissionKey = "agent.create"
	PermissionAgentUpdate  PermissionKey = "agent.update"
	PermissionAgentDelete  PermissionKey = "agent.delete"
	PermissionAgentControl PermissionKey = "agent.control"

	PermissionJobRead    PermissionKey = "scheduled_job.read"
	PermissionJobCreate  PermissionKey = "scheduled_job.create"
	PermissionJobUpdate  PermissionKey = "scheduled_job.update"
	PermissionJobDelete  PermissionKey = "scheduled_job.delete"
	PermissionJobTrigger PermissionKey = "scheduled_job.trigger"

	PermissionSecurityRead   PermissionKey = "security_setting.read"
	PermissionSecurityUpdate PermissionKey = "security_setting.update"

	PermissionNotificationRead   PermissionKey = "notification.read"
	PermissionNotificationCreate PermissionKey = "notification.create"
	PermissionNotificationUpdate PermissionKey = "notification.update"
	PermissionNotificationDelete PermissionKey = "notification.delete"

	PermissionConversationRead   PermissionKey = "conversation.read"
	PermissionConversationCreate PermissionKey = "conversation.create"
	PermissionConversationUpdate PermissionKey = "conversation.update"
	PermissionConversationDelete PermissionKey = "conversation.delete"

	PermissionMachineRead   PermissionKey = "machine.read"
	PermissionMachineCreate PermissionKey = "machine.create"
	PermissionMachineUpdate PermissionKey = "machine.update"
	PermissionMachineDelete PermissionKey = "machine.delete"

	PermissionProviderRead   PermissionKey = "provider.read"
	PermissionProviderCreate PermissionKey = "provider.create"
	PermissionProviderUpdate PermissionKey = "provider.update"
	PermissionProviderDelete PermissionKey = "provider.delete"

	PermissionProposalApprove PermissionKey = "proposal.approve"
	PermissionRBACManage      PermissionKey = "rbac.manage"
)

func PermissionsForRoles

func PermissionsForRoles(roles []RoleKey) []PermissionKey

type ProjectRole added in v0.3.0

type ProjectRole string
const (
	ProjectRoleAdmin    ProjectRole = "project_admin"
	ProjectRoleOperator ProjectRole = "project_operator"
	ProjectRoleReviewer ProjectRole = "project_reviewer"
	ProjectRoleMember   ProjectRole = "project_member"
	ProjectRoleViewer   ProjectRole = "project_viewer"
)

func ParseProjectRole added in v0.3.0

func ParseProjectRole(raw string) (ProjectRole, error)

func (ProjectRole) ScopeKind added in v0.3.0

func (r ProjectRole) ScopeKind() ScopeKind

func (ProjectRole) String added in v0.3.0

func (r ProjectRole) String() string

type ProjectRoleBinding added in v0.3.0

type ProjectRoleBinding struct {
	RoleBindingMetadata
	ProjectID string
	RoleKey   ProjectRole
}

func ParseProjectRoleBinding added in v0.3.0

func ParseProjectRoleBinding(input RoleBinding) (ProjectRoleBinding, error)

func (ProjectRoleBinding) Generic added in v0.3.0

func (b ProjectRoleBinding) Generic() RoleBinding

type RoleBinding

type RoleBinding struct {
	ID          uuid.UUID
	ScopeKind   ScopeKind
	ScopeID     string
	SubjectKind SubjectKind
	SubjectKey  string
	RoleKey     RoleKey
	GrantedBy   string
	ExpiresAt   *time.Time
	CreatedAt   time.Time
	UpdatedAt   time.Time
}

func (RoleBinding) SubjectRef added in v0.3.0

func (b RoleBinding) SubjectRef() (SubjectRef, error)

type RoleBindingMetadata added in v0.3.0

type RoleBindingMetadata struct {
	ID        uuid.UUID
	Subject   SubjectRef
	GrantedBy string
	ExpiresAt *time.Time
	CreatedAt time.Time
	UpdatedAt time.Time
}

type RoleDefinition

type RoleDefinition struct {
	Key         RoleKey
	Permissions []PermissionKey
}

type RoleKey

type RoleKey string
const (
	RoleInstanceAdmin   RoleKey = "instance_admin"
	RoleOrgOwner        RoleKey = "org_owner"
	RoleOrgAdmin        RoleKey = "org_admin"
	RoleOrgMember       RoleKey = "org_member"
	RoleProjectAdmin    RoleKey = "project_admin"
	RoleProjectOperator RoleKey = "project_operator"
	RoleProjectReviewer RoleKey = "project_reviewer"
	RoleProjectMember   RoleKey = "project_member"
	RoleProjectViewer   RoleKey = "project_viewer"
)

func ParseRoleKey

func ParseRoleKey(raw string) (RoleKey, error)

func ParseRoleKeyForScope added in v0.3.0

func ParseRoleKeyForScope(scope ScopeKind, raw string) (RoleKey, error)

func RoleKeysForScope added in v0.3.0

func RoleKeysForScope(scope ScopeKind) []RoleKey

type ScopeKind

type ScopeKind string
const (
	ScopeKindInstance     ScopeKind = "instance"
	ScopeKindOrganization ScopeKind = "organization"
	ScopeKindProject      ScopeKind = "project"
)

func ParseScopeKind

func ParseScopeKind(raw string) (ScopeKind, error)

type ScopeRef

type ScopeRef struct {
	Kind ScopeKind
	ID   string
}

type SessionDeviceKind added in v0.3.0

type SessionDeviceKind string
const (
	SessionDeviceKindUnknown SessionDeviceKind = "unknown"
	SessionDeviceKindDesktop SessionDeviceKind = "desktop"
	SessionDeviceKindMobile  SessionDeviceKind = "mobile"
	SessionDeviceKindTablet  SessionDeviceKind = "tablet"
	SessionDeviceKindBot     SessionDeviceKind = "bot"
)

type SubjectKind

type SubjectKind string
const (
	SubjectKindUser  SubjectKind = "user"
	SubjectKindGroup SubjectKind = "group"
)

func ParseSubjectKind

func ParseSubjectKind(raw string) (SubjectKind, error)

type SubjectRef added in v0.3.0

type SubjectRef struct {
	Kind SubjectKind
	Key  string
}

func NewSubjectRef added in v0.3.0

func NewSubjectRef(kind SubjectKind, key string) (SubjectRef, error)

func NewUserSubjectRef added in v0.3.0

func NewUserSubjectRef(userID uuid.UUID) SubjectRef

func ParseGroupSubjectRef added in v0.3.0

func ParseGroupSubjectRef(raw string) (SubjectRef, error)

func (SubjectRef) String added in v0.3.0

func (r SubjectRef) String() string

type UpdateInstanceRoleBinding added in v0.3.0

type UpdateInstanceRoleBinding struct {
	UpdateRoleBindingMetadata
	RoleKey InstanceRole
}

type UpdateOrganizationRoleBinding added in v0.3.0

type UpdateOrganizationRoleBinding struct {
	UpdateRoleBindingMetadata
	RoleKey OrganizationRole
}

type UpdateProjectRoleBinding added in v0.3.0

type UpdateProjectRoleBinding struct {
	UpdateRoleBindingMetadata
	RoleKey ProjectRole
}

type UpdateRoleBindingMetadata added in v0.3.0

type UpdateRoleBindingMetadata struct {
	Subject   SubjectRef
	GrantedBy string
	ExpiresAt *time.Time
}

type User

type User struct {
	ID           uuid.UUID
	Status       UserStatus
	PrimaryEmail string
	DisplayName  string
	AvatarURL    string
	LastLoginAt  *time.Time
	CreatedAt    time.Time
	UpdatedAt    time.Time
}

type UserDirectoryDetail added in v0.3.0

type UserDirectoryDetail struct {
	User               User
	Identities         []UserIdentity
	Groups             []UserGroupMembership
	ActiveSessions     []BrowserSession
	RecentAuditEvents  []AuthAuditEvent
	ActiveSessionCount int
	LatestStatusAudit  *UserStatusAudit
}

type UserDirectoryEntry added in v0.3.0

type UserDirectoryEntry struct {
	User            User
	PrimaryIdentity *UserIdentity
}

type UserDirectoryFilter added in v0.3.0

type UserDirectoryFilter struct {
	Query  string
	Status UserDirectoryStatusFilter
	Limit  int
}

func NewUserDirectoryFilter added in v0.3.0

func NewUserDirectoryFilter(rawQuery string, rawStatus string, rawLimit int) (UserDirectoryFilter, error)

type UserDirectoryStatusFilter added in v0.3.0

type UserDirectoryStatusFilter string
const (
	UserDirectoryStatusAll      UserDirectoryStatusFilter = "all"
	UserDirectoryStatusActive   UserDirectoryStatusFilter = "active"
	UserDirectoryStatusDisabled UserDirectoryStatusFilter = "disabled"
)

func ParseUserDirectoryStatusFilter added in v0.3.0

func ParseUserDirectoryStatusFilter(raw string) (UserDirectoryStatusFilter, error)

type UserGroupMembership

type UserGroupMembership struct {
	ID           uuid.UUID
	UserID       uuid.UUID
	Issuer       string
	GroupKey     string
	GroupName    string
	LastSyncedAt time.Time
	CreatedAt    time.Time
	UpdatedAt    time.Time
}

type UserIdentity

type UserIdentity struct {
	ID            uuid.UUID
	UserID        uuid.UUID
	Issuer        string
	Subject       string
	Email         string
	EmailVerified bool
	ClaimsVersion int
	RawClaimsJSON string
	LastSyncedAt  time.Time
	CreatedAt     time.Time
	UpdatedAt     time.Time
}

type UserStatus

type UserStatus string
const (
	UserStatusActive   UserStatus = "active"
	UserStatusDisabled UserStatus = "disabled"
)

func ParseUserStatus added in v0.3.0

func ParseUserStatus(raw string) (UserStatus, error)

type UserStatusAudit added in v0.3.0

type UserStatusAudit struct {
	Status              UserStatus
	Reason              string
	Source              UserStatusTransitionSource
	ActorID             string
	ChangedAt           time.Time
	RevokedSessionCount int
}

func ParseUserStatusAuditEvent added in v0.3.0

func ParseUserStatusAuditEvent(event AuthAuditEvent) (*UserStatusAudit, error)

type UserStatusTransitionInput added in v0.3.0

type UserStatusTransitionInput struct {
	UserID         uuid.UUID
	TargetStatus   UserStatus
	Reason         string
	ActorID        string
	Source         UserStatusTransitionSource
	RevokeSessions bool
}

func NewUserStatusTransitionInput added in v0.3.0

func NewUserStatusTransitionInput(
	userID uuid.UUID,
	targetStatus UserStatus,
	reason string,
	actorID string,
	source UserStatusTransitionSource,
	revokeSessions bool,
) (UserStatusTransitionInput, error)

type UserStatusTransitionResult added in v0.3.0

type UserStatusTransitionResult struct {
	User                User
	Changed             bool
	RevokedSessionCount int
	LatestStatusAudit   *UserStatusAudit
}

type UserStatusTransitionSource added in v0.3.0

type UserStatusTransitionSource string
const (
	UserStatusTransitionSourceAdminManual  UserStatusTransitionSource = "admin_manual"
	UserStatusTransitionSourceOIDCUpstream UserStatusTransitionSource = "oidc_upstream_sync"
	UserStatusTransitionSourceWebhook      UserStatusTransitionSource = "webhook"
	UserStatusTransitionSourceSCIM         UserStatusTransitionSource = "scim"
	UserDirectoryDefaultPageLimit                                     = 50
	UserDirectoryMaximumPageLimit                                     = 200
)

func ParseUserStatusTransitionSource added in v0.3.0

func ParseUserStatusTransitionSource(raw string) (UserStatusTransitionSource, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL