user

package
v0.0.0-...-92dfe4c Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2024 License: MIT Imports: 39 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// SettingsKeyHiddenCommentTypes is the setting key for hidden comment types
	SettingsKeyHiddenCommentTypes = "issue.hidden_comment_types"
	// SettingsKeyDiffWhitespaceBehavior is the setting key for whitespace behavior of diff
	SettingsKeyDiffWhitespaceBehavior = "diff.whitespace_behaviour"
	// SettingsKeyShowOutdatedComments is the setting key wether or not to show outdated comments in PRs
	SettingsKeyShowOutdatedComments = "comment_code.show_outdated"
	// UserActivityPubPrivPem is user's private key
	UserActivityPubPrivPem = "activitypub.priv_pem"
	// UserActivityPubPubPem is user's public key
	UserActivityPubPubPem = "activitypub.pub_pem"
	// SignupIP is the IP address that the user signed up with
	SignupIP = "signup.ip"
	// SignupUserAgent is the user agent that the user signed up with
	SignupUserAgent = "signup.user_agent"
)
View Source
const (
	// EmailNotificationsEnabled indicates that the user would like to receive all email notifications except your own
	EmailNotificationsEnabled = "enabled"
	// EmailNotificationsOnMention indicates that the user would like to be notified via email when mentioned.
	EmailNotificationsOnMention = "onmention"
	// EmailNotificationsDisabled indicates that the user would not like to be notified via email.
	EmailNotificationsDisabled = "disabled"
	// EmailNotificationsAndYourOwn indicates that the user would like to receive all email notifications and your own
	EmailNotificationsAndYourOwn = "andyourown"
)
View Source
const (
	GhostUserID        = -1
	GhostUserName      = "Ghost"
	GhostUserLowerName = "ghost"
)
View Source
const (
	ActionsUserID   = -2
	ActionsUserName = "gitea-actions"
	ActionsFullName = "Gitea Actions"
	ActionsEmail    = "teabot@gitea.io"
)
View Source
const SaltByteLength = 16

Note: As of the beginning of 2022, it is recommended to use at least 64 bits of salt, but NIST is already recommending to use to 128 bits. (16 bytes = 16 * 8 = 128 bits)

Variables

View Source
var (
	ErrBlockOrganization = util.NewInvalidArgumentErrorf("cannot block an organization")
	ErrCanNotBlock       = util.NewInvalidArgumentErrorf("cannot block the user")
	ErrCanNotUnblock     = util.NewInvalidArgumentErrorf("cannot unblock the user")
	ErrBlockedUser       = util.NewPermissionDeniedErrorf("user is blocked")
)
View Source
var ErrOpenIDNotExist = util.NewNotExistErrorf("OpenID is unknown")

ErrOpenIDNotExist openid is not known

Functions

func ActivateEmail

func ActivateEmail(ctx context.Context, email *EmailAddress) error

ActivateEmail activates the email address to given user.

func ActivateUserEmail

func ActivateUserEmail(ctx context.Context, userID int64, email string, activate bool) (err error)

ActivateUserEmail will change the activated state of an email address, either primary or secondary (all in the email_address table)

func AddUserBadge

func AddUserBadge(ctx context.Context, u *User, badge *Badge) error

AddUserBadge adds a badge to a user.

func AddUserBadges

func AddUserBadges(ctx context.Context, u *User, badges []*Badge) error

AddUserBadges adds badges to a user.

func AddUserOpenID

func AddUserOpenID(ctx context.Context, openid *UserOpenID) error

AddUserOpenID adds an pre-verified/normalized OpenID URI to given user. NOTE: make sure openid.URI is normalized already

func AdminCreateUser

func AdminCreateUser(ctx context.Context, u *User, meta *Meta, overwriteDefault ...*CreateUserOverwriteOptions) (err error)

AdminCreateUser is used by admins to manually create users

func BuildCanSeeUserCondition

func BuildCanSeeUserCondition(actor *User) builder.Cond

BuildCanSeeUserCondition creates a condition which can be used to restrict results to users/orgs the actor can see

func ChangeInactivePrimaryEmail

func ChangeInactivePrimaryEmail(ctx context.Context, uid int64, oldEmailAddr, newEmailAddr string) error

ChangeInactivePrimaryEmail replaces the inactive primary email of a given user

func CountUsers

func CountUsers(ctx context.Context, opts *CountUserFilter) int64

CountUsers returns number of users.

func CountWrongUserType

func CountWrongUserType(ctx context.Context) (int64, error)

CountWrongUserType count OrgUser who have wrong type

func CreateBadge

func CreateBadge(ctx context.Context, badge *Badge) error

CreateBadge creates a new badge.

func CreateUser

func CreateUser(ctx context.Context, u *User, meta *Meta, overwriteDefault ...*CreateUserOverwriteOptions) (err error)

CreateUser creates record of a new user.

func DeleteBadge

func DeleteBadge(ctx context.Context, badge *Badge) error

DeleteBadge deletes a badge.

func DeleteUserOpenID

func DeleteUserOpenID(ctx context.Context, openid *UserOpenID) (err error)

DeleteUserOpenID deletes an openid address of given user.

func DeleteUserRedirect

func DeleteUserRedirect(ctx context.Context, userName string) error

DeleteUserRedirect delete any redirect from the specified user name to anything else

func DeleteUserSetting

func DeleteUserSetting(ctx context.Context, userID int64, key string) error

DeleteUserSetting deletes a specific setting for a user

func DisabledFeaturesWithLoginType

func DisabledFeaturesWithLoginType(user *User) *container.Set[string]

DisabledFeaturesWithLoginType returns the set of user features disabled, taking into account the login type of the user if applicable

func EnsureLinkExternalToUser

func EnsureLinkExternalToUser(ctx context.Context, external *ExternalLoginUser) error

EnsureLinkExternalToUser link the external user to the user

func ExistsWithAvatarAtStoragePath

