fix: update user nickname;
feat: add database/kafka.
This commit is contained in:
@ -3,12 +3,9 @@ package handler
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/loveuer/nf"
|
||||
"github.com/loveuer/nf/nft/resp"
|
||||
"github.com/samber/lo"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"ultone/internal/controller"
|
||||
"ultone/internal/database/cache"
|
||||
"ultone/internal/database/db"
|
||||
@ -17,6 +14,12 @@ import (
|
||||
"ultone/internal/opt"
|
||||
"ultone/internal/sqlType"
|
||||
"ultone/internal/tool"
|
||||
|
||||
"github.com/loveuer/nf"
|
||||
"github.com/loveuer/nf/nft/resp"
|
||||
"github.com/samber/lo"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
func AuthLogin(c *nf.Ctx) error {
|
||||
@ -140,6 +143,7 @@ func UserUpdate(c *nf.Ctx) error {
|
||||
type Req struct {
|
||||
OldPassword string `json:"old_password"`
|
||||
NewPassword string `json:"new_password"`
|
||||
Nickname string `json:"nickname"`
|
||||
}
|
||||
|
||||
type Model struct {
|
||||
@ -147,11 +151,13 @@ func UserUpdate(c *nf.Ctx) error {
|
||||
}
|
||||
|
||||
var (
|
||||
ok bool
|
||||
err error
|
||||
req = new(Req)
|
||||
user *model.User
|
||||
m = new(Model)
|
||||
ok bool
|
||||
err error
|
||||
req = new(Req)
|
||||
user *model.User
|
||||
m = new(Model)
|
||||
updates = make(map[string]any)
|
||||
changes = make(map[string]any)
|
||||
)
|
||||
|
||||
if user, ok = c.Locals("user").(*model.User); !ok {
|
||||
@ -162,42 +168,55 @@ func UserUpdate(c *nf.Ctx) error {
|
||||
return resp.Resp400(c, err)
|
||||
}
|
||||
|
||||
if req.OldPassword == "" || req.NewPassword == "" {
|
||||
return resp.Resp400(c, req)
|
||||
if err = c.BodyParser(&changes); err != nil {
|
||||
return resp.Resp400(c, err)
|
||||
}
|
||||
|
||||
if err = tool.CheckPassword(req.NewPassword); err != nil {
|
||||
return resp.Resp400(c, req, err.Error())
|
||||
if _, ok = changes["nickname"]; ok {
|
||||
updates["nickname"] = req.Nickname
|
||||
}
|
||||
|
||||
if err = db.Default.Session(tool.Timeout(3)).
|
||||
Select("password").
|
||||
Model(&model.User{}).
|
||||
Where("username = ?", user.Username).
|
||||
Where("deleted_at = 0").
|
||||
Take(m).
|
||||
Error; err != nil {
|
||||
return resp.Resp500(c, err.Error())
|
||||
if req.OldPassword != "" && req.NewPassword != "" {
|
||||
if err = tool.CheckPassword(req.NewPassword); err != nil {
|
||||
return resp.Resp400(c, req, err.Error())
|
||||
}
|
||||
|
||||
if err = db.Default.Session(tool.Timeout(3)).
|
||||
Select("password").
|
||||
Model(&model.User{}).
|
||||
Where("username = ?", user.Username).
|
||||
Where("deleted_at = 0").
|
||||
Take(m).
|
||||
Error; err != nil {
|
||||
return resp.Resp500(c, err.Error())
|
||||
}
|
||||
|
||||
if !tool.ComparePassword(req.OldPassword, m.Password) {
|
||||
return resp.Resp400(c, nil, "原密码错误")
|
||||
}
|
||||
|
||||
updates["password"] = tool.NewPassword(req.NewPassword)
|
||||
}
|
||||
|
||||
if !tool.ComparePassword(req.OldPassword, m.Password) {
|
||||
return resp.Resp400(c, nil, "原密码错误")
|
||||
if len(updates) == 0 {
|
||||
return resp.Resp400(c, nf.Map{"req": req, "reason": "nothing to update"}, "没有需要更新的内容")
|
||||
}
|
||||
|
||||
if err = db.Default.Session(tool.Timeout(5)).
|
||||
Model(&model.User{}).
|
||||
Where("id = ?", user.Id).
|
||||
Update("password", tool.NewPassword(req.NewPassword)).
|
||||
Updates(updates).
|
||||
Error; err != nil {
|
||||
return resp.Resp500(c, err.Error())
|
||||
}
|
||||
|
||||
_ = controller.UserController.RmUserCache(c.Context(), user.Id)
|
||||
// todo delete token
|
||||
if _, ok = updates["password"]; ok {
|
||||
_ = controller.UserController.RmUserCache(c.Context(), user.Id)
|
||||
c.SetHeader("Set-Cookie", fmt.Sprintf("%s=;Path=/", opt.CookieName))
|
||||
return c.Redirect(opt.LoginURL, http.StatusFound)
|
||||
}
|
||||
|
||||
c.SetHeader("Set-Cookie", fmt.Sprintf("%s=;Path=/", opt.CookieName))
|
||||
|
||||
return resp.Resp200(c, nil, "修改成功, 请重新登录")
|
||||
return resp.Resp200(c, nil, "修改成功")
|
||||
}
|
||||
|
||||
func ManageUserList(c *nf.Ctx) error {
|
||||
@ -553,7 +572,7 @@ func ManageUserDelete(c *nf.Ctx) error {
|
||||
return resp.Resp403(c, nil)
|
||||
}
|
||||
|
||||
if err = controller.UserController.DeleteUser(c.Context(), target.Id); err != nil {
|
||||
if err = controller.UserController.DeleteUser(c.Context(), target); err != nil {
|
||||
return resp.RespError(c, err)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user