Documentation
¶
Overview ¶
Package user manages user accounts and their team membership.
templ: version: v0.3.857
Index ¶
- Variables
- func NewTeamMembershipCommand(apiclient *otfapi.Client) *cobra.Command
- func NewUserCommand(apiClient *otfapi.Client) *cobra.Command
- type CreateUserOptions
- type CreateUserTokenOptions
- type ListOptions
- type NewUserOption
- type Options
- type Service
- func (a *Service) AddHandlers(r *mux.Router)
- func (a *Service) AddTeamMembership(ctx context.Context, teamID resource.TfeID, usernames []Username) error
- func (a *Service) Create(ctx context.Context, username string, opts ...NewUserOption) (*User, error)
- func (a *Service) CreateToken(ctx context.Context, opts CreateUserTokenOptions) (*UserToken, []byte, error)
- func (a *Service) Delete(ctx context.Context, username Username) error
- func (a *Service) DeleteToken(ctx context.Context, tokenID resource.TfeID) error
- func (a *Service) GetUser(ctx context.Context, spec UserSpec) (*User, error)
- func (a *Service) List(ctx context.Context) ([]*User, error)
- func (a *Service) ListOrganizationUsers(ctx context.Context, organization organization.Name) ([]*User, error)
- func (a *Service) ListTeamUsers(ctx context.Context, teamID resource.TfeID) ([]*User, error)
- func (a *Service) ListTokens(ctx context.Context) ([]*UserToken, error)
- func (f Service) NewUserToken(username Username, opts CreateUserTokenOptions) (*UserToken, []byte, error)
- func (a *Service) RemoveTeamMembership(ctx context.Context, teamID resource.TfeID, usernames []Username) error
- func (a *Service) SetSiteAdmins(ctx context.Context, usernames ...string) error
- type TFECreateUserOptions
- type TFEOrganizationMembership
- type TFEOrganizationMembershipCreateOptions
- type TFEOrganizationMembershipStatus
- type TFETwoFactor
- type TFEUser
- type User
- type UserSpec
- type UserToken
- type Username
Constants ¶
This section is empty.
Variables ¶
var ( SiteAdminUsername = Username{/* contains filtered or unexported fields */} // SiteAdminID is the hardcoded user id for the site admin user. The ID must // be the same as the hardcoded value in the database migrations. SiteAdminID = resource.MustHardcodeTfeID(resource.UserKind, "36atQC2oGQng7pVz") SiteAdmin = User{ID: SiteAdminID, Username: SiteAdminUsername} )
var ErrCannotDeleteOnlyOwner = errors.New("cannot remove the last owner")
Functions ¶
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 ListOptions ¶ added in v0.3.17
type ListOptions struct { resource.PageOptions Organization organization.Name `schema:"name"` }
ListOptions are options for the ListUsers endpoint.
type NewUserOption ¶
type NewUserOption func(*User)
func WithTeams ¶
func WithTeams(memberships ...*team.Team) NewUserOption
type Service ¶ added in v0.2.2
type Service struct { logr.Logger *authz.Authorizer // contains filtered or unexported fields }
func NewService ¶
func (*Service) AddHandlers ¶ added in v0.2.2
func (*Service) AddTeamMembership ¶ added in v0.2.2
func (a *Service) AddTeamMembership(ctx context.Context, teamID resource.TfeID, usernames []Username) error
AddTeamMembership adds users to a team. If a user does not exist then the user is created first.
func (*Service) CreateToken ¶ added in v0.2.2
func (a *Service) CreateToken(ctx context.Context, opts CreateUserTokenOptions) (*UserToken, []byte, error)
CreateToken creates a user token. Only users can create a user token, and they can only create a token for themselves.
func (*Service) DeleteToken ¶ added in v0.2.2
func (*Service) ListOrganizationUsers ¶ added in v0.2.2
func (a *Service) ListOrganizationUsers(ctx context.Context, organization organization.Name) ([]*User, error)
ListOrganizationUsers lists an organization's users
func (*Service) ListTeamUsers ¶ added in v0.2.2
ListTeamUsers lists users that are members of the given team. The caller needs either organization-wide authority to call this endpoint, or they need to be a member of the team.
func (*Service) ListTokens ¶ added in v0.2.2
func (Service) NewUserToken ¶ added in v0.2.2
func (f Service) NewUserToken(username Username, opts CreateUserTokenOptions) (*UserToken, []byte, error)
func (*Service) RemoveTeamMembership ¶ added in v0.2.2
func (a *Service) RemoveTeamMembership(ctx context.Context, teamID resource.TfeID, usernames []Username) error
RemoveTeamMembership removes users from a team.
func (*Service) SetSiteAdmins ¶ added in v0.2.2
SetSiteAdmins authoritatively promotes users with the given usernames to site admins. If no such users exist then they are created. Any unspecified users that are currently site admins are demoted.
type TFECreateUserOptions ¶ added in v0.3.17
type TFECreateUserOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,users"` Username *string `jsonapi:"attribute" json:"username"` }
CreateUserOptions represents the options for creating a user.
type TFEOrganizationMembership ¶ added in v0.3.17
type TFEOrganizationMembership struct { ID resource.TfeID `jsonapi:"primary,organization-memberships"` Status TFEOrganizationMembershipStatus `jsonapi:"attribute" json:"status"` Email string `jsonapi:"attribute" json:"email"` // Relations Organization *organization.TFEOrganization `jsonapi:"relationship" json:"organization"` User *TFEUser `jsonapi:"relationship" json:"user"` Teams []*team.TFETeam `jsonapi:"relationship" json:"teams"` }
TFEOrganizationMembership represents a Terraform Enterprise organization membership.
type TFEOrganizationMembershipCreateOptions ¶ added in v0.3.17
type TFEOrganizationMembershipCreateOptions struct { // Type is a public field utilized by JSON:API to // set the resource type via the field tag. // It is not a user-defined value and does not need to be set. // https://jsonapi.org/format/#crud-creating Type string `jsonapi:"primary,organization-memberships"` // Required: User's email address. Email *string `jsonapi:"attribute" json:"email"` }
TFEOrganizationMembershipCreateOptions represents the options for creating an organization membership.
type TFEOrganizationMembershipStatus ¶ added in v0.3.17
type TFEOrganizationMembershipStatus string
TFEOrganizationMembershipStatus represents an organization membership status.
const ( OrganizationMembershipActive TFEOrganizationMembershipStatus = "active" OrganizationMembershipInvited TFEOrganizationMembershipStatus = "invited" )
type TFETwoFactor ¶ added in v0.3.17
type TFETwoFactor struct { Enabled bool `jsonapi:"attribute" json:"enabled"` Verified bool `jsonapi:"attribute" json:"verified"` }
TFETwoFactor represents the organization permissions.
type TFEUser ¶ added in v0.3.17
type TFEUser struct { ID resource.TfeID `jsonapi:"primary,users"` AvatarURL string `jsonapi:"attribute" json:"avatar-url"` Email string `jsonapi:"attribute" json:"email"` IsServiceAccount bool `jsonapi:"attribute" json:"is-service-account"` TwoFactor *TFETwoFactor `jsonapi:"attribute" json:"two-factor"` UnconfirmedEmail string `jsonapi:"attribute" json:"unconfirmed-email"` Username string `jsonapi:"attribute" json:"username"` V2Only bool `jsonapi:"attribute" json:"v2-only"` }
TFEUser represents an OTF user.
type User ¶
type User struct { ID resource.TfeID `jsonapi:"primary,users" json:"user_id"` 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 Username `jsonapi:"attribute" json:"username"` // user belongs to many teams Teams []*team.Team }
User represents an OTF user account.
func NewTestUser ¶ added in v0.3.18
func UserFromContext ¶
UserFromContext retrieves a user from a context
func (*User) IsSiteAdmin ¶
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 ¶
IsTeamMember determines whether user is a member of the given team.
func (*User) Organizations ¶
func (u *User) Organizations() []organization.Name
Organizations returns the user's membership of organizations (indirectly via their membership of teams).
NOTE: always returns a non-nil slice
type UserSpec ¶
type UserToken ¶
type UserToken struct { ID resource.TfeID `db:"token_id"` CreatedAt time.Time `db:"created_at"` Description string Username Username // Token belongs to a user }
UserToken provides information about an API token for a user.
type Username ¶ added in v0.3.18
type Username struct {
// contains filtered or unexported fields
}