Change username of other users
This commit is contained in:
@@ -77,6 +77,15 @@ func UserByUsername(username string) (*User, error) {
|
|||||||
return user, nil
|
return user, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ChangeUsername(userId int, newUsername string) error {
|
||||||
|
user, err := UserById(userId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
user.Username = newUsername
|
||||||
|
return db.Save(user).Error
|
||||||
|
}
|
||||||
|
|
||||||
// UserById get a user
|
// UserById get a user
|
||||||
func UserById(userId int) (*User, error) {
|
func UserById(userId int) (*User, error) {
|
||||||
var user *User
|
var user *User
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type UpdateUsername struct {
|
||||||
|
Id int `json:"id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
}
|
||||||
|
|
||||||
func AddUser(w http.ResponseWriter, r *http.Request) {
|
func AddUser(w http.ResponseWriter, r *http.Request) {
|
||||||
body, err := io.ReadAll(r.Body)
|
body, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -176,3 +181,40 @@ func ChangeUserPassword(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
ok(payload, w, r)
|
ok(payload, w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ChangeUsername(w http.ResponseWriter, r *http.Request) {
|
||||||
|
body, err := io.ReadAll(r.Body)
|
||||||
|
if err != nil {
|
||||||
|
internalServerError(w, r)
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newUserInfo := new(UpdateUsername)
|
||||||
|
err = json.Unmarshal(body, newUserInfo)
|
||||||
|
if err != nil {
|
||||||
|
internalServerError(w, r)
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(newUserInfo.Username) < 3 {
|
||||||
|
badRequest("username need at least 3 characters", w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, err = database.UserByUsername(newUserInfo.Username)
|
||||||
|
if err == nil {
|
||||||
|
badRequest("username already exist", w, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = database.ChangeUsername(newUserInfo.Id, newUserInfo.Username)
|
||||||
|
if err != nil {
|
||||||
|
internalServerError(w, r)
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
payload := &successMessage{
|
||||||
|
Message: "Username changed",
|
||||||
|
Timestamp: time.Now(),
|
||||||
|
Status: 200,
|
||||||
|
}
|
||||||
|
ok(payload, w, r)
|
||||||
|
}
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ func Serve() {
|
|||||||
r.Route("/admin", func(adminRouter chi.Router) {
|
r.Route("/admin", func(adminRouter chi.Router) {
|
||||||
adminRouter.Use(adminMiddleware)
|
adminRouter.Use(adminMiddleware)
|
||||||
adminRouter.Post("/user", AddUser)
|
adminRouter.Post("/user", AddUser)
|
||||||
|
adminRouter.Post("/user/username", ChangeUsername)
|
||||||
adminRouter.Post("/user/passwd/{id}", ChangeUserPassword)
|
adminRouter.Post("/user/passwd/{id}", ChangeUserPassword)
|
||||||
adminRouter.Delete("/user/{id}", RemoveUser)
|
adminRouter.Delete("/user/{id}", RemoveUser)
|
||||||
adminRouter.Get("/user/{id}", User)
|
adminRouter.Get("/user/{id}", User)
|
||||||
|
|||||||
Reference in New Issue
Block a user