2016-11-07 16:53:13 +03:00
// Copyright 2014 The Gogs Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2016-11-07 16:53:13 +03:00
2019-05-11 13:21:34 +03:00
package structs
2016-11-07 16:53:13 +03:00
import (
2019-06-16 06:28:32 +03:00
"time"
2021-03-02 00:08:10 +03:00
2021-07-24 19:03:58 +03:00
"code.gitea.io/gitea/modules/json"
2016-11-07 16:53:13 +03:00
)
2017-11-13 10:02:25 +03:00
// User represents a user
// swagger:model
2016-11-07 16:53:13 +03:00
type User struct {
2017-11-13 10:02:25 +03:00
// the user's id
2018-03-06 04:22:16 +03:00
ID int64 ` json:"id" `
2017-11-13 10:02:25 +03:00
// the user's username
2018-03-06 04:22:16 +03:00
UserName string ` json:"login" `
2022-07-15 11:52:11 +03:00
// the user's authentication sign-in name.
// default: empty
LoginName string ` json:"login_name" `
2024-04-16 09:08:48 +03:00
// The ID of the user's Authentication Source
SourceID int64 ` json:"source_id" `
2017-11-13 10:02:25 +03:00
// the user's full name
2018-03-06 04:22:16 +03:00
FullName string ` json:"full_name" `
2017-11-13 10:02:25 +03:00
// swagger:strfmt email
2018-03-06 04:22:16 +03:00
Email string ` json:"email" `
2017-11-13 10:02:25 +03:00
// URL to the user's avatar
2016-11-29 11:09:17 +03:00
AvatarURL string ` json:"avatar_url" `
2024-05-26 07:08:13 +03:00
// URL to the user's gitea page
HTMLURL string ` json:"html_url" `
2018-05-05 03:28:30 +03:00
// User locale
Language string ` json:"language" `
2019-03-04 01:57:24 +03:00
// Is the user an administrator
IsAdmin bool ` json:"is_admin" `
2019-06-16 06:28:32 +03:00
// swagger:strfmt date-time
LastLogin time . Time ` json:"last_login,omitempty" `
// swagger:strfmt date-time
Created time . Time ` json:"created,omitempty" `
2021-02-18 11:25:35 +03:00
// Is user restricted
Restricted bool ` json:"restricted" `
2021-05-11 03:22:29 +03:00
// Is user active
IsActive bool ` json:"active" `
// Is user login prohibited
ProhibitLogin bool ` json:"prohibit_login" `
2021-05-01 12:05:55 +03:00
// the user's location
Location string ` json:"location" `
2024-02-29 13:10:18 +03:00
// the user's pronouns
Pronouns string ` json:"pronouns" `
2021-05-01 12:05:55 +03:00
// the user's website
Website string ` json:"website" `
2021-05-02 22:03:15 +03:00
// the user's description
Description string ` json:"description" `
2021-06-26 22:53:14 +03:00
// User visibility level option: public, limited, private
Visibility string ` json:"visibility" `
2021-06-17 10:17:35 +03:00
// user counts
Followers int ` json:"followers_count" `
Following int ` json:"following_count" `
StarredRepos int ` json:"starred_repos_count" `
2016-11-07 16:53:13 +03:00
}
2016-12-16 18:26:35 +03:00
// MarshalJSON implements the json.Marshaler interface for User, adding field(s) for backward compatibility
func ( u User ) MarshalJSON ( ) ( [ ] byte , error ) {
// Re-declaring User to avoid recursion
type shadow User
return json . Marshal ( struct {
shadow
CompatUserName string ` json:"username" `
} { shadow ( u ) , u . UserName } )
}
2021-06-23 22:58:44 +03:00
// UserSettings represents user settings
// swagger:model
type UserSettings struct {
2024-03-01 15:22:40 +03:00
FullName string ` json:"full_name" `
Website string ` json:"website" `
Description string ` json:"description" `
Location string ` json:"location" `
2024-02-29 13:10:18 +03:00
Pronouns string ` json:"pronouns" `
2024-03-01 15:22:40 +03:00
Language string ` json:"language" `
Theme string ` json:"theme" `
DiffViewStyle string ` json:"diff_view_style" `
EnableRepoUnitHints bool ` json:"enable_repo_unit_hints" `
2021-06-23 22:58:44 +03:00
// Privacy
HideEmail bool ` json:"hide_email" `
HideActivity bool ` json:"hide_activity" `
}
// UserSettingsOptions represents options to change user settings
// swagger:model
type UserSettingsOptions struct {
2024-03-01 15:22:40 +03:00
FullName * string ` json:"full_name" binding:"MaxSize(100)" `
Website * string ` json:"website" binding:"OmitEmpty;ValidUrl;MaxSize(255)" `
Description * string ` json:"description" binding:"MaxSize(255)" `
Location * string ` json:"location" binding:"MaxSize(50)" `
2023-09-26 05:39:12 +03:00
Pronouns * string ` json:"pronouns" binding:"MaxSize(50)" `
2024-03-01 15:22:40 +03:00
Language * string ` json:"language" `
Theme * string ` json:"theme" `
DiffViewStyle * string ` json:"diff_view_style" `
EnableRepoUnitHints * bool ` json:"enable_repo_unit_hints" `
2021-06-23 22:58:44 +03:00
// Privacy
HideEmail * bool ` json:"hide_email" `
HideActivity * bool ` json:"hide_activity" `
}
2023-03-14 10:45:21 +03:00
// RenameUserOption options when renaming a user
type RenameUserOption struct {
// New username for this user. This name cannot be in use yet by any other user.
//
// required: true
// unique: true
NewName string ` json:"new_username" binding:"Required" `
}
2023-06-30 02:22:55 +03:00
// UpdateUserAvatarUserOption options when updating the user avatar
type UpdateUserAvatarOption struct {
// image must be base64 encoded
Image string ` json:"image" binding:"Required" `
}