Browse Source
[API] Add Restricted Field to User (#14630 )
* Expose Restricted field for User
* Add Option to Change Restricted on User via adminEditUser API
* Add test who change restricted & test if it changed it ...
* make generate-swagger
Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
mj-v1.14.3
6543
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with
36 additions and
6 deletions
integrations/api_admin_test.go
modules/convert/user.go
modules/structs/admin_user.go
modules/structs/user.go
routers/api/v1/admin/user.go
templates/swagger/v1_json.tmpl
@ -192,4 +192,18 @@ func TestAPIEditUser(t *testing.T) {
errMap := make ( map [ string ] interface { } )
json . Unmarshal ( resp . Body . Bytes ( ) , & errMap )
assert . EqualValues ( t , "email is not allowed to be empty string" , errMap [ "message" ] . ( string ) )
user2 := models . AssertExistsAndLoadBean ( t , & models . User { LoginName : "user2" } ) . ( * models . User )
assert . Equal ( t , false , user2 . IsRestricted )
bTrue := true
req = NewRequestWithJSON ( t , "PATCH" , urlStr , api . EditUserOption {
// required
LoginName : "user2" ,
SourceID : 0 ,
// to change
Restricted : & bTrue ,
} )
session . MakeRequest ( t , req , http . StatusOK )
user2 = models . AssertExistsAndLoadBean ( t , & models . User { LoginName : "user2" } ) . ( * models . User )
assert . Equal ( t , true , user2 . IsRestricted )
}
@ -17,12 +17,13 @@ func ToUser(user *models.User, signed, authed bool) *api.User {
return nil
}
result := & api . User {
ID : user . ID ,
UserName : user . Name ,
FullName : markup . Sanitize ( user . FullName ) ,
Email : user . GetEmail ( ) ,
AvatarURL : user . AvatarLink ( ) ,
Created : user . CreatedUnix . AsTime ( ) ,
ID : user . ID ,
UserName : user . Name ,
FullName : markup . Sanitize ( user . FullName ) ,
Email : user . GetEmail ( ) ,
AvatarURL : user . AvatarLink ( ) ,
Created : user . CreatedUnix . AsTime ( ) ,
Restricted : user . IsRestricted ,
}
// hide primary email if API caller is anonymous or user keep email private
if signed && ( ! user . KeepEmailPrivate || authed ) {
@ -41,4 +41,5 @@ type EditUserOption struct {
MaxRepoCreation * int ` json:"max_repo_creation" `
ProhibitLogin * bool ` json:"prohibit_login" `
AllowCreateOrganization * bool ` json:"allow_create_organization" `
Restricted * bool ` json:"restricted" `
}
@ -30,6 +30,8 @@ type User struct {
LastLogin time . Time ` json:"last_login,omitempty" `
// swagger:strfmt date-time
Created time . Time ` json:"created,omitempty" `
// Is user restricted
Restricted bool ` json:"restricted" `
}
// MarshalJSON implements the json.Marshaler interface for User, adding field(s) for backward compatibility
@ -224,6 +224,9 @@ func EditUser(ctx *context.APIContext) {
if form . ProhibitLogin != nil {
u . ProhibitLogin = * form . ProhibitLogin
}
if form . Restricted != nil {
u . IsRestricted = * form . Restricted
}
if err := models . UpdateUser ( u ) ; err != nil {
if models . IsErrEmailAlreadyUsed ( err ) || models . IsErrEmailInvalid ( err ) {
@ -13796,6 +13796,10 @@
"type": "boolean",
"x-go-name": "ProhibitLogin"
},
"restricted": {
"type": "boolean",
"x-go-name": "Restricted"
},
"source_id": {
"type": "integer",
"format": "int64",
@ -16209,6 +16213,11 @@
"description": "the user's username",
"type": "string",
"x-go-name": "UserName"
},
"restricted": {
"description": "Is user restricted",
"type": "boolean",
"x-go-name": "Restricted"
}
},
"x-go-package": "code.gitea.io/gitea/modules/structs"