params

package
v1.12.3 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2024 License: AGPL-3.0 Imports: 7 Imported by: 11

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// BrandName holds the brand name of the entity running Candid.
	BrandName string
	// BrandLogoLocation holds the logo location of the entity running
	// Candid.
	BrandLogoLocation string
)

Functions

func NewError

func NewError(code ErrorCode, f string, a ...interface{}) error

NewError returns a new *Error with the given error code and message.

Types

type AgentLogin

type AgentLogin struct {
	Username  Username          `json:"username"`
	PublicKey *bakery.PublicKey `json:"public_key"`
}

AgentLogin contains the claimed identity the agent is attempting to use to log in.

type AgentLoginResponse

type AgentLoginResponse struct {
	AgentLogin bool `json:"agent_login"`
}

AgentLoginResponse contains the response to an agent login attempt.

type ClearUserMFACredentialsRequest added in v1.11.0

type ClearUserMFACredentialsRequest struct {
	httprequest.Route `httprequest:"DELETE /v1/mfa/:username"`
	Username          Username `httprequest:"username,path"`
}

ClearUserMFACredentialsRequest is a request to delete all MFA credentials for a user.

type CreateAgentBody

type CreateAgentBody struct {
	FullName   string              `json:"fullname"`
	Groups     []string            `json:"idpgroups"`
	PublicKeys []*bakery.PublicKey `json:"public_keys"`

	// A parent agent is one that can create its own agents. A parent
	// agent does not have an owner and so remains a member of the
	// groups it has been allocated irrespective of whether the
	// creating user remains a member. Only users in the write-user
	// ACL can create a parent agent.
	Parent bool `json:"parent,omitempty"`
}

CreateAgentBody holds the body of a CreateAgentRequest. There must be at least one public key specified.

type CreateAgentRequest

type CreateAgentRequest struct {
	httprequest.Route `httprequest:"POST /v1/u"`
	CreateAgentBody   `httprequest:",body"`
}

CreateAgentRequest is a request to add an agent.

type CreateAgentResponse

type CreateAgentResponse struct {
	Username Username
}

CreateAgentResponse holds the response from a CreateAgentRequest.

type DeleteSSHKeysBody

type DeleteSSHKeysBody struct {
	SSHKeys []string `json:"ssh-keys"`
}

DeleteSSHKeysBody holds the body of a DeleteSSHKeysRequest.

type DeleteSSHKeysRequest

type DeleteSSHKeysRequest struct {
	httprequest.Route `httprequest:"DELETE /v1/u/:username/ssh-keys"`
	Username          Username          `httprequest:"username,path"`
	Body              DeleteSSHKeysBody `httprequest:",body"`
}

DeleteSSHKeysRequest is a request to remove ssh keys from the list of ssh keys associated with the user.

type DischargeTokenForUserRequest

type DischargeTokenForUserRequest struct {
	httprequest.Route `httprequest:"GET /v1/discharge-token-for-user"`
	Username          Username `httprequest:"username,form"`
}

DischargeTokenForUserRequest is the request to get a discharge token for a specific user.

type DischargeTokenForUserResponse

type DischargeTokenForUserResponse struct {
	DischargeToken *bakery.Macaroon
}

DischargeTokenForUserResponse holds the discharge token, in the form of a macaroon, for the requested user.

type Error

type Error struct {
	Message string    `json:"message,omitempty"`
	Code    ErrorCode `json:"code,omitempty"`
}

Error represents an error - it is returned for any response that fails.

func (*Error) Cause

func (e *Error) Cause() error

Cause implements errgo.Causer.Cause.

func (*Error) Error

func (e *Error) Error() string

Error implements error.Error.

func (*Error) ErrorCode

func (e *Error) ErrorCode() string

ErrorCode holds the class of the error in machine readable format.

type ErrorCode

type ErrorCode string

ErrorCode holds the class of an error in machine-readable format. It is also an error in its own right.

const (
	ErrNotFound             ErrorCode = "not found"
	ErrForbidden            ErrorCode = "forbidden"
	ErrBadRequest           ErrorCode = "bad request"
	ErrUnauthorized         ErrorCode = "unauthorized"
	ErrAlreadyExists        ErrorCode = "already exists"
	ErrNoAdminCredsProvided ErrorCode = "no admin credentials provided"
	ErrMethodNotAllowed     ErrorCode = "method not allowed"
	ErrServiceUnavailable   ErrorCode = "service unavailable"
	ErrInternalServer       ErrorCode = "internal server error"
)

func (ErrorCode) Error

func (code ErrorCode) Error() string

func (ErrorCode) ErrorCode

func (code ErrorCode) ErrorCode() ErrorCode

type GetUserGroupsWithIDRequest

type GetUserGroupsWithIDRequest struct {
	httprequest.Route `httprequest:"GET /v1/uid/groups"`
	UserID            string `httprequest:"id,form"`
}

GetUserGroupsWithIDRequest is a request for the groups of the user with the given ID.

type GetUserWithIDRequest

