organization

package
v0.1.27 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrOrganizationInvitationExpired         = errors.New("organization invitation expired")
	ErrOrganizationInvitationAlreadyAccepted = errors.New("organization invitation already accepted")
	ErrOrganizationInvitationRevoked         = errors.New("organization invitation revoked")
	ErrOrganizationInvitationAlreadyPending  = errors.New("organization invitation already pending")
	ErrOrganizationMemberAlreadyExists       = errors.New("organization member already exists")
	ErrOrganizationInviteForbidden           = errors.New("organization invite forbidden")
	ErrOrganizationActorNotMember            = errors.New("organization invitation actor is not a member")
	ErrOrganizationInviteEmailMismatch       = errors.New("organization invitation email mismatch")
	ErrOrganizationSingleMembershipConflict  = errors.New("single organization membership conflict")
	ErrInvalidOrganizationMode               = errors.New("invalid organization mode")
	ErrInvalidOrganizationRole               = errors.New("invalid organization role")
	ErrOrganizationOperationForbidden        = errors.New("organization operation forbidden")
	ErrInvalidOrganizationInvitationEmail    = errors.New("invalid organization invitation email")
	ErrInvalidOrganizationInvitationToken    = errors.New("invalid organization invitation token")
)

Functions

This section is empty.

Types

type AcceptInvitationByIDInput

type AcceptInvitationByIDInput struct {
	InvitationID uuid.UUID
	UserID       uuid.UUID
	Now          time.Time
}

type AcceptInvitationInput

type AcceptInvitationInput struct {
	RawToken string
	UserID   uuid.UUID
	Now      time.Time
}

type AcceptInvitationResult

type AcceptInvitationResult struct {
	Invitation         domain.OrganizationInvitation
	Organization       domain.Organization
	Membership         domain.OrganizationMembership
	InvitationAccepted bool
	MembershipCreated  bool
}

type Config

type Config struct {
	Store            *store.Store
	Tx               *tx.Manager
	WebhookPublisher webhook.Publisher
	Logger           *slog.Logger
	InvitationTTL    time.Duration
	PublicURL        string
	Mode             OrgMode
}

type CreateInvitationInput

type CreateInvitationInput struct {
	OrganizationID uuid.UUID
	ActorUserID    uuid.UUID
	Email          string
	Now            time.Time
}

type CreateOrganizationInput

type CreateOrganizationInput struct {
	Name            string
	CreatedByUserID uuid.UUID
}

type InvitationPreview

type InvitationPreview struct {
	Invitation   domain.OrganizationInvitation
	Organization domain.Organization
}

type InvitationWithToken

type InvitationWithToken struct {
	Invitation domain.OrganizationInvitation
	RawToken   string
	InviteURL  string
}

type OrgMode

type OrgMode string
const (
	OrgModePersonal OrgMode = "personal"
	OrgModeSingle   OrgMode = "single"
	OrgModeMulti    OrgMode = "multi"
)

func (OrgMode) AllowsInvitations

func (m OrgMode) AllowsInvitations() bool

func (OrgMode) AllowsLeaveOrg

func (m OrgMode) AllowsLeaveOrg() bool

func (OrgMode) AllowsOrgSwitching

func (m OrgMode) AllowsOrgSwitching() bool

func (OrgMode) AllowsUserCreatedTeamOrgs

func (m OrgMode) AllowsUserCreatedTeamOrgs() bool

func (OrgMode) HasVisibleOrganizations

func (m OrgMode) HasVisibleOrganizations() bool

type ResendInvitationInput added in v0.1.26

type ResendInvitationInput struct {
	OrganizationID uuid.UUID
	InvitationID   uuid.UUID
	Now            time.Time
}

type RevokeInvitationInput

type RevokeInvitationInput struct {
	OrganizationID  uuid.UUID
	InvitationID    uuid.UUID
	RevokedByUserID *uuid.UUID
	Now             time.Time
}

type Service

type Service struct {
	// contains filtered or unexported fields
}

func New

func New(cfg Config) *Service

func (*Service) AcceptInvitation

func (s *Service) AcceptInvitation(ctx context.Context, in AcceptInvitationInput) (AcceptInvitationResult, error)

func (*Service) AcceptInvitationByID

func (s *Service) AcceptInvitationByID(ctx context.Context, in AcceptInvitationByIDInput) (AcceptInvitationResult, error)

