2016-11-07 14:53:13 +01:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
2019-05-11 18:21:34 +08:00
package structs
2016-11-07 14:53:13 +01:00
import (
2019-06-16 04:28:32 +01:00
"time"
2021-03-01 21:08:10 +00:00
2021-07-25 00:03:58 +08:00
"code.gitea.io/gitea/modules/json"
2016-11-07 14:53:13 +01:00
)
2017-11-12 23:02:25 -08:00
// User represents a user
// swagger:model
2016-11-07 14:53:13 +01:00
type User struct {
2017-11-12 23:02:25 -08:00
// the user's id
2018-03-06 02:22:16 +01:00
ID int64 ` json:"id" `
2017-11-12 23:02:25 -08:00
// the user's username
2018-03-06 02:22:16 +01:00
UserName string ` json:"login" `
2017-11-12 23:02:25 -08:00
// the user's full name
2018-03-06 02:22:16 +01:00
FullName string ` json:"full_name" `
2017-11-12 23:02:25 -08:00
// swagger:strfmt email
2018-03-06 02:22:16 +01:00
Email string ` json:"email" `
2017-11-12 23:02:25 -08:00
// URL to the user's avatar
2016-11-29 09:09:17 +01:00
AvatarURL string ` json:"avatar_url" `
2018-05-05 02:28:30 +02:00
// User locale
Language string ` json:"language" `
2019-03-03 23:57:24 +01:00
// Is the user an administrator
IsAdmin bool ` json:"is_admin" `
2019-06-16 04:28:32 +01: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 09:25:35 +01:00
// Is user restricted
Restricted bool ` json:"restricted" `
2021-05-11 02:22:29 +02:00
// Is user active
IsActive bool ` json:"active" `
// Is user login prohibited
ProhibitLogin bool ` json:"prohibit_login" `
2021-05-01 11:05:55 +02:00
// the user's location
Location string ` json:"location" `
// the user's website
Website string ` json:"website" `
2021-05-02 21:03:15 +02: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 09:17:35 +02:00
// user counts
Followers int ` json:"followers_count" `
Following int ` json:"following_count" `
StarredRepos int ` json:"starred_repos_count" `
2016-11-07 14:53:13 +01:00
}
2016-12-16 16:26:35 +01: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 21:58:44 +02:00
// UserSettings represents user settings
// swagger:model
type UserSettings struct {
FullName string ` json:"full_name" `
Website string ` json:"website" `
Description string ` json:"description" `
Location string ` json:"location" `
Language string ` json:"language" `
Theme string ` json:"theme" `
DiffViewStyle string ` json:"diff_view_style" `
// Privacy
HideEmail bool ` json:"hide_email" `
HideActivity bool ` json:"hide_activity" `
}
// UserSettingsOptions represents options to change user settings
// swagger:model
type UserSettingsOptions struct {
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)" `
Language * string ` json:"language" `
Theme * string ` json:"theme" `
DiffViewStyle * string ` json:"diff_view_style" `
// Privacy
HideEmail * bool ` json:"hide_email" `
HideActivity * bool ` json:"hide_activity" `
}