type GetUserWithIDRequest struct {
	httprequest.Route `httprequest:"GET /v1/uid"`
	UserID            string `httprequest:"id,form"`
}

GetUserWithIDRequest is a request for the user details of the user with the given ID.

type Groups

type Groups struct {
	Groups []string `json:"groups"`
}

Groups contains a list of group names.

type GroupsResponse

type GroupsResponse struct {
	Groups []string `json:"groups"`
}

GroupsResponse is the response to a GetUserGroupsWithIDRequest.

type IDPChoice

type IDPChoice struct {
	IDPs []IDPChoiceDetails `json:"idps"`
}

IDPChoice lists available IDPs for authentication.

type IDPChoiceDetails

type IDPChoiceDetails struct {
	Domain      string `json:"domain"`
	Description string `json:"description"`
	Icon        string `json:"icon"`
	Name        string `json:"name"`
	URL         string `json:"url"`
}

IDPChoiceDetails provides details about a IDP choice for authentication.

type LoginMethods

type LoginMethods struct {
	// Agent is the endpoint to connect to, if the client wishes to
	// authenticate as an agent.
	Agent string `json:"agent,omitempty"`

	// Interactive is the endpoint to connect to, if the user can
	// interact with the login process.
	Interactive string `json:"interactive,omitempty"`

	// UbuntuSSOOAuth is the endpoint to send a request, signed with
	// UbuntuSSO OAuth credentials, to if the client wishes to use
	// oauth to log in to Identity Manager. Ubuntu SSO uses oauth 1.0.
	UbuntuSSOOAuth string `json:"usso_oauth,omitempty"`

	// UbuntuSSODischarge allows login to be performed by discharging
	// a macaroon with a third-party caveat addressed to Ubuntu SSO.
	UbuntuSSODischarge string `json:"usso_discharge,omitempty"`

	// Form is the endpoint to GET a schema for a login form which
	// can be presented to the user in an interactive manner. The
	// schema will be returned as an environschema.Fields object. The
	// completed form should be POSTed back to the same endpoint.
	Form string `json:"form,omitempty"`
}

LoginMethods holds the response from the /login endpoint when called with "Accept: application/json". This enumerates the available methods for the client to log in.

type ModifyGroups

type ModifyGroups struct {
	Add    []string `json:"add"`
	Remove []string `json:"remove"`
}

ModifyGroups contains a set of group list modifications.

type ModifyUserGroupsRequest

type ModifyUserGroupsRequest struct {
	httprequest.Route `httprequest:"POST /v1/u/:username/groups"`
	Username          Username     `httprequest:"username,path"`
	Groups            ModifyGroups `httprequest:",body"`
}

ModifyUserGroupsRequest is a request to update the list of groups associated with the specified user.

type PublicKeyRequest

type PublicKeyRequest struct {
	httprequest.Route `httprequest:"GET /publickey"`
}

PublicKeyRequest documents the /publickey endpoint. As it contains no request information there is no need to ever create one.

type PublicKeyResponse

type PublicKeyResponse struct {
	PublicKey *bakery.PublicKey
}

PublicKeyResponse is the response to a PublicKeyRequest.

type PutSSHKeysBody

type PutSSHKeysBody struct {
	SSHKeys []string `json:"ssh-keys"`
	Add     bool     `json:"add,omitempty"`
}

PutSSHKeysBody holds the body of a PutSSHKeysRequest.

type PutSSHKeysRequest

type PutSSHKeysRequest struct {
	httprequest.Route `httprequest:"PUT /v1/u/:username/ssh-keys"`
	Username          Username       `httprequest:"username,path"`
	Body              PutSSHKeysBody `httprequest:",body"`
}

PutSSHKeysRequest is a request to set ssh keys to the list of ssh keys associated with the user.

type QueryUsersRequest

type QueryUsersRequest struct {
	httprequest.Route `httprequest:"GET /v1/u"`

	// ExternalID, if present, matches all identities with the given
	// external ID (there should be a maximum of 1).
	ExternalID string `httprequest:"external_id,form"`

	// EMail, if present, matches all identities with the given email
	// address.
	Email string `httprequest:"email,form"`

	// LastLoginSince, if present, must contain a time marshaled as
	// if using Time.MarshalText. It matches all identies that have a
	// last login time after the given time.
	LastLoginSince string `httprequest:"last-login-since,form"`

	// LastDischargeSince, if present, must contain a time marshaled as
	// if using Time.MarshalText. It matches all identies that have a
	// last discharge time after the given time.
	LastDischargeSince string `httprequest:"last-discharge-since,form"`

	// Owner, if present, matches all agent identities with the given
	// owner.
	Owner string `httprequest:"owner,form"`
}

QueryUsersRequest is a request to query the users in the system.

type SSHKeysRequest

type SSHKeysRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/ssh-keys"`
	Username          Username `httprequest:"username,path"`
}

SSHKeysRequest is a request for the list of ssh keys associated with the specified user.

type SSHKeysResponse

