You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficcontrol.apache.org by GitBox <gi...@apache.org> on 2018/09/20 00:33:23 UTC
[GitHub] moltzaum commented on a change in pull request #2834: TO Golang:
Rewrite /api/*/users endpoints
moltzaum commented on a change in pull request #2834: TO Golang: Rewrite /api/*/users endpoints
URL: https://github.com/apache/trafficcontrol/pull/2834#discussion_r219004623
##########
File path: lib/go-tc/users.go
##########
@@ -19,114 +19,111 @@ package tc
* under the License.
*/
-import (
- "time"
-)
-
-// UsersResponse ...
-type UsersResponse struct {
- Response []User `json:"response"`
+// UserCredentials contains Traffic Ops login credentials
+type UserCredentials struct {
+ Username string `json:"u"`
+ Password string `json:"p"`
}
-// User contains information about a given user in Traffic Ops.
-type User struct {
- Username string `json:"username,omitempty"`
- PublicSSHKey string `json:"publicSshKey,omitempty"`
- Role int `json:"role,omitempty"`
- RoleName string `json:"rolename,omitempty"`
- ID int `json:"id,omitempty"`
- UID int `json:"uid,omitempty"`
- GID int `json:"gid,omitempty"`
- Company string `json:"company,omitempty"`
- Email string `json:"email,omitempty"`
- FullName string `json:"fullName,omitempty"`
- NewUser bool `json:"newUser,omitempty"`
- LastUpdated string `json:"lastUpdated,omitempty"`
+// UserV13 contains non-nullable TO user information
+type UserV13 struct {
+ Username string `json:"username"`
+ PublicSSHKey string `json:"publicSshKey"`
+ Role int `json:"role"`
+ RoleName string `json:"rolename"`
+ ID int `json:"id"`
+ UID int `json:"uid"`
+ GID int `json:"gid"`
+ Company string `json:"company"`
+ Email string `json:"email"`
+ FullName string `json:"fullName"`
+ NewUser bool `json:"newUser"`
+ LastUpdated string `json:"lastUpdated"`
AddressLine1 string `json:"addressLine1"`
AddressLine2 string `json:"addressLine2"`
City string `json:"city"`
Country string `json:"country"`
PhoneNumber string `json:"phoneNumber"`
PostalCode string `json:"postalCode"`
- RegistrationSent time.Time `json:"registrationSent"`
+ RegistrationSent TimeNoMod `json:"registrationSent"`
StateOrProvince string `json:"stateOrProvince"`
Tenant string `json:"tenant"`
TenantID int `json:"tenantId"`
}
-// Credentials contains Traffic Ops login credentials
-type UserCredentials struct {
- Username string `json:"u"`
- Password string `json:"p"`
+// commonUserFields is unexported, but its contents are still visible when it is embedded
+// LastUpdated is a new field for some structs
+type commonUserFields struct {
+ AddressLine1 *string `json:"addressLine1" db:"address_line1"`
+ AddressLine2 *string `json:"addressLine2" db:"address_line2"`
+ City *string `json:"city" db:"city"`
+ Company *string `json:"company" db:"company"`
+ Country *string `json:"country" db:"country"`
+ Email *string `json:"email" db:"email"`
+ FullName *string `json:"fullName" db:"full_name"`
+ GID *int `json:"gid"`
+ ID *int `json:"id" db:"id"`
+ NewUser *bool `json:"newUser" db:"new_user"`
+ PhoneNumber *string `json:"phoneNumber" db:"phone_number"`
+ PostalCode *string `json:"postalCode" db:"postal_code"`
+ PublicSSHKey *string `json:"publicSshKey" db:"public_ssh_key"`
+ Role *int `json:"role" db:"role"`
+ RoleName *string `json:"rolename"`
+ StateOrProvince *string `json:"stateOrProvince" db:"state_or_province"`
+ Tenant *string `json:"tenant"`
+ TenantID *int `json:"tenantId" db:"tenant_id"`
+ UID *int `json:"uid"`
+ //Username *string `json:"username" db:"username"` //not including major change due to naming incompatibility
+ LastUpdated *TimeNoMod `json:"lastUpdated" db:"last_updated"` //including minor change to add field
}
-// TODO reconcile APIUser and User
+// User fields in v14 have been updated to be nullable. omitempty is used to protect password data
+type User struct {
Review comment:
After I use the data from the POST, I set the fields to nil. On a GET, that data is never accessed from the database, so it will just be nil. Using two different structs would be awkward because a CRUDer is defined on a single struct usually.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services