2016-11-07 14:53:13 +01:00
// Copyright 2015 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.
package gitea
import (
"bytes"
"encoding/json"
"fmt"
)
2016-11-29 09:09:17 +01:00
// CreateUserOption create user options
2016-11-07 14:53:13 +01:00
type CreateUserOption struct {
2017-08-21 13:13:47 +02:00
SourceID int64 ` json:"source_id" `
LoginName string ` json:"login_name" `
2017-11-12 23:02:25 -08:00
// required: true
2017-08-21 13:13:47 +02:00
Username string ` json:"username" binding:"Required;AlphaDashDot;MaxSize(35)" `
FullName string ` json:"full_name" binding:"MaxSize(100)" `
2017-11-12 23:02:25 -08:00
// required: true
// swagger:strfmt email
2017-08-21 13:13:47 +02:00
Email string ` json:"email" binding:"Required;Email;MaxSize(254)" `
2017-11-12 23:02:25 -08:00
// required: true
Password string ` json:"password" binding:"Required;MaxSize(255)" `
2017-08-21 13:13:47 +02:00
SendNotify bool ` json:"send_notify" `
2016-11-07 14:53:13 +01:00
}
2016-11-29 09:09:17 +01:00
// AdminCreateUser create a user
2016-11-07 14:53:13 +01:00
func ( c * Client ) AdminCreateUser ( opt CreateUserOption ) ( * User , error ) {
body , err := json . Marshal ( & opt )
if err != nil {
return nil , err
}
user := new ( User )
return user , c . getParsedResponse ( "POST" , "/admin/users" , jsonHeader , bytes . NewReader ( body ) , user )
}
2016-11-29 09:09:17 +01:00
// EditUserOption edit user options
2016-11-07 14:53:13 +01:00
type EditUserOption struct {
2017-08-21 13:13:47 +02:00
SourceID int64 ` json:"source_id" `
LoginName string ` json:"login_name" `
FullName string ` json:"full_name" binding:"MaxSize(100)" `
2017-11-12 23:02:25 -08:00
// required: true
// swagger:strfmt email
2017-08-21 13:13:47 +02:00
Email string ` json:"email" binding:"Required;Email;MaxSize(254)" `
Password string ` json:"password" binding:"MaxSize(255)" `
Website string ` json:"website" binding:"MaxSize(50)" `
Location string ` json:"location" binding:"MaxSize(50)" `
Active * bool ` json:"active" `
Admin * bool ` json:"admin" `
AllowGitHook * bool ` json:"allow_git_hook" `
AllowImportLocal * bool ` json:"allow_import_local" `
MaxRepoCreation * int ` json:"max_repo_creation" `
2016-11-07 14:53:13 +01:00
}
2016-11-29 09:09:17 +01:00
// AdminEditUser modify user informations
2016-11-07 14:53:13 +01:00
func ( c * Client ) AdminEditUser ( user string , opt EditUserOption ) error {
body , err := json . Marshal ( & opt )
if err != nil {
return err
}
_ , err = c . getResponse ( "PATCH" , fmt . Sprintf ( "/admin/users/%s" , user ) , jsonHeader , bytes . NewReader ( body ) )
return err
}
2016-11-29 09:09:17 +01:00
// AdminDeleteUser delete one user according name
2016-11-07 14:53:13 +01:00
func ( c * Client ) AdminDeleteUser ( user string ) error {
_ , err := c . getResponse ( "DELETE" , fmt . Sprintf ( "/admin/users/%s" , user ) , nil , nil )
return err
}
2016-11-29 09:09:17 +01:00
// AdminCreateUserPublicKey create one user with options
2016-11-07 14:53:13 +01:00
func ( c * Client ) AdminCreateUserPublicKey ( user string , opt CreateKeyOption ) ( * PublicKey , error ) {
body , err := json . Marshal ( & opt )
if err != nil {
return nil , err
}
key := new ( PublicKey )
return key , c . getParsedResponse ( "POST" , fmt . Sprintf ( "/admin/users/%s/keys" , user ) , jsonHeader , bytes . NewReader ( body ) , key )
}