簡化傳參
This commit is contained in:
@@ -2,9 +2,7 @@ package routers
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"main/configs"
|
||||
"main/models"
|
||||
"main/utils"
|
||||
@@ -32,42 +30,26 @@ func UsersGet(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
// 創建用戶
|
||||
func UsersPost(w http.ResponseWriter, r *http.Request) {
|
||||
var form struct {
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
body, err := ioutil.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
var form map[string]interface{} = utils.BodyRead(r)
|
||||
if form["name"] == nil || form["email"] == nil || form["password"] == nil {
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("400 - name, email, password cannot be empty"))
|
||||
return
|
||||
}
|
||||
defer r.Body.Close()
|
||||
if err = json.Unmarshal(body, &form); err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
|
||||
if form.Name == "" || form.Email == "" || form.Password == "" {
|
||||
fmt.Println("name, email, password cannot be empty")
|
||||
return
|
||||
}
|
||||
|
||||
// 創建用戶
|
||||
var slat string = uuid.New().String()
|
||||
var user models.User = models.User{
|
||||
Name: form.Name,
|
||||
Email: form.Email,
|
||||
Password: fmt.Sprintf("%x", md5.Sum([]byte(form.Password+slat))),
|
||||
Name: form["name"].(string),
|
||||
Email: form["email"].(string),
|
||||
Password: fmt.Sprintf("%x", md5.Sum([]byte(form["password"].(string)+slat))),
|
||||
Slat: slat,
|
||||
}
|
||||
|
||||
// 寫入數據庫
|
||||
if err := configs.ORMDB().Create(&user).Error; err != nil {
|
||||
fmt.Println(err)
|
||||
w.WriteHeader(http.StatusBadRequest)
|
||||
w.Write([]byte("400 - " + err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// 返回信息
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
w.Write(utils.ToJSON(user))
|
||||
@@ -76,39 +58,32 @@ func UsersPost(w http.ResponseWriter, r *http.Request) {
|
||||
// 獲取用戶
|
||||
func UsersItemGet(w http.ResponseWriter, r *http.Request) {
|
||||
user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
|
||||
configs.ORMDB().First(&user)
|
||||
if err := configs.ORMDB().First(&user).Error; err != nil {
|
||||
w.WriteHeader(http.StatusNotFound)
|
||||
w.Write([]byte("404 - " + err.Error()))
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
w.Write(utils.ToJSON(user))
|
||||
}
|
||||
|
||||
// 更新用戶
|
||||
func UsersItemPatch(w http.ResponseWriter, r *http.Request) {
|
||||
var form struct {
|
||||
Name string `json:"name"`
|
||||
Email string `json:"email"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
body, err := ioutil.ReadAll(r.Body)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
defer r.Body.Close()
|
||||
if err = json.Unmarshal(body, &form); err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
}
|
||||
form := utils.BodyRead(r)
|
||||
user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
|
||||
configs.ORMDB().First(&user)
|
||||
if form.Name != "" {
|
||||
user.Name = form.Name
|
||||
if name, ok := form["name"]; ok {
|
||||
user.Name = name.(string)
|
||||
}
|
||||
if form.Email != "" {
|
||||
user.Email = form.Email
|
||||
if email, ok := form["email"]; ok {
|
||||
user.Email = email.(string)
|
||||
}
|
||||
if form.Password != "" {
|
||||
if password, ok := form["password"]; ok {
|
||||
user.Slat = uuid.New().String()
|
||||
user.Password = fmt.Sprintf("%x", md5.Sum([]byte(form.Password+user.Slat)))
|
||||
user.Password = fmt.Sprintf("%x", md5.Sum([]byte(password.(string)+user.Slat)))
|
||||
}
|
||||
if admin, ok := form["admin"]; ok {
|
||||
user.Admin = admin.(bool)
|
||||
}
|
||||
configs.ORMDB().Save(&user)
|
||||
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
||||
|
Reference in New Issue
Block a user