type SSHKeysResponse struct {
	SSHKeys []string `json:"ssh_keys"`
}

UserSSHKeysResponse holds a response to the GET /v1/u/:username/ssh-keys containing list of ssh keys associated with the user.

type SetUserExtraInfoItemRequest

type SetUserExtraInfoItemRequest struct {
	httprequest.Route `httprequest:"PUT /v1/u/:username/extra-info/:item"`
	Username          Username    `httprequest:"username,path"`
	Item              string      `httprequest:"item,path"`
	Data              interface{} `httprequest:",body"`
}

SetUserExtraInfoItemRequest is a request to update a single element of the arbitrary extra information stored about the user.

type SetUserExtraInfoRequest

type SetUserExtraInfoRequest struct {
	httprequest.Route `httprequest:"PUT /v1/u/:username/extra-info"`
	Username          Username               `httprequest:"username,path"`
	ExtraInfo         map[string]interface{} `httprequest:",body"`
}

SetUserExtraInfoRequest is a request to updated the arbitrary extra information stored about the user.

type SetUserGroupsRequest

type SetUserGroupsRequest struct {
	httprequest.Route `httprequest:"PUT /v1/u/:username/groups"`
	Username          Username `httprequest:"username,path"`
	Groups            Groups   `httprequest:",body"`
}

SetUserGroupsRequest is a request to set the list of groups associated with the specified user.

type SetUserRequest

type SetUserRequest struct {
	httprequest.Route `httprequest:"PUT /v1/u/:username"`
	Username          Username `httprequest:"username,path"`
	User              `httprequest:",body"`
}

SetUserRequest is a request to set the details of a user. This endpoint is no longer functional.

type TemplateBrandParameters added in v1.12.0

type TemplateBrandParameters struct {
	// BrandName holds the brand name of the entity running Candid.
	BrandName string
	// LogoLocation holds the logo location of the entity running
	// Candid.
	BrandLogoLocation string
}

TemplateBrandParameters holds branding information for the entity running Candid.

func BrandParameters added in v1.12.0

func BrandParameters() TemplateBrandParameters

BrandParameters returns branding information for the entity running Candid.

type User

type User struct {
	Username      Username            `json:"username,omitempty"`
	ExternalID    string              `json:"external_id"`
	FullName      string              `json:"fullname"`
	Email         string              `json:"email"`
	GravatarID    string              `json:"gravatar_id"`
	IDPGroups     []string            `json:"idpgroups"`
	Owner         Username            `json:"owner,omitempty"`
	PublicKeys    []*bakery.PublicKey `json:"public_keys"`
	SSHKeys       []string            `json:"ssh_keys"`
	LastLogin     *time.Time          `json:"last_login,omitempty"`
	LastDischarge *time.Time          `json:"last_discharge,omitempty"`
}

User represents a user in the system.

type UserExtraInfoItemRequest

type UserExtraInfoItemRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/extra-info/:item"`
	Username          Username `httprequest:"username,path"`
	Item              string   `httprequest:"item,path"`
}

UserExtraInfoItemRequest is a request for a single element of the arbitrary extra information stored about the user.

type UserExtraInfoRequest

type UserExtraInfoRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/extra-info"`
	Username          Username `httprequest:"username,path"`
}

UserExtraInfoRequest is a request for the arbitrary extra information stored about the user.

type UserGroupsRequest

type UserGroupsRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/groups"`
	Username          Username `httprequest:"username,path"`
}

UserGroupsRequest is a request for the list of groups associated with the specified user.

type UserIDPGroupsRequest

type UserIDPGroupsRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/idpgroups"`
	UserGroupsRequest
}

UserIDPGroupsRequest defines the deprecated path for UserGroupsRequest. It should no longer be used.

type UserRequest

type UserRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username"`
	Username          Username `httprequest:"username,path"`
}

UserRequest is a request for the user details of the named user.

type UserTokenRequest

type UserTokenRequest struct {
	httprequest.Route `httprequest:"GET /v1/u/:username/macaroon"`
	Username          Username `httprequest:"username,path"`
}

UserTokenRequest is a request for a new token to represent the user.

type Username

type Username string

Username represents the name of a user.

func (*Username) UnmarshalText

func (u *Username) UnmarshalText(b []byte) error

UnmarshalText unmarshals a Username checking it is valid. It implements "encoding".TextUnmarshaler.

type VerifyTokenRequest

type VerifyTokenRequest struct {
	httprequest.Route `httprequest:"POST /v1/verify"`
	Macaroons         macaroon.Slice `httprequest:",body"`
}

VerifyTokenRequest is a request to verify that the provided macaroon.Slice is valid and represents a user from identity.

type WhoAmIRequest

type WhoAmIRequest struct {
	httprequest.Route `httprequest:"GET /v1/whoami"`
}

WhoAmIRequest holds parameters for requesting the current user name.

type WhoAmIResponse

type WhoAmIResponse struct {
	User string `json:"user"`
}

WhoAmIResponse holds information on the currently authenticated user.

Jump to

Keyboard shortcuts

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