reface to openteam
This commit is contained in:
218
internal/controller/user.go
Normal file
218
internal/controller/user.go
Normal file
@@ -0,0 +1,218 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"opencatd-open/internal/dto"
|
||||
"opencatd-open/internal/model"
|
||||
"opencatd-open/internal/utils"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/duke-git/lancet/v2/slice"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func (a Api) Register(c *gin.Context) {
|
||||
req := new(dto.User)
|
||||
err := c.ShouldBind(&req)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = a.userService.Register(c, &model.User{
|
||||
Username: req.Username,
|
||||
Password: req.Password,
|
||||
})
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
} else {
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (a Api) Login(c *gin.Context) {
|
||||
req := new(dto.User)
|
||||
err := c.ShouldBind(&req)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
auth, err := a.userService.Login(c, req)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
} else {
|
||||
dto.Success(c, auth)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (a Api) Profile(c *gin.Context) {
|
||||
user, err := a.userService.Profile(c)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusUnauthorized, err.Error())
|
||||
return
|
||||
} else {
|
||||
dto.Success(c, user)
|
||||
}
|
||||
}
|
||||
|
||||
func (a Api) UpdateProfile(c *gin.Context) {
|
||||
var user = model.User{}
|
||||
err := c.ShouldBind(&user)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
err = a.userService.Update(c, &model.User{Name: user.Name, Username: user.Username, Email: user.Email})
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
func (a Api) UpdatePassword(c *gin.Context) {
|
||||
var passwd dto.ChangePassword
|
||||
err := c.ShouldBind(&passwd)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
_user := c.MustGet("user").(*model.User)
|
||||
if _user.Password == "" {
|
||||
hashpass, err := utils.HashPassword(passwd.NewPassword)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
_user.Password = hashpass
|
||||
} else {
|
||||
if !utils.CheckPassword(_user.Password, passwd.Password) {
|
||||
dto.Fail(c, http.StatusBadRequest, "password not match")
|
||||
return
|
||||
}
|
||||
hashpass, err := utils.HashPassword(passwd.NewPassword)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
_user.Password = hashpass
|
||||
}
|
||||
err = a.userService.Update(c, _user)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
func (a Api) ListUser(c *gin.Context) {
|
||||
limit, _ := strconv.Atoi(c.DefaultQuery("pageSize", "20"))
|
||||
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
||||
offset := (page - 1) * limit
|
||||
active := c.QueryArray("active[]")
|
||||
if !slice.ContainSubSlice([]string{"true", "false", ""}, active) {
|
||||
dto.Fail(c, http.StatusBadRequest, "active must be true or false")
|
||||
return
|
||||
}
|
||||
|
||||
users, total, err := a.userService.List(c, limit, offset, active)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, gin.H{
|
||||
"users": users,
|
||||
"total": total,
|
||||
})
|
||||
}
|
||||
|
||||
func (a Api) CreateUser(c *gin.Context) {
|
||||
var user model.User
|
||||
err := c.ShouldBind(&user)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
fmt.Printf("user:%+v\n", user)
|
||||
err = a.userService.Create(c, &user)
|
||||
if err != nil {
|
||||
dto.Fail(c, http.StatusInternalServerError, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
func (a Api) GetUser(c *gin.Context) {
|
||||
id, _ := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
user, err := a.userService.GetByID(c, id)
|
||||
if err != nil {
|
||||
dto.Fail(c, 500, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, user)
|
||||
}
|
||||
|
||||
func (a Api) EditUser(c *gin.Context) {
|
||||
id, _ := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
var user model.User
|
||||
err := c.ShouldBind(&user)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
user.ID = int64(id)
|
||||
err = a.userService.Update(c, &user)
|
||||
if err != nil {
|
||||
dto.Fail(c, 500, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
func (a Api) DeleteUser(c *gin.Context) {
|
||||
id, _ := strconv.ParseInt(c.Param("id"), 10, 64)
|
||||
err := a.userService.Delete(c, id)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, nil)
|
||||
}
|
||||
|
||||
func (a Api) UserOption(c *gin.Context) {
|
||||
option := strings.ToLower(c.Param("option"))
|
||||
var batchid dto.BatchIDRequest
|
||||
err := c.ShouldBind(&batchid)
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
switch option {
|
||||
case "enable":
|
||||
err = a.userService.BatchEnable(c, batchid.IDs)
|
||||
case "disable":
|
||||
err = a.userService.BatchDisable(c, batchid.IDs)
|
||||
case "delete":
|
||||
err = a.userService.BatchDelete(c, batchid.IDs)
|
||||
default:
|
||||
dto.Fail(c, 400, "invalid option, only support enable, disable, delete")
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
dto.Fail(c, 400, err.Error())
|
||||
return
|
||||
}
|
||||
dto.Success(c, nil)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user