func ExistsWithAvatarAtStoragePath(ctx context.Context, storagePath string) (bool, error)

ExistsWithAvatarAtStoragePath returns true if there is a user with this Avatar

func FixWrongUserType

func FixWrongUserType(ctx context.Context) (int64, error)

FixWrongUserType fix OrgUser who have wrong type

func FollowUser

func FollowUser(ctx context.Context, user, follow *User) (err error)

FollowUser marks someone be another's follower.

func GenerateRandomAvatar

func GenerateRandomAvatar(ctx context.Context, u *User) error

GenerateRandomAvatar generates a random avatar for user.

func GetExternalLogin

func GetExternalLogin(ctx context.Context, externalLoginUser *ExternalLoginUser) (bool, error)

GetExternalLogin checks if a externalID in loginSourceID scope already exists

func GetOrderByName

func GetOrderByName() string

func GetSetting

func GetSetting(ctx context.Context, uid int64, key string) (string, error)

GetSetting returns the setting value via the key

func GetSettings

func GetSettings(ctx context.Context, uid int64, keys []string) (map[string]*Setting, error)

GetSettings returns specific settings from user

func GetUser

func GetUser(ctx context.Context, user *User) (bool, error)

GetUser checks if a user already exists

func GetUserAllSettings

func GetUserAllSettings(ctx context.Context, uid int64) (map[string]*Setting, error)

GetUserAllSettings returns all settings from user

func GetUserEmailsByNames

func GetUserEmailsByNames(ctx context.Context, names []string) []string

GetUserEmailsByNames returns a list of e-mails corresponds to names of users that have their email notifications set to enabled or onmention.

func GetUserIDByExternalUserID

func GetUserIDByExternalUserID(ctx context.Context, provider, userID string) (int64, error)

GetUserIDByExternalUserID get user id according to provider and userID

func GetUserIDsByNames

func GetUserIDsByNames(ctx context.Context, names []string, ignoreNonExistent bool) ([]int64, error)

GetUserIDsByNames returns a slice of ids corresponds to names.

func GetUserNameByID

func GetUserNameByID(ctx context.Context, id int64) (string, error)

GetUserNameByID returns username for the id

func GetUserNamesByIDs

func GetUserNamesByIDs(ctx context.Context, ids []int64) ([]string, error)

GetUserNamesByIDs returns usernames for all resolved users from a list of Ids.

func GetUserSalt

func GetUserSalt() (string, error)

GetUserSalt returns a random user salt token.

func GetUserSetting

func GetUserSetting(ctx context.Context, userID int64, key string, def ...string) (string, error)

GetUserSetting gets a specific setting for a user

func IncrUserRepoNum

func IncrUserRepoNum(ctx context.Context, userID int64) error

func IsEmailActive

func IsEmailActive(ctx context.Context, email string, excludeEmailID int64) (bool, error)

IsEmailActive check if email is activated with a different emailID

func IsEmailDomainAllowed

func IsEmailDomainAllowed(email string) bool

func IsEmailUsed

func IsEmailUsed(ctx context.Context, email string) (bool, error)

IsEmailUsed returns true if the email has been used.

func IsErrEmailAddressNotExist

func IsErrEmailAddressNotExist(err error) bool

IsErrEmailAddressNotExist checks if an error is an ErrEmailAddressNotExist

func IsErrEmailAlreadyUsed

func IsErrEmailAlreadyUsed(err error) bool

IsErrEmailAlreadyUsed checks if an error is a ErrEmailAlreadyUsed.

func IsErrEmailCharIsNotSupported

func IsErrEmailCharIsNotSupported(err error) bool

IsErrEmailCharIsNotSupported checks if an error is an ErrEmailCharIsNotSupported

func IsErrEmailInvalid

func IsErrEmailInvalid(err error) bool

IsErrEmailInvalid checks if an error is an ErrEmailInvalid

func IsErrExternalLoginUserAlreadyExist

func IsErrExternalLoginUserAlreadyExist(err error) bool

IsErrExternalLoginUserAlreadyExist checks if an error is a ExternalLoginUserAlreadyExist.

func IsErrExternalLoginUserNotExist

func IsErrExternalLoginUserNotExist(err error) bool

IsErrExternalLoginUserNotExist checks if an error is a ExternalLoginUserNotExist.

func IsErrOpenIDAlreadyUsed

func IsErrOpenIDAlreadyUsed(err error) bool

IsErrOpenIDAlreadyUsed checks if an error is a ErrOpenIDAlreadyUsed.

func IsErrPrimaryEmailCannotDelete

func IsErrPrimaryEmailCannotDelete(err error) bool

IsErrPrimaryEmailCannotDelete checks if an error is an ErrPrimaryEmailCannotDelete

func IsErrUserAlreadyExist

func IsErrUserAlreadyExist(err error) bool

IsErrUserAlreadyExist checks if an error is a ErrUserAlreadyExists.

func IsErrUserInactive

func IsErrUserInactive(err error) bool

IsErrUserInactive checks if an error is a ErrUserInactive

func IsErrUserIsNotLocal

func IsErrUserIsNotLocal(err error) bool

IsErrUserIsNotLocal

func IsErrUserNotExist

func IsErrUserNotExist(err error) bool

IsErrUserNotExist checks if an error is a ErrUserNotExist.

func IsErrUserProhibitLogin

func IsErrUserProhibitLogin(err error) bool

IsErrUserProhibitLogin checks if an error is a ErrUserProhibitLogin

func IsErrUserRedirectNotExist

func IsErrUserRedirectNotExist(err error) bool

IsErrUserRedirectNotExist check if an error is an ErrUserRedirectNotExist.

func IsErrUserSettingIsNotExist

func IsErrUserSettingIsNotExist(err error) bool

IsErrUserSettingIsNotExist return true if err is ErrSettingIsNotExist

func IsFeatureDisabledWithLoginType

func IsFeatureDisabledWithLoginType(user *User, features ...string) bool

