Documentation
¶
Index ¶
- Constants
- Variables
- func ById(userId string) db.Q
- func ByIds(userIds ...string) db.Q
- func ClearLoginCache(user gimlet.User, all bool) error
- func Count(query db.Q) (int, error)
- func FormatObjectID(id string) (primitive.ObjectID, error)
- func GetLoginCache(token string, expireAfter time.Duration) (gimlet.User, bool, error)
- func IsValidSubscriptionPreference(in string) bool
- func PutLoginCache(g gimlet.User) (string, error)
- func UpdateAll(query interface{}, update interface{}) error
- func UpdateOne(query interface{}, update interface{}) error
- func UpsertOne(query interface{}, update interface{}) (*adb.ChangeInfo, error)
- type DBUser
- func Find(query db.Q) ([]DBUser, error)
- func FindByGithubName(name string) (*DBUser, error)
- func FindByGithubUID(uid int) (*DBUser, error)
- func FindNeedsReauthorization(reauthorizeAfter time.Duration, maxAttempts int) ([]DBUser, error)
- func FindOne(query db.Q) (*DBUser, error)
- func FindOneById(id string) (*DBUser, error)
- func FindOneByToken(token string) (*DBUser, error)
- func GetPatchUser(gitHubUID int) (*DBUser, error)
- func (u *DBUser) AddFavoritedProject(identifier string) error
- func (u *DBUser) AddPublicKey(keyName, keyValue string) error
- func (u *DBUser) AddRole(role string) error
- func (u *DBUser) DeleteAllRoles() error
- func (u *DBUser) DeletePublicKey(keyName string) error
- func (u *DBUser) DeleteRoles(roles []string) error
- func (u *DBUser) DisplayName() string
- func (u *DBUser) Email() string
- func (u *DBUser) GetAPIKey() string
- func (u *DBUser) GetAccessToken() string
- func (u *DBUser) GetPublicKey(keyname string) (string, error)
- func (u *DBUser) GetRefreshToken() string
- func (u *DBUser) GetRegion() string
- func (u *DBUser) HasPermission(opts gimlet.PermissionOpts) bool
- func (u *DBUser) IncPatchNumber() (int, error)
- func (u *DBUser) IncReauthAttempts() error
- func (u *DBUser) Insert() error
- func (u *DBUser) IsNil() bool
- func (u *DBUser) MarshalBSON() ([]byte, error)
- func (u *DBUser) PublicKeys() []PubKey
- func (u *DBUser) RemoveFavoriteProject(identifier string) error
- func (u *DBUser) RemoveRole(role string) error
- func (u *DBUser) Roles() []string
- func (u *DBUser) UnmarshalBSON(in []byte) error
- func (u *DBUser) Username() string
- type GithubUser
- type LoginCache
- type NotificationPreferences
- type PubKey
- type UseSpruceOptions
- type UserSettings
- type UserSubscriptionPreference
Constants ¶
const (
Collection = "users"
)
Variables ¶
var ( IdKey = bsonutil.MustHaveTag(DBUser{}, "Id") FirstNameKey = bsonutil.MustHaveTag(DBUser{}, "FirstName") LastNameKey = bsonutil.MustHaveTag(DBUser{}, "LastName") DispNameKey = bsonutil.MustHaveTag(DBUser{}, "DispName") EmailAddressKey = bsonutil.MustHaveTag(DBUser{}, "EmailAddress") PatchNumberKey = bsonutil.MustHaveTag(DBUser{}, "PatchNumber") CreatedAtKey = bsonutil.MustHaveTag(DBUser{}, "CreatedAt") SettingsKey = bsonutil.MustHaveTag(DBUser{}, "Settings") APIKeyKey = bsonutil.MustHaveTag(DBUser{}, "APIKey") OnlyAPIKey = bsonutil.MustHaveTag(DBUser{}, "OnlyAPI") PubKeysKey = bsonutil.MustHaveTag(DBUser{}, "PubKeys") LoginCacheKey = bsonutil.MustHaveTag(DBUser{}, "LoginCache") RolesKey = bsonutil.MustHaveTag(DBUser{}, "SystemRoles") LoginCacheTokenKey = bsonutil.MustHaveTag(LoginCache{}, "Token") LoginCacheTTLKey = bsonutil.MustHaveTag(LoginCache{}, "TTL") LoginCacheAccessTokenKey = bsonutil.MustHaveTag(LoginCache{}, "AccessToken") LoginCacheRefreshTokenKey = bsonutil.MustHaveTag(LoginCache{}, "RefreshToken") LoginCacheReauthAttemptsKey = bsonutil.MustHaveTag(LoginCache{}, "ReauthAttempts") PubKeyNameKey = bsonutil.MustHaveTag(PubKey{}, "Name") PubKeyKey = bsonutil.MustHaveTag(PubKey{}, "Key") PubKeyNCreatedAtKey = bsonutil.MustHaveTag(PubKey{}, "CreatedAt") FavoriteProjectsKey = bsonutil.MustHaveTag(DBUser{}, "FavoriteProjects") )
var ( SettingsTZKey = bsonutil.MustHaveTag(UserSettings{}, "Timezone") UseSpruceOptionsKey = bsonutil.MustHaveTag(UserSettings{}, "UseSpruceOptions") SpruceV1Key = bsonutil.MustHaveTag(UseSpruceOptions{}, "SpruceV1") )
Functions ¶
func ClearLoginCache ¶
ClearLoginCache clears a user or all users' tokens from the cache, forcibly logging them out
func GetLoginCache ¶
GetLoginCache retrieve a cached user by token. It returns an error if and only if there was an error retrieving the user from the cache. It returns (<user>, true, nil) if the user is present in the cache and is valid. It returns (<user>, false, nil) if the user is present in the cache but has expired. It returns (nil, false, nil) if the user is not present in the cache.
func PutLoginCache ¶
PutLoginCache generates a token if one does not exist, and sets the TTL to now.
func UpdateAll ¶
func UpdateAll(query interface{}, update interface{}) error
UpdateAll updates all users.
func UpdateOne ¶
func UpdateOne(query interface{}, update interface{}) error
UpdateOne updates one user.
func UpsertOne ¶
func UpsertOne(query interface{}, update interface{}) (*adb.ChangeInfo, error)
UpsertOne upserts a user.
Types ¶
type DBUser ¶
type DBUser struct {
Id string `bson:"_id"`
FirstName string `bson:"first_name"`
LastName string `bson:"last_name"`
DispName string `bson:"display_name"`
EmailAddress string `bson:"email"`
PatchNumber int `bson:"patch_number"`
PubKeys []PubKey `bson:"public_keys" json:"public_keys"`
CreatedAt time.Time `bson:"created_at"`
Settings UserSettings `bson:"settings"`
APIKey string `bson:"apikey"`
SystemRoles []string `bson:"roles"`
LoginCache LoginCache `bson:"login_cache,omitempty"`
FavoriteProjects []string `bson:"favorite_projects"`
OnlyAPI bool `bson:"only_api,omitempty"`
}
func FindByGithubName ¶
func FindByGithubUID ¶
func FindNeedsReauthorization ¶
FindNeedsReauthorization finds all users need to be reauthorized after the given period has passed.
func FindOneByToken ¶
FindOneByToken gets a DBUser by cached login token.
func GetPatchUser ¶
func (*DBUser) AddFavoritedProject ¶
AddFavoritedProject adds a project ID to the user favorites in user DB model
func (*DBUser) AddPublicKey ¶
func (*DBUser) DeleteAllRoles ¶
func (*DBUser) DeletePublicKey ¶
func (*DBUser) DeleteRoles ¶
func (*DBUser) DisplayName ¶
func (*DBUser) GetAccessToken ¶
func (*DBUser) GetRefreshToken ¶
func (*DBUser) HasPermission ¶
func (u *DBUser) HasPermission(opts gimlet.PermissionOpts) bool
func (*DBUser) IncPatchNumber ¶
IncPatchNumber increases the count for the user's patch submissions by one, and then returns the new count.
func (*DBUser) IncReauthAttempts ¶
IncReauthAttempts increases the number of attempted reauths for this user.
func (*DBUser) MarshalBSON ¶
func (*DBUser) PublicKeys ¶
func (*DBUser) RemoveFavoriteProject ¶
RemoveFavoriteProject removes a project ID from the user favorites in user DB model
func (*DBUser) RemoveRole ¶
func (*DBUser) UnmarshalBSON ¶
type GithubUser ¶
type LoginCache ¶
type NotificationPreferences ¶
type NotificationPreferences struct {
BuildBreak UserSubscriptionPreference `bson:"build_break" json:"build_break"`
BuildBreakID string `bson:"build_break_id,omitempty" json:"-"`
PatchFinish UserSubscriptionPreference `bson:"patch_finish" json:"patch_finish"`
PatchFinishID string `bson:"patch_finish_id,omitempty" json:"-"`
PatchFirstFailure UserSubscriptionPreference `bson:"patch_first_failure,omitempty" json:"patch_first_failure"`
PatchFirstFailureID string `bson:"patch_first_failure_id,omitempty" json:"-"`
SpawnHostExpiration UserSubscriptionPreference `bson:"spawn_host_expiration" json:"spawn_host_expiration"`
SpawnHostExpirationID string `bson:"spawn_host_expiration_id,omitempty" json:"-"`
SpawnHostOutcome UserSubscriptionPreference `bson:"spawn_host_outcome" json:"spawn_host_outcome"`
SpawnHostOutcomeID string `bson:"spawn_host_outcome_id,omitempty" json:"-"`
CommitQueue UserSubscriptionPreference `bson:"commit_queue" json:"commit_queue"`
CommitQueueID string `bson:"commit_queue_id,omitempty" json:"-"`
}
type UseSpruceOptions ¶
type UseSpruceOptions struct {
PatchPage bool `json:"patch_page" bson:"patch_page"` // deprecated - do not use
SpruceV1 bool `json:"spruce_v1" bson:"spruce_v1"` // represents users opted into the new Evergreen UI
HasUsedSpruceBefore bool `json:"has_used_spruce_before" bson:"has_used_spruce_before"` // used to know whether or not to display spruce welcome modal
}
type UserSettings ¶
type UserSettings struct {
Timezone string `json:"timezone" bson:"timezone"`
Region string `json:"region" bson:"region"`
GithubUser GithubUser `json:"github_user" bson:"github_user,omitempty"`
SlackUsername string `bson:"slack_username,omitempty" json:"slack_username,omitempty"`
Notifications NotificationPreferences `bson:"notifications,omitempty" json:"notifications,omitempty"`
UseSpruceOptions UseSpruceOptions `json:"use_spruce_options" bson:"use_spruce_options"`
}
type UserSubscriptionPreference ¶
type UserSubscriptionPreference string
const ( PreferenceEmail UserSubscriptionPreference = event.EmailSubscriberType PreferenceSlack UserSubscriptionPreference = event.SlackSubscriberType )