2016-11-07 16:53:13 +03: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 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
jsoniter "github.com/json-iterator/go"
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" `
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" `
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-01 12:05:55 +03:00
// the user's location
Location string ` json:"location" `
// the user's website
Website string ` json:"website" `
// the user's biography
Description string ` json:"bio" `
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
2021-03-02 00:08:10 +03:00
json := jsoniter . ConfigCompatibleWithStandardLibrary
2016-12-16 18:26:35 +03:00
return json . Marshal ( struct {
shadow
CompatUserName string ` json:"username" `
} { shadow ( u ) , u . UserName } )
}