IsFeatureDisabledWithLoginType checks if a user features are disabled, taking into account the login type of the user if applicable

func IsFollowing

func IsFollowing(ctx context.Context, userID, followID int64) bool

IsFollowing returns true if user is following followID.

func IsLastAdminUser

func IsLastAdminUser(ctx context.Context, user *User) bool

IsLastAdminUser check whether user is the last admin

func IsUsableUsername

func IsUsableUsername(name string) error

IsUsableUsername returns an error when a username is reserved

func IsUserBlockedBy

func IsUserBlockedBy(ctx context.Context, blockee *User, blockerIDs ...int64) bool

func IsUserExist

func IsUserExist(ctx context.Context, uid int64, name string) (bool, error)

IsUserExist checks if given user name exist, the user name should be noncased unique. If uid is presented, then check will rule out that one, it is used when update a user name in settings page.

func IsUserVisibleToViewer

func IsUserVisibleToViewer(ctx context.Context, u, viewer *User) bool

IsUserVisibleToViewer check if viewer is able to see user profile

func IterateExternalLogin

func IterateExternalLogin(ctx context.Context, opts FindExternalUserOptions, f func(ctx context.Context, u *ExternalLoginUser) error) error

func LinkExternalToUser

func LinkExternalToUser(ctx context.Context, user *User, externalLoginUser *ExternalLoginUser) error

LinkExternalToUser link the external user to the user

func LookupUserRedirect

func LookupUserRedirect(ctx context.Context, userName string) (int64, error)

LookupUserRedirect look up userID if a user has a redirect name

func MakeActiveEmailPrimary

func MakeActiveEmailPrimary(ctx context.Context, emailID int64) error

func MakeInactiveEmailPrimary

func MakeInactiveEmailPrimary(ctx context.Context, emailID int64) error

func NewUserRedirect

func NewUserRedirect(ctx context.Context, ID int64, oldUserName, newUserName string) error

NewUserRedirect create a new user redirect

func NormalizeUserName

func NormalizeUserName(s string) (string, error)

NormalizeUserName only takes the name part if it is an email address, transforms it diacritics to ASCII characters. It returns a string with the single-quotes removed, and any other non-supported username characters are replaced with a `-` character

func RemoveAccountLink(ctx context.Context, user *User, loginSourceID int64) (int64, error)

RemoveAccountLink will remove all external login sources for the given user

func RemoveAllAccountLinks(ctx context.Context, user *User) error

RemoveAllAccountLinks will remove all external login sources for the given user

func RemoveAllUserBadges

func RemoveAllUserBadges(ctx context.Context, u *User) error

RemoveAllUserBadges removes all badges from a user.

func RemoveUserBadge

func RemoveUserBadge(ctx context.Context, u *User, badge *Badge) error

RemoveUserBadge removes a badge from a user.

func RemoveUserBadges

func RemoveUserBadges(ctx context.Context, u *User, badges []*Badge) error

RemoveUserBadges removes badges from a user.

func SetMustChangePassword

func SetMustChangePassword(ctx context.Context, all, mustChangePassword bool, include, exclude []string) (int64, error)

func SetUserSetting

func SetUserSetting(ctx context.Context, userID int64, key, value string) error

SetUserSetting updates a users' setting for a specific key

func ToggleUserOpenIDVisibility

func ToggleUserOpenIDVisibility(ctx context.Context, id int64) (err error)

ToggleUserOpenIDVisibility toggles visibility of an openid address of given user.

func UnfollowUser

func UnfollowUser(ctx context.Context, userID, followID int64) (err error)

UnfollowUser unmarks someone as another's follower.

func UpdateBadge

func UpdateBadge(ctx context.Context, badge *Badge) error

UpdateBadge updates a badge based on its slug.

func UpdateBlockingNote

func UpdateBlockingNote(ctx context.Context, id int64, note string) error

func UpdateEmailAddress

func UpdateEmailAddress(ctx context.Context, email *EmailAddress) error

func UpdateExternalUserByExternalID

func UpdateExternalUserByExternalID(ctx context.Context, external *ExternalLoginUser) error

UpdateExternalUserByExternalID updates an external user's information

func UpdateUserCols

func UpdateUserCols(ctx context.Context, u *User, cols ...string) error

UpdateUserCols update user according special columns

func UserPath

func UserPath(userName string) string

UserPath returns the path absolute path of user repositories.

func ValidateEmail

func ValidateEmail(email string) error

ValidateEmail check if email is a valid & allowed address

func ValidateEmailForAdmin

func ValidateEmailForAdmin(email string) error

ValidateEmailForAdmin check if email is a valid address when admins manually add or edit users

func ValidateUser

func ValidateUser(u *User, cols ...string) error

ValidateUser check if user is valid to insert / update into database

Types

type Badge

type Badge struct {
	ID          int64  `xorm:"pk autoincr"`
	Slug        string `xorm:"UNIQUE"`
	Description string
	ImageURL    string
}

Badge represents a user badge

func GetBadge

func GetBadge(ctx context.Context, slug string) (*Badge, error)

GetBadge returns a badge

func GetUserBadges

func GetUserBadges(ctx context.Context, u *User) ([]*Badge, int64, error)

GetUserBadges returns the user's badges.

type Blocking

type Blocking struct {
	ID          int64 `xorm:"pk autoincr"`
	BlockerID   int64 `xorm:"UNIQUE(block)"`
	Blocker     *User `xorm:"-"`
	BlockeeID   int64 `xorm:"UNIQUE(block)"`
	Blockee     *User `xorm:"-"`
	Note        string
	CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
}

func FindBlockings

func FindBlockings(ctx context.Context, opts *FindBlockingOptions) ([]*Blocking, int64, error)

func GetBlocking

func GetBlocking(ctx context.Context, blockerID, blockeeID int64) (*Blocking, error)

func (*Blocking) TableName

func (*Blocking) TableName() string

type BlockingList

type BlockingList []*Blocking

func (BlockingList) LoadAttributes

