fix: update user nickname;

feat: add database/kafka.
This commit is contained in:
loveuer
2024-12-04 15:49:37 +08:00
parent 3ec150b015
commit e5ae2efcef
15 changed files with 585 additions and 64 deletions

View File

@ -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)
}