修改用户密码接口

This commit is contained in:
xmdhs 2023-10-13 12:59:12 +08:00
parent 63657fd00d
commit c06bf9e715
No known key found for this signature in database
GPG Key ID: E809D6D43DEFCC95

View File

@ -10,6 +10,7 @@ import (
"github.com/xmdhs/authlib-skin/db/ent/predicate" "github.com/xmdhs/authlib-skin/db/ent/predicate"
"github.com/xmdhs/authlib-skin/db/ent/user" "github.com/xmdhs/authlib-skin/db/ent/user"
"github.com/xmdhs/authlib-skin/db/ent/userprofile" "github.com/xmdhs/authlib-skin/db/ent/userprofile"
"github.com/xmdhs/authlib-skin/db/ent/usertoken"
"github.com/xmdhs/authlib-skin/model" "github.com/xmdhs/authlib-skin/model"
"github.com/xmdhs/authlib-skin/model/yggdrasil" "github.com/xmdhs/authlib-skin/model/yggdrasil"
utilsService "github.com/xmdhs/authlib-skin/service/utils" utilsService "github.com/xmdhs/authlib-skin/service/utils"
@ -81,6 +82,8 @@ func (w *WebService) EditUser(ctx context.Context, u model.EditUser, uid int) er
uuid := "" uuid := ""
changePasswd := false changePasswd := false
err := utils.WithTx(ctx, w.client, func(tx *ent.Tx) error { err := utils.WithTx(ctx, w.client, func(tx *ent.Tx) error {
upUser := tx.User.UpdateOneID(uid)
if u.Email != "" { if u.Email != "" {
c, err := tx.User.Query().Where(user.Email(u.Email)).Count(ctx) c, err := tx.User.Query().Where(user.Email(u.Email)).Count(ctx)
if err != nil { if err != nil {
@ -89,10 +92,7 @@ func (w *WebService) EditUser(ctx context.Context, u model.EditUser, uid int) er
if c != 0 { if c != 0 {
return ErrExistUser return ErrExistUser
} }
err = tx.User.UpdateOneID(uid).SetEmail(u.Email).Exec(ctx) upUser = upUser.SetEmail(u.Email)
if err != nil {
return err
}
} }
if u.Name != "" { if u.Name != "" {
@ -117,7 +117,7 @@ func (w *WebService) EditUser(ctx context.Context, u model.EditUser, uid int) er
uuid = userProfile.UUID uuid = userProfile.UUID
tl := []string{"skin", "cape"} tl := []string{"skin", "cape"}
for _, v := range tl { for _, v := range tl {
err := utilsService.DelTexture(ctx, userProfile.ID, v, w.client, w.config.TexturePath) err := utilsService.DelTexture(ctx, userProfile.ID, v, tx.Client(), w.config.TexturePath)
if err != nil { if err != nil {
return err return err
} }
@ -134,14 +134,32 @@ func (w *WebService) EditUser(ctx context.Context, u model.EditUser, uid int) er
state = utilsService.SetAdmin(state, *u.IsAdmin) state = utilsService.SetAdmin(state, *u.IsAdmin)
} }
if u.IsDisable != nil { if u.IsDisable != nil {
if *u.IsDisable {
changePasswd = true
}
state = utilsService.SetDisable(state, *u.IsDisable) state = utilsService.SetDisable(state, *u.IsDisable)
} }
if state != aUser.State { if state != aUser.State {
err := tx.User.UpdateOneID(uid).SetState(state).Exec(ctx) upUser = upUser.SetState(state)
}
if u.Password != "" {
pass, salt := utils.Argon2ID(u.Password)
upUser = upUser.SetPassword(pass).SetSalt(salt)
changePasswd = true
}
err = upUser.Exec(ctx)
if err != nil {
return err
}
if changePasswd {
err = tx.UserToken.Update().Where(usertoken.HasUserWith(user.ID(uid))).AddTokenID(1).Exec(ctx)
if err != nil { if err != nil {
return err return err
} }
} }
return nil return nil
}) })
if err != nil { if err != nil {