Documentation ¶
Overview ¶
Package user manages user accounts and their team membership.
Index ¶
- Constants
- Variables
- func NewTeamMembershipCommand(apiclient *otfapi.Client) *cobra.Command
- func NewUserCommand(apiClient *otfapi.Client) *cobra.Command
- type CreateUserOptions
- type CreateUserTokenOptions
- type NewUserOption
- type Options
- type Service
- func (a *Service) AddHandlers(r *mux.Router)
- func (a *Service) AddTeamMembership(ctx context.Context, teamID resource.ID, usernames []string) 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 string) error
- func (a *Service) DeleteToken(ctx context.Context, tokenID resource.ID) 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 string) ([]*User, error)
- func (a *Service) ListTeamUsers(ctx context.Context, teamID resource.ID) ([]*User, error)
- func (a *Service) ListTokens(ctx context.Context) ([]*UserToken, error)
- func (f Service) NewUserToken(username string, opts CreateUserTokenOptions) (*UserToken, []byte, error)
- func (a *Service) RemoveTeamMembership(ctx context.Context, teamID resource.ID, usernames []string) error
- func (a *Service) SetSiteAdmins(ctx context.Context, usernames ...string) error
- type User
- type UserListOptions
- type UserSpec
- type UserToken
Constants ¶
const (
SiteAdminUsername = "site-admin"
)
Variables ¶
var ( // 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.MustHardcodeID(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 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.ID, usernames []string) 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
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 string, opts CreateUserTokenOptions) (*UserToken, []byte, error)
func (*Service) RemoveTeamMembership ¶ added in v0.2.2
func (a *Service) RemoveTeamMembership(ctx context.Context, teamID resource.ID, usernames []string) 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 User ¶
type User struct { ID resource.ID `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 ¶
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 ¶
Organizations returns the user's membership of organizations (indirectly via their membership of teams).
NOTE: always returns a non-nil slice
type UserListOptions ¶
UserListOptions are options for the ListUsers endpoint.