team

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 18, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnexpected = errors.New("unexpected error")
View Source
var TicketRegex = regexp.MustCompile("^[a-zA-Z0-9_-]+$")

Functions

func FetchAccounts

func FetchAccounts(ctx context.Context, remote *RemoteConfig, token *AuthToken) (map[string]*Account, error)

func Request

func Request(ctx context.Context, remote *RemoteConfig, token *AuthToken, req *AccessRequest) (string, error)

func Respond

func Respond(ctx context.Context, remote *RemoteConfig, token *AuthToken, accResp *AccessResponse) error

Types

type AccessRequest

type AccessRequest struct {
	AccountID     string
	AccountName   string
	Role          string
	RoleID        string
	Duration      int
	StartTime     time.Time
	Justification string
	Ticket        string
}

type AccessResponse

type AccessResponse struct {
	ID      string
	Status  string
	Comment string
}

type Account

type Account struct {
	ID    string
	Name  string
	Roles map[string]*Role
}

type AuthToken

type AuthToken struct {
	IdToken      string    `json:"id_token"`
	AccessToken  string    `json:"access_token"`
	RefreshToken string    `json:"refresh_token"`
	ExpiresAt    time.Time `json:"expires_at"`
	TokenType    string    `json:"token_type"`
}

func FetchToken

func FetchToken(ctx context.Context, cfg *RemoteConfig, noBrowser bool) (*AuthToken, error)

func FetchTokenViaDeviceCode

func FetchTokenViaDeviceCode(
	ctx context.Context,
	cfg *RemoteConfig,
	readCode func(context.Context) (string, error),
) (*AuthToken, error)

func RefreshToken

func RefreshToken(ctx context.Context, remote *RemoteConfig, old *AuthToken) (*AuthToken, error)

func (*AuthToken) ParseIDToken

func (t *AuthToken) ParseIDToken() (*IDToken, error)

type IDToken

type IDToken struct {
	UserID   string `json:"userId"`
	GroupIDs string `json:"groupIds"`
	Email    any    `json:"email"`
}

type ListRequestsFilter

type ListRequestsFilter string
const (
	ListRequestsFilterAll                ListRequestsFilter = "all"
	ListRequestsFilterRequiresMyApproval ListRequestsFilter = "requires-my-approval"
)

type PermissionRequest

type PermissionRequest struct {
	ID     string `json:"id"`
	Email  string `json:"email"`
	Status string `json:"status"`

	AccountID     string    `json:"accountId"`
	AccountName   string    `json:"accountName"`
	Role          string    `json:"role"`
	RoleID        string    `json:"roleId"`
	StartTime     time.Time `json:"startTime"`
	EndTime       time.Time `json:"endTime"`
	Duration      string    `json:"duration"`
	TicketNo      string    `json:"ticketNo"`
	Justification string    `json:"justification"`

	Comment    string   `json:"comment"`
	Approver   string   `json:"approver"`
	ApproverID string   `json:"approverId"`
	Approvers  []string `json:"approvers"`

	Revoker   string `json:"revoker"`
	RevokerID string `json:"revokerId"`

	CreatedAt time.Time `json:"createdAt"`
	UpdatedAt time.Time `json:"updatedAt"`
}

func ListRequests

func ListRequests(
	ctx context.Context,
	remote *RemoteConfig,
	token *AuthToken,
	filter ListRequestsFilter,
) ([]*PermissionRequest, error)

type RemoteConfig

type RemoteConfig struct {
	Server            string   `json:"server"`
	GraphQLEndpoint   string   `json:"graphql_endpoint"`
	UserPoolClientID  string   `json:"user_pool_client_id"`
	OAuthDomain       string   `json:"oauth_domain"`
	OAuthResponseType string   `json:"oauth_response_type"`
	OAuthScopes       []string `json:"oauth_scopes"`
	RedirectSignIn    string   `json:"redirectSignIn"`
}

func ExtractConfig

func ExtractConfig(ctx context.Context, addr string) (*RemoteConfig, error)

type Role

type Role struct {
	ID   string
	Name string

	MaxDurNoApproval int
	MaxDurApproval   int
}

Jump to

Keyboard shortcuts

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