func (blocks BlockingList) LoadAttributes(ctx context.Context) error

type CountUserFilter

type CountUserFilter struct {
	LastLoginSince *int64
	IsAdmin        optional.Option[bool]
}

CountUserFilter represent optional filters for CountUsers

type CreateUserOverwriteOptions

type CreateUserOverwriteOptions struct {
	KeepEmailPrivate             optional.Option[bool]
	Visibility                   *structs.VisibleType
	AllowCreateOrganization      optional.Option[bool]
	EmailNotificationsPreference *string
	MaxRepoCreation              *int
	Theme                        *string
	IsRestricted                 optional.Option[bool]
	IsActive                     optional.Option[bool]
}

CreateUserOverwriteOptions are an optional options who overwrite system defaults on user creation

type EmailAddress

type EmailAddress struct {
	ID          int64  `xorm:"pk autoincr"`
	UID         int64  `xorm:"INDEX NOT NULL"`
	Email       string `xorm:"UNIQUE NOT NULL"`
	LowerEmail  string `xorm:"UNIQUE NOT NULL"`
	IsActivated bool
	IsPrimary   bool `xorm:"DEFAULT(false) NOT NULL"`
}

EmailAddress is the list of all email addresses of a user. It also contains the primary email address which is saved in user table.

func GetEmailAddressByEmail

func GetEmailAddressByEmail(ctx context.Context, email string) (*EmailAddress, error)

func GetEmailAddressByID

func GetEmailAddressByID(ctx context.Context, uid, id int64) (*EmailAddress, error)

GetEmailAddressByID gets a user's email address by ID

func GetEmailAddressOfUser

func GetEmailAddressOfUser(ctx context.Context, email string, uid int64) (*EmailAddress, error)

func GetEmailAddresses

func GetEmailAddresses(ctx context.Context, uid int64) ([]*EmailAddress, error)

GetEmailAddresses returns all email addresses belongs to given user.

func GetPrimaryEmailAddressOfUser

func GetPrimaryEmailAddressOfUser(ctx context.Context, uid int64) (*EmailAddress, error)

func InsertEmailAddress

func InsertEmailAddress(ctx context.Context, email *EmailAddress) (*EmailAddress, error)

func VerifyActiveEmailCode

func VerifyActiveEmailCode(ctx context.Context, code, email string) *EmailAddress

VerifyActiveEmailCode verifies active email code when active account

func (*EmailAddress) BeforeInsert

func (email *EmailAddress) BeforeInsert()

BeforeInsert will be invoked by XORM before inserting a record

type ErrEmailAddressNotExist

type ErrEmailAddressNotExist struct {
	Email string
}

ErrEmailAddressNotExist email address not exist

func (ErrEmailAddressNotExist) Error

func (err ErrEmailAddressNotExist) Error() string

func (ErrEmailAddressNotExist) Unwrap

func (err ErrEmailAddressNotExist) Unwrap() error

type ErrEmailAlreadyUsed

type ErrEmailAlreadyUsed struct {
	Email string
}

ErrEmailAlreadyUsed represents a "EmailAlreadyUsed" kind of error.

func (ErrEmailAlreadyUsed) Error

func (err ErrEmailAlreadyUsed) Error() string

func (ErrEmailAlreadyUsed) Unwrap

func (err ErrEmailAlreadyUsed) Unwrap() error

type ErrEmailCharIsNotSupported

type ErrEmailCharIsNotSupported struct {
	Email string
}

ErrEmailCharIsNotSupported e-mail address contains unsupported character

func (ErrEmailCharIsNotSupported) Error

func (err ErrEmailCharIsNotSupported) Error() string

func (ErrEmailCharIsNotSupported) Unwrap

func (err ErrEmailCharIsNotSupported) Unwrap() error

type ErrEmailInvalid

type ErrEmailInvalid struct {
	Email string
}

ErrEmailInvalid represents an error where the email address does not comply with RFC 5322 or has a leading '-' character

func (ErrEmailInvalid) Error

func (err ErrEmailInvalid) Error() string

func (ErrEmailInvalid) Unwrap

func (err ErrEmailInvalid) Unwrap() error

type ErrExternalLoginUserAlreadyExist

type ErrExternalLoginUserAlreadyExist struct {
	ExternalID    string
	UserID        int64
	LoginSourceID int64
}

ErrExternalLoginUserAlreadyExist represents a "ExternalLoginUserAlreadyExist" kind of error.

func (ErrExternalLoginUserAlreadyExist) Error

func (ErrExternalLoginUserAlreadyExist) Unwrap

type ErrExternalLoginUserNotExist

type ErrExternalLoginUserNotExist struct {
	UserID        int64
	LoginSourceID int64
}

ErrExternalLoginUserNotExist represents a "ExternalLoginUserNotExist" kind of error.

func (ErrExternalLoginUserNotExist) Error

func (ErrExternalLoginUserNotExist) Unwrap

func (err ErrExternalLoginUserNotExist) Unwrap() error

type ErrOpenIDAlreadyUsed

type ErrOpenIDAlreadyUsed struct {
	OpenID string
}

ErrOpenIDAlreadyUsed represents a "OpenIDAlreadyUsed" kind of error.

func (ErrOpenIDAlreadyUsed) Error

func (err ErrOpenIDAlreadyUsed) Error() string

func (ErrOpenIDAlreadyUsed) Unwrap

func (err ErrOpenIDAlreadyUsed) Unwrap() error

type ErrPrimaryEmailCannotDelete

type ErrPrimaryEmailCannotDelete struct {
	Email string
}

ErrPrimaryEmailCannotDelete primary email address cannot be deleted

func (ErrPrimaryEmailCannotDelete) Error

func (err ErrPrimaryEmailCannotDelete) Error() string

func (ErrPrimaryEmailCannotDelete) Unwrap

func (err ErrPrimaryEmailCannotDelete) Unwrap() error

type ErrUserAlreadyExist

type ErrUserAlreadyExist struct {
	Name string
}

