user

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Dec 7, 2023 License: MPL-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Package user manages user accounts and their team membership.

Index

Constants

View Source
const (
	SiteAdminID       = "user-site-admin"
	SiteAdminUsername = "site-admin"
)
View Source
const UserTokenKind tokens.Kind = "user_token"

Variables

View Source
var ErrCannotDeleteOnlyOwner = errors.New("cannot remove the last owner")
View Source
var (
	SiteAdmin = User{ID: SiteAdminID, Username: SiteAdminUsername}
)

Functions

func NewService

func NewService(opts Options) *service

func NewTeamMembershipCommand

func NewTeamMembershipCommand(apiclient *otfapi.Client) *cobra.Command

func NewUserCommand

func NewUserCommand(api *otfapi.Client) *cobra.Command

Types

type CreateUserOptions

type CreateUserOptions struct {
	Username string `json:"username"`
}

type CreateUserTokenOptions

type CreateUserTokenOptions struct {
	Description string
}

CreateUserTokenOptions are options for creating a user token via the service endpoint

type NewUserOption

type NewUserOption func(*User)

func WithTeams

func WithTeams(memberships ...*team.Team) NewUserOption

type User

type User struct {
	ID        string    `jsonapi:"primary,users"`
	CreatedAt time.Time `jsonapi:"attribute" json:"created-at"`
	UpdatedAt time.Time `jsonapi:"attribute" json:"updated-at"`
	SiteAdmin bool      `jsonapi:"attribute" json:"site-admin"`

	// username is globally unique
	Username string `jsonapi:"attribute" json:"username"`

	// user belongs to many teams
	Teams []*team.Team
}

User represents an OTF user account.

func NewUser

func NewUser(username string, opts ...NewUserOption) *User

func UserFromContext

func UserFromContext(ctx context.Context) (*User, error)

UserFromContext retrieves a user from a context

func (*User) CanAccessOrganization

func (u *User) CanAccessOrganization(action rbac.Action, org string) bool

func (*User) CanAccessSite

func (u *User) CanAccessSite(action rbac.Action) bool

func (*User) CanAccessTeam

func (u *User) CanAccessTeam(action rbac.Action, teamID string) bool

func (*User) CanAccessWorkspace

func (u *User) CanAccessWorkspace(action rbac.Action, policy internal.WorkspacePolicy) bool

func (*User) IsOwner

func (u *User) IsOwner(organization string) bool

IsOwner determines if user is an owner of an organization

func (*User) IsSiteAdmin

func (u *User) IsSiteAdmin() bool

IsSiteAdmin determines whether user is a site admin. A user is a site admin in either of two cases: (1) their account has been promoted to site admin (think sudo) (2) the account is *the* site admin (think root)

func (*User) IsTeamMember

func (u *User) IsTeamMember(teamID string) bool

IsTeamMember determines whether user is a member of the given team.

func (*User) Organizations

func (u *User) Organizations() []string

Organizations returns the user's membership of organizations (indirectly via their membership of teams).

NOTE: always returns a non-nil slice

func (*User) String

func (u *User) String() string

type UserListOptions

type UserListOptions struct {
	Organization *string
	TeamName     *string
}

UserListOptions are options for the ListUsers endpoint.

type UserService

type UserService interface {
	CreateUser(ctx context.Context, username string, opts ...NewUserOption) (*User, error)
	GetUser(ctx context.Context, spec UserSpec) (*User, error)
	ListUsers(ctx context.Context) ([]*User, error)
	ListOrganizationUsers(ctx context.Context, organization string) ([]*User, error)
	ListTeamUsers(ctx context.Context, teamID string) ([]*User, error)
	DeleteUser(ctx context.Context, username string) error
	AddTeamMembership(ctx context.Context, teamID string, usernames []string) error
	RemoveTeamMembership(ctx context.Context, teamID string, usernames []string) error
	SetSiteAdmins(ctx context.Context, usernames ...string) error
	// contains filtered or unexported methods
}

type UserSpec

type UserSpec struct {
	UserID                *string
	Username              *string
	AuthenticationTokenID *string
}

func (UserSpec) LogValue

func (s UserSpec) LogValue() slog.Value

type UserToken

type UserToken struct {
	ID          string
	CreatedAt   time.Time
	Description string
	Username    string // Token belongs to a user
}

UserToken provides information about an API token for a user.

Jump to

Keyboard shortcuts

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