func (*Service) CreateInvitation

func (s *Service) CreateInvitation(ctx context.Context, in CreateInvitationInput) (InvitationWithToken, error)

func (*Service) DefaultOrganizationForUser

func (s *Service) DefaultOrganizationForUser(ctx context.Context, userID uuid.UUID) (domain.Organization, domain.OrganizationMembership, error)

func (*Service) DeleteOrganizationMember

func (s *Service) DeleteOrganizationMember(ctx context.Context, organizationID uuid.UUID, userID uuid.UUID) error

func (*Service) EnsureDefaultOrganization

func (s *Service) EnsureDefaultOrganization(ctx context.Context, user domain.User) (domain.Organization, domain.OrganizationMembership, error)

func (*Service) EnsureInitialOrganization

func (s *Service) EnsureInitialOrganization(ctx context.Context, user domain.User, source SignupSource) (domain.Organization, domain.OrganizationMembership, bool, error)

func (*Service) GetOrganization

func (s *Service) GetOrganization(ctx context.Context, organizationID uuid.UUID) (domain.Organization, error)

func (*Service) GetOrganizationMember

func (s *Service) GetOrganizationMember(ctx context.Context, organizationID uuid.UUID, userID uuid.UUID) (domain.OrganizationMember, error)

func (*Service) InvitationByID

func (s *Service) InvitationByID(ctx context.Context, invitationID uuid.UUID) (InvitationPreview, error)

func (*Service) InvitationByOrganizationAndID

func (s *Service) InvitationByOrganizationAndID(ctx context.Context, organizationID uuid.UUID, invitationID uuid.UUID) (InvitationPreview, error)

func (*Service) InvitationByToken

func (s *Service) InvitationByToken(ctx context.Context, rawToken string) (InvitationPreview, error)

func (*Service) ListCurrentOrganizationMembers added in v0.1.25

func (s *Service) ListCurrentOrganizationMembers(ctx context.Context, userID uuid.UUID, organizationID uuid.UUID) ([]domain.OrganizationMember, error)

func (*Service) ListInvitations

func (s *Service) ListInvitations(ctx context.Context, organizationID uuid.UUID) ([]domain.OrganizationInvitation, error)

func (*Service) ListOrganizationMembers

func (s *Service) ListOrganizationMembers(ctx context.Context, organizationID uuid.UUID) ([]domain.OrganizationMember, error)

func (*Service) ListUserMemberships

func (s *Service) ListUserMemberships(ctx context.Context, userID uuid.UUID) ([]UserOrganization, error)

func (*Service) ListUserOrganizations

func (s *Service) ListUserOrganizations(ctx context.Context, userID uuid.UUID) ([]UserOrganization, error)

func (*Service) Mode

func (s *Service) Mode() OrgMode

func (*Service) RequireMembership

func (s *Service) RequireMembership(ctx context.Context, userID uuid.UUID, organizationID uuid.UUID) (domain.OrganizationMembership, error)

func (*Service) ResendInvitation added in v0.1.26

func (s *Service) ResendInvitation(ctx context.Context, in ResendInvitationInput) (InvitationWithToken, error)

func (*Service) RevokeInvitation

func (*Service) SignupOrganizationPlan

func (s *Service) SignupOrganizationPlan(source SignupSource) (SignupOrganizationPlan, error)

func (*Service) UpdateOrganization

func (s *Service) UpdateOrganization(ctx context.Context, organizationID uuid.UUID, name string) (domain.Organization, error)

func (*Service) UpdateOrganizationMember

func (s *Service) UpdateOrganizationMember(ctx context.Context, organizationID uuid.UUID, userID uuid.UUID, role domain.OrganizationRole) (domain.OrganizationMembership, error)

type SignupOrganizationPlan

type SignupOrganizationPlan struct {
	CreateInitialOrg bool
	InitialOrgKind   domain.OrganizationKind
	AcceptInvitation bool
}

func SignupOrganizationPlanFor

func SignupOrganizationPlanFor(mode OrgMode, source SignupSource) (SignupOrganizationPlan, error)

type SignupSource

type SignupSource string
const (
	SignupSourceDirect SignupSource = "direct"
	SignupSourceInvite SignupSource = "invite"
)

type UserOrganization

type UserOrganization struct {
	Organization domain.Organization
	Membership   domain.OrganizationMembership
}

Jump to

Keyboard shortcuts

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