ErrUserAlreadyExist represents a "user already exists" error.

func (ErrUserAlreadyExist) Error

func (err ErrUserAlreadyExist) Error() string

func (ErrUserAlreadyExist) Unwrap

func (err ErrUserAlreadyExist) Unwrap() error

Unwrap unwraps this error as a ErrExist error

type ErrUserInactive

type ErrUserInactive struct {
	UID  int64
	Name string
}

ErrUserInactive represents a "ErrUserInactive" kind of error.

func (ErrUserInactive) Error

func (err ErrUserInactive) Error() string

func (ErrUserInactive) Unwrap

func (err ErrUserInactive) Unwrap() error

Unwrap unwraps this error as a ErrPermission error

type ErrUserIsNotLocal

type ErrUserIsNotLocal struct {
	UID  int64
	Name string
}

ErrUserIsNotLocal represents a "ErrUserIsNotLocal" kind of error.

func (ErrUserIsNotLocal) Error

func (err ErrUserIsNotLocal) Error() string

type ErrUserNotExist

type ErrUserNotExist struct {
	UID  int64
	Name string
}

ErrUserNotExist represents a "UserNotExist" kind of error.

func (ErrUserNotExist) Error

func (err ErrUserNotExist) Error() string

func (ErrUserNotExist) Unwrap

func (err ErrUserNotExist) Unwrap() error

Unwrap unwraps this error as a ErrNotExist error

type ErrUserProhibitLogin

type ErrUserProhibitLogin struct {
	UID  int64
	Name string
}

ErrUserProhibitLogin represents a "ErrUserProhibitLogin" kind of error.

func (ErrUserProhibitLogin) Error

func (err ErrUserProhibitLogin) Error() string

func (ErrUserProhibitLogin) Unwrap

func (err ErrUserProhibitLogin) Unwrap() error

Unwrap unwraps this error as a ErrPermission error

type ErrUserRedirectNotExist

type ErrUserRedirectNotExist struct {
	Name string
}

ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error.

func (ErrUserRedirectNotExist) Error

func (err ErrUserRedirectNotExist) Error() string

func (ErrUserRedirectNotExist) Unwrap

func (err ErrUserRedirectNotExist) Unwrap() error

type ErrUserSettingIsNotExist

type ErrUserSettingIsNotExist struct {
	Key string
}

ErrUserSettingIsNotExist represents an error that a setting is not exist with special key

func (ErrUserSettingIsNotExist) Error

func (err ErrUserSettingIsNotExist) Error() string

Error implements error

func (ErrUserSettingIsNotExist) Unwrap

func (err ErrUserSettingIsNotExist) Unwrap() error

type ExternalLoginUser

type ExternalLoginUser struct {
	ExternalID        string         `xorm:"pk NOT NULL"`
	UserID            int64          `xorm:"INDEX NOT NULL"`
	LoginSourceID     int64          `xorm:"pk NOT NULL"`
	RawData           map[string]any `xorm:"TEXT JSON"`
	Provider          string         `xorm:"index VARCHAR(25)"`
	Email             string
	Name              string
	FirstName         string
	LastName          string
	NickName          string
	Description       string
	AvatarURL         string `xorm:"TEXT"`
	Location          string
	AccessToken       string `xorm:"TEXT"`
	AccessTokenSecret string `xorm:"TEXT"`
	RefreshToken      string `xorm:"TEXT"`
	ExpiresAt         time.Time
}

ExternalLoginUser makes the connecting between some existing user and additional external login sources

type ExternalUserMigrated

type ExternalUserMigrated interface {
	GetExternalName() string
	GetExternalID() int64
}

type ExternalUserRemappable

type ExternalUserRemappable interface {
	GetUserID() int64
	RemapExternalUser(externalName string, externalID, userID int64) error
	ExternalUserMigrated
}

type FindBlockingOptions

type FindBlockingOptions struct {
	db.ListOptions
	BlockerID int64
	BlockeeID int64
}

func (*FindBlockingOptions) ToConds

func (opts *FindBlockingOptions) ToConds() builder.Cond

type FindExternalUserOptions

type FindExternalUserOptions struct {
	db.ListOptions
	Provider        string
	UserID          int64
	LoginSourceID   int64
	HasRefreshToken bool
	Expired         bool
	OrderBy         string
}

FindExternalUserOptions represents an options to find external users

func (FindExternalUserOptions) ToConds

func (opts FindExternalUserOptions) ToConds() builder.Cond

func (FindExternalUserOptions) ToOrders

func (opts FindExternalUserOptions) ToOrders() string

type Follow

type Follow struct {
	ID          int64              `xorm:"pk autoincr"`
	UserID      int64              `xorm:"UNIQUE(follow)"`
	FollowID    int64              `xorm:"UNIQUE(follow)"`
	CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
}

Follow represents relations of user and their followers.

type Meta

type Meta struct {
	// Store the initial registration of the user, to aid in spam prevention
	// Ensure that one IP isn't creating many accounts (following mediawiki approach)
	InitialIP        string
	InitialUserAgent string
}

Meta defines the meta information of a user, to be stored in the K/V table

type Redirect

type Redirect struct {
	ID             int64  `xorm:"pk autoincr"`
	LowerName      string `xorm:"UNIQUE(s) INDEX NOT NULL"`
	RedirectUserID int64  // userID to redirect to
}

Redirect represents that a user name should be redirected to another

func (Redirect) TableName

func (Redirect) TableName() string

TableName provides the real table name

type SearchEmailOptions

type SearchEmailOptions struct {
	db.ListOptions
	Keyword     string
	SortType    SearchEmailOrderBy
	IsPrimary   optional.Option[bool]
	IsActivated optional.Option[bool]
}

SearchEmailOptions are options to search e-mail addresses for the admin panel

type SearchEmailOrderBy

type SearchEmailOrderBy string

SearchEmailOrderBy is used to sort the results from SearchEmails()

const (
	SearchEmailOrderByEmail        SearchEmailOrderBy = "email_address.lower_email ASC, email_address.is_primary DESC, email_address.id ASC"
	SearchEmailOrderByEmailReverse SearchEmailOrderBy = "email_address.lower_email DESC, email_address.is_primary ASC, email_address.id DESC"
	SearchEmailOrderByName         SearchEmailOrderBy = "`user`.lower_name ASC, email_address.is_primary DESC, email_address.id ASC"
	SearchEmailOrderByNameReverse  SearchEmailOrderBy = "`user`.lower_name DESC, email_address.is_primary ASC, email_address.id DESC"
)

Strings for sorting result

func (SearchEmailOrderBy) String

func (s SearchEmailOrderBy) String() string

type SearchEmailResult

type SearchEmailResult struct {
	ID          int64
	UID         int64
	Email       string
	IsActivated bool
	IsPrimary   bool
	// From User
	Name     string
	FullName string
}

SearchEmailResult is an e-mail address found in the user or email_address table

func SearchEmails

func SearchEmails(ctx context.Context, opts *SearchEmailOptions) ([]*SearchEmailResult, int64, error)

SearchEmails takes options i.e. keyword and part of email name to search, it returns results in given range and number of total results.

type SearchOrganizationsOptions

type SearchOrganizationsOptions struct {
	db.ListOptions
	All bool
}

SearchOrganizationsOptions options to filter organizations

type SearchUserOptions

type SearchUserOptions struct {
	db.ListOptions

	Keyword       string
	Type          UserType
	UID           int64
	LoginName     string // this option should be used only for admin user
	SourceID      int64  // this option should be used only for admin user
	OrderBy       db.SearchOrderBy
	Visible       []structs.VisibleType
	Actor         *User // The user doing the search
	SearchByEmail bool  // Search by email as well as username/full name

	SupportedSortOrders container.Set[string] // if not nil, only allow to use the sort orders in this set

	IsActive           optional.Option[bool]
	IsAdmin            optional.Option[bool]
	IsRestricted       optional.Option[bool]
	IsTwoFactorEnabled optional.Option[bool]
	IsProhibitLogin    optional.Option[bool]
	IncludeReserved    bool

	ExtraParamStrings map[string]string
}

SearchUserOptions contains the options for searching

type Setting

type Setting struct {
	ID           int64  `xorm:"pk autoincr"`
	UserID       int64  `xorm:"index unique(key_userid)"`              // to load all of someone's settings
	SettingKey   string `xorm:"varchar(255) index unique(key_userid)"` // ensure key is always lowercase
	SettingValue string `xorm:"text"`
}

Setting is a key value store of user settings

func GetSettingNoCache

func GetSettingNoCache(ctx context.Context, uid int64, key string) (*Setting, error)

GetSettingNoCache returns specific setting without using the cache

func (*Setting) TableName

func (s *Setting) TableName() string

TableName sets the table name for the settings struct

type User

type User struct {
	ID        int64  `xorm:"pk autoincr"`
	LowerName string `xorm:"UNIQUE NOT NULL"`
	Name      string `xorm:"UNIQUE NOT NULL"`
	FullName  string
	// Email is the primary email address (to be used for communication)
	Email                        string `xorm:"NOT NULL"`
	KeepEmailPrivate             bool
	EmailNotificationsPreference string `xorm:"VARCHAR(20) NOT NULL DEFAULT 'enabled'"`
	Passwd                       string `xorm:"NOT NULL"`
	PasswdHashAlgo               string `xorm:"NOT NULL DEFAULT 'argon2'"`

	// MustChangePassword is an attribute that determines if a user
	// is to change their password after registration.
	MustChangePassword bool `xorm:"NOT NULL DEFAULT false"`

	LoginType   auth.Type
	LoginSource int64 `xorm:"NOT NULL DEFAULT 0"`
	LoginName   string
	Type        UserType
	Location    string
	Website     string
	Rands       string `xorm:"VARCHAR(32)"`
	Salt        string `xorm:"VARCHAR(32)"`
	Language    string `xorm:"VARCHAR(5)"`
	Description string

	CreatedUnix   timeutil.TimeStamp `xorm:"INDEX created"`
	UpdatedUnix   timeutil.TimeStamp `xorm:"INDEX updated"`
	LastLoginUnix timeutil.TimeStamp `xorm:"INDEX"`

	// Remember visibility choice for convenience, true for private
	LastRepoVisibility bool
	// Maximum repository creation limit, -1 means use global default
	MaxRepoCreation int `xorm:"NOT NULL DEFAULT -1"`

	// IsActive true: primary email is activated, user can access Web UI and Git SSH.
	// false: an inactive user can only log in Web UI for account operations (ex: activate the account by email), no other access.
	IsActive bool `xorm:"INDEX"`
	// the user is a Gitea admin, who can access all repositories and the admin pages.
	IsAdmin bool
	// true: the user is only allowed to see organizations/repositories that they has explicit rights to.
	// (ex: in private Gitea instances user won't be allowed to see even organizations/repositories that are set as public)
	IsRestricted bool `xorm:"NOT NULL DEFAULT false"`

	AllowGitHook            bool
	AllowImportLocal        bool // Allow migrate repository by local path
	AllowCreateOrganization bool `xorm:"DEFAULT true"`

	// true: the user is not allowed to log in Web UI. Git/SSH access could still be allowed (please refer to Git/SSH access related code/documents)
	ProhibitLogin bool `xorm:"NOT NULL DEFAULT false"`

	// Avatar
	Avatar          string `xorm:"VARCHAR(2048) NOT NULL"`
	AvatarEmail     string `xorm:"NOT NULL"`
	UseCustomAvatar bool

	// Counters
	NumFollowers int
	NumFollowing int `xorm:"NOT NULL DEFAULT 0"`
	NumStars     int
	NumRepos     int

	// For organization
	NumTeams                  int
	NumMembers                int
	Visibility                structs.VisibleType `xorm:"NOT NULL DEFAULT 0"`
	RepoAdminChangeTeamAccess bool                `xorm:"NOT NULL DEFAULT false"`

	// Preferences
	DiffViewStyle       string `xorm:"NOT NULL DEFAULT ''"`
	Theme               string `xorm:"NOT NULL DEFAULT ''"`
	KeepActivityPrivate bool   `xorm:"NOT NULL DEFAULT false"`
}

User represents the object of individual and member of organization.

func GetAdminUser

func GetAdminUser(ctx context.Context) (*User, error)

GetAdminUser returns the first administrator

func GetAllUsers

func GetAllUsers(ctx context.Context) ([]*User, error)

GetAllUsers returns a slice of all individual users found in DB.

func GetInactiveUsers

func GetInactiveUsers(ctx context.Context, olderThan time.Duration) ([]*User, error)

GetInactiveUsers gets all inactive users

func GetMaileableUsersByIDs

func GetMaileableUsersByIDs(ctx context.Context, ids []int64, isMention bool) ([]*User, error)

GetMaileableUsersByIDs gets users from ids, but only if they can receive mails

func GetPossibleUserByID

func GetPossibleUserByID(ctx context.Context, id int64) (*User, error)

GetPossibleUserByID returns the user if id > 0 or return system usrs if id < 0

func GetPossibleUserByIDs

func GetPossibleUserByIDs(ctx context.Context, ids []int64) ([]*User, error)

GetPossibleUserByIDs returns the users if id > 0 or return system users if id < 0

func GetUserByEmail

func GetUserByEmail(ctx context.Context, email string) (*User, error)

GetUserByEmail returns the user object by given e-mail if exists.

func GetUserByID

func GetUserByID(ctx context.Context, id int64) (*User, error)

GetUserByID returns the user object by given ID if exists.

func GetUserByIDs

func GetUserByIDs(ctx context.Context, ids []int64) ([]*User, error)

GetUserByIDs returns the user objects by given IDs if exists.

func GetUserByName

func GetUserByName(ctx context.Context, name string) (*User, error)

GetUserByNameCtx returns user by given name.

func GetUserByOpenID

func GetUserByOpenID(ctx context.Context, uri string) (*User, error)

GetUserByOpenID returns the user object by given OpenID if exists.

func GetUserFollowers

func GetUserFollowers(ctx context.Context, u, viewer *User, listOptions db.ListOptions) ([]*User, int64, error)

GetUserFollowers returns range of user's followers.

func GetUserFollowing

func GetUserFollowing(ctx context.Context, u, viewer *User, listOptions db.ListOptions) ([]*User, int64, error)

GetUserFollowing returns range of user's following.

func GetUsersBySource

func GetUsersBySource(ctx context.Context, s *auth.Source) ([]*User, error)

GetUsersBySource returns a list of Users for a login source

func GetVerifyUser

func GetVerifyUser(ctx context.Context, code string) (user *User)

GetVerifyUser get user by verify code

func NewActionsUser

func NewActionsUser() *User

NewActionsUser creates and returns a fake user for running the actions.

func NewGhostUser

func NewGhostUser() *User

NewGhostUser creates and returns a fake user for someone has deleted their account.

func NewReplaceUser

func NewReplaceUser(name string) *User

NewReplaceUser creates and returns a fake user for external user

func SearchUsers

func SearchUsers(ctx context.Context, opts *SearchUserOptions) (users []*User, _ int64, _ error)

SearchUsers takes options i.e. keyword and part of user name to search, it returns results in given range and number of total results.

func ValidateCommitWithEmail

func ValidateCommitWithEmail(ctx context.Context, c *git.Commit) *User

ValidateCommitWithEmail check if author's e-mail of commit is corresponding to a user.

func VerifyUserActiveCode

func VerifyUserActiveCode(ctx context.Context, code string) (user *User)

VerifyUserActiveCode verifies active code when active account

func (*User) AfterLoad

func (u *User) AfterLoad()

AfterLoad is invoked from XORM after filling all the fields of this object.

func (u *User) AvatarLink(ctx context.Context) string

AvatarLink returns the full avatar url with http host. TODO: refactor it to a relative URL, but it is still used in API response at the moment

func (*User) AvatarLinkWithSize

func (u *User) AvatarLinkWithSize(ctx context.Context, size int) string

AvatarLinkWithSize returns a link to the user's avatar with size. size <= 0 means default size

func (*User) BeforeUpdate

func (u *User) BeforeUpdate()

BeforeUpdate is invoked from XORM before updating this object.

func (*User) CanCreateOrganization

func (u *User) CanCreateOrganization() bool

CanCreateOrganization returns true if user can create organisation.

func (*User) CanCreateRepo

func (u *User) CanCreateRepo() bool

CanCreateRepo returns if user login can create a repository NOTE: functions calling this assume a failure due to repository count limit; if new checks are added, those functions should be revised

func (*User) CanEditGitHook

func (u *User) CanEditGitHook() bool

CanEditGitHook returns true if user can edit Git hooks.

func (*User) CanForkRepo

func (u *User) CanForkRepo() bool

CanForkRepo returns if user login can fork a repository It checks especially that the user can create repos, and potentially more

func (*User) CanImportLocal

func (u *User) CanImportLocal() bool

CanImportLocal returns true if user can migrate repository by local path.

func (*User) CustomAvatarRelativePath

func (u *User) CustomAvatarRelativePath() string

CustomAvatarRelativePath returns user custom avatar relative path.

func (u *User) DashboardLink() string

DashboardLink returns the user dashboard page link.

func (*User) DisplayName

func (u *User) DisplayName() string

DisplayName returns full name if it's not empty, returns username otherwise.

func (*User) EmailTo

func (u *User) EmailTo() string

EmailTo returns a string suitable to be put into a e-mail `To:` header.

func (*User) GenerateEmailActivateCode

func (u *User) GenerateEmailActivateCode(email string) string

GenerateEmailActivateCode generates an activate code based on user information and given e-mail.

func (*User) GetCompleteName

func (u *User) GetCompleteName() string

GetCompleteName returns the full name and username in the form of "Full Name (username)" if full name is not empty, otherwise it returns "username".

func (*User) GetDisplayName

func (u *User) GetDisplayName() string

GetDisplayName returns full name if it's not empty and DEFAULT_SHOW_FULL_NAME is set, returns username otherwise.

func (*User) GetEmail

func (u *User) GetEmail() string

GetEmail returns an noreply email, if the user has set to keep his email address private, otherwise the primary email address.

func (*User) GetPlaceholderEmail

func (u *User) GetPlaceholderEmail() string

GetPlaceholderEmail returns an noreply email

func (*User) GitName

func (u *User) GitName() string

GitName returns a git safe name

func (*User) HTMLURL

func (u *User) HTMLURL() string

HTMLURL returns the user or organization's full link.

func (u *User) HomeLink() string

HomeLink returns the user or organization home page link.

func (*User) IsActions

func (u *User) IsActions() bool

func (*User) IsBot

func (u *User) IsBot() bool

IsBot returns whether or not the user is of type bot

func (*User) IsGhost

func (u *User) IsGhost() bool

IsGhost check if user is fake user for a deleted account

func (*User) IsIndividual

func (u *User) IsIndividual() bool

IsIndividual returns true if user is actually a individual user.

func (*User) IsLocal

func (u *User) IsLocal() bool

IsLocal returns true if user login type is LoginPlain.

func (*User) IsMailable

func (u *User) IsMailable() bool

IsMailable checks if a user is eligible to receive emails.

func (*User) IsOAuth2

func (u *User) IsOAuth2() bool

IsOAuth2 returns true if user login type is LoginOAuth2.

func (*User) IsOrganization

func (u *User) IsOrganization() bool

IsOrganization returns true if user is actually a organization.

func (*User) IsPasswordSet

func (u *User) IsPasswordSet() bool

IsPasswordSet checks if the password is set or left empty

func (*User) IsUploadAvatarChanged

func (u *User) IsUploadAvatarChanged(data []byte) bool

IsUploadAvatarChanged returns true if the current user's avatar would be changed with the provided data

func (*User) IsUser

func (u *User) IsUser() bool

func (*User) LogString

func (u *User) LogString() string

func (*User) MaxCreationLimit

func (u *User) MaxCreationLimit() int

MaxCreationLimit returns the number of repositories a user is allowed to create

func (*User) NewGitSig

func (u *User) NewGitSig() *git.Signature

NewGitSig generates and returns the signature of given user.

func (u *User) OrganisationLink() string

OrganisationLink returns the organization sub page link.

func (*User) SetLastLogin

func (u *User) SetLastLogin()

SetLastLogin set time to last login

func (*User) SetPassword

func (u *User) SetPassword(passwd string) (err error)

SetPassword hashes a password using the algorithm defined in the config value of PASSWORD_HASH_ALGO change passwd, salt and passwd_hash_algo fields

func (*User) ShortName

func (u *User) ShortName(length int) string

ShortName ellipses username to length

func (*User) ValidatePassword

func (u *User) ValidatePassword(passwd string) bool

ValidatePassword checks if the given password matches the one belonging to the user.

type UserBadge

type UserBadge struct {
	ID      int64 `xorm:"pk autoincr"`
	BadgeID int64
	UserID  int64 `xorm:"INDEX"`
}

UserBadge represents a user badge

type UserCommit

type UserCommit struct {
	User *User
	*git.Commit
}

UserCommit represents a commit with validation of user.

func ValidateCommitsWithEmails

func ValidateCommitsWithEmails(ctx context.Context, oldCommits []*git.Commit) []*UserCommit

ValidateCommitsWithEmails checks if authors' e-mails of commits are corresponding to users.

type UserList

type UserList []*User //revive:disable-line:exported

UserList is a list of user. This type provide valuable methods to retrieve information for a group of users efficiently.

func GetUsersByIDs

func GetUsersByIDs(ctx context.Context, ids []int64) (UserList, error)

GetUsersByIDs returns all resolved users from a list of Ids.

func (UserList) GetTwoFaStatus

func (users UserList) GetTwoFaStatus(ctx context.Context) map[int64]bool

GetTwoFaStatus return state of 2FA enrollement

func (UserList) GetUserIDs

func (users UserList) GetUserIDs() []int64

GetUserIDs returns a slice of user's id

type UserOpenID

type UserOpenID struct {
	ID   int64  `xorm:"pk autoincr"`
	UID  int64  `xorm:"INDEX NOT NULL"`
	URI  string `xorm:"UNIQUE NOT NULL"`
	Show bool   `xorm:"DEFAULT false"`
}

UserOpenID is the list of all OpenID identities of a user. Since this is a middle table, name it OpenID is not suitable, so we ignore the lint here

func GetUserOpenIDs

func GetUserOpenIDs(ctx context.Context, uid int64) ([]*UserOpenID, error)

GetUserOpenIDs returns all openid addresses that belongs to given user.

type UserType

type UserType int //revive:disable-line:exported

UserType defines the user type

const (
	// UserTypeIndividual defines an individual user
	UserTypeIndividual UserType = iota // Historic reason to make it starts at 0.

	// UserTypeOrganization defines an organization
	UserTypeOrganization // 1

	// UserTypeUserReserved reserves a (non-existing) user, i.e. to prevent a spam user from re-registering after being deleted, or to reserve the name until the user is actually created later on
	UserTypeUserReserved // 2

	// UserTypeOrganizationReserved reserves a (non-existing) organization, to be used in combination with UserTypeUserReserved
	UserTypeOrganizationReserved // 3

	// UserTypeBot defines a bot user
	UserTypeBot // 4

	// UserTypeRemoteUser defines a remote user for federated users
	UserTypeRemoteUser // 5
)

Jump to

Keyboard